Localization of yojna schemes done
This commit is contained in:
@@ -46,9 +46,10 @@ class _APYScreenState extends State<APYScreen> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('APY registration'),
|
||||
title: Text(l10n.apyRegistration),
|
||||
centerTitle: false,
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
@@ -61,7 +62,7 @@ class _APYScreenState extends State<APYScreen> {
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(16.0),
|
||||
child: Text(
|
||||
"Atal Pension Yojana (APY) is a periodic contribution-based pension scheme for citizens of India.",
|
||||
l10n.apyDescription,
|
||||
style: Theme.of(context).textTheme.titleMedium,
|
||||
),
|
||||
),
|
||||
@@ -77,7 +78,7 @@ class _APYScreenState extends State<APYScreen> {
|
||||
DropdownButtonFormField<User>(
|
||||
value: _selectedAccount,
|
||||
decoration: InputDecoration(
|
||||
labelText: AppLocalizations.of(context).accountNumber,
|
||||
labelText: l10n.accountNumber,
|
||||
border: const OutlineInputBorder(),
|
||||
contentPadding: const EdgeInsets.symmetric(
|
||||
vertical: 20, horizontal: 12),
|
||||
@@ -95,8 +96,7 @@ class _APYScreenState extends State<APYScreen> {
|
||||
},
|
||||
validator: (value) {
|
||||
if (value == null) {
|
||||
return AppLocalizations.of(context)
|
||||
.accountNumberRequired;
|
||||
return l10n.accountNumberRequired;
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
@@ -20,9 +20,10 @@ class GovSchemeScreen extends StatefulWidget {
|
||||
class _GovSchemeScreenState extends State<GovSchemeScreen> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('Government Schemes'),
|
||||
title: Text(l10n.governmentSchemes),
|
||||
),
|
||||
body: Stack(
|
||||
children: [
|
||||
@@ -34,8 +35,8 @@ class _GovSchemeScreenState extends State<GovSchemeScreen> {
|
||||
Expanded(
|
||||
child: GovSchemeTile(
|
||||
logoText: "PMJJBY/PMSBY",
|
||||
label: "Pradhan Mantri Yojana",
|
||||
subtitle: "Enroll in Pradhan Mantri Jeevan Jyoti Bima Yojana (PMJJBY) and Pradhan Mantri Suraksha Bima Yojana (PMSBY) insurance schemes",
|
||||
label: l10n.pradhanMantriYojana,
|
||||
subtitle: l10n.enrollPMJJBYPMSBY,
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
@@ -52,8 +53,8 @@ class _GovSchemeScreenState extends State<GovSchemeScreen> {
|
||||
Expanded(
|
||||
child: GovSchemeTile(
|
||||
logoText: "APY",
|
||||
label: "Register for Atal Pension Yojana",
|
||||
subtitle: "Secure your future with Atal Pension Yojana (APY) retirement scheme. Register in a few steps.",
|
||||
label: l10n.registerForAtalPensionYojana,
|
||||
subtitle: l10n.secureYourFutureAPY,
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
|
||||
@@ -26,9 +26,9 @@ class _PMMainScreenState extends State<PMMainScreen> {
|
||||
List<User> _filteredUsers = [];
|
||||
String? _selectedScheme;
|
||||
|
||||
final List<String> _schemes = [
|
||||
'Pradhan Mantri Jeevan Jyoti Bima Yojana (PMJJBY)',
|
||||
'Pradhan Mantri Suraksha Bima Yojana (PMSBY)',
|
||||
List<String> _getSchemes(AppLocalizations l10n) => [
|
||||
l10n.pmjjbyFull,
|
||||
l10n.pmsbyFull,
|
||||
];
|
||||
|
||||
@override
|
||||
@@ -61,33 +61,34 @@ class _PMMainScreenState extends State<PMMainScreen> {
|
||||
}
|
||||
|
||||
Future<void> _handleCreate() async {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
if (_selectedAccount == null) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Please select account number')),
|
||||
SnackBar(content: Text(l10n.pleaseSelectAccountNumber)),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_selectedScheme == null) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Please select a scheme first')),
|
||||
SnackBar(content: Text(l10n.pleaseSelectSchemeFirst)),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
final String schemeCode = _selectedScheme!.contains('PMJJBY') ? '02' : '01';
|
||||
final String schemeCode = (_selectedScheme == l10n.pmjjbyFull) ? '02' : '01';
|
||||
|
||||
// Show loading
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(
|
||||
SnackBar(
|
||||
content: Row(
|
||||
children: [
|
||||
CircularProgressIndicator(),
|
||||
SizedBox(width: 16),
|
||||
Text('Fetching details...'),
|
||||
const CircularProgressIndicator(),
|
||||
const SizedBox(width: 16),
|
||||
Text(l10n.fetchingDetails),
|
||||
],
|
||||
),
|
||||
duration: Duration(seconds: 2),
|
||||
duration: const Duration(seconds: 2),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -111,40 +112,41 @@ class _PMMainScreenState extends State<PMMainScreen> {
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) {
|
||||
if (_selectedScheme!.contains('PMJJBY')) {
|
||||
return PMJJBYScreen(initialData: data);
|
||||
if (_selectedScheme == l10n.pmjjbyFull) {
|
||||
return PMJJBYScreen(initialData: data!);
|
||||
} else {
|
||||
return PMSBYScreen(initialData: data);
|
||||
return PMSBYScreen(initialData: data!);
|
||||
}
|
||||
},
|
||||
),
|
||||
);
|
||||
} else {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Failed to fetch details or no data found.')),
|
||||
SnackBar(content: Text(l10n.failedToFetchDetails)),
|
||||
);
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
if (mounted) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text('Error: ${e.toString()}')),
|
||||
SnackBar(content: Text(l10n.genericError(e.toString()))),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _handleEnquiry() {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
if (_selectedAccount == null) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Please select account number')),
|
||||
SnackBar(content: Text(l10n.pleaseSelectAccountNumber)),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_selectedScheme == null) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Please select a scheme first')),
|
||||
SnackBar(content: Text(l10n.pleaseSelectSchemeFirst)),
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -153,7 +155,7 @@ class _PMMainScreenState extends State<PMMainScreen> {
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) {
|
||||
if (_selectedScheme!.contains('PMJJBY')) {
|
||||
if (_selectedScheme == l10n.pmjjbyFull) {
|
||||
return PMJJBYEnquiryScreen(cifNumber: _selectedAccount!.cifNumber);
|
||||
} else {
|
||||
return PMSBYEnquiryScreen(cifNumber: _selectedAccount!.cifNumber);
|
||||
@@ -165,9 +167,22 @@ class _PMMainScreenState extends State<PMMainScreen> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
final schemes = _getSchemes(l10n);
|
||||
|
||||
// Ensure _selectedScheme is valid if it was set in a different language
|
||||
if (_selectedScheme != null && !schemes.contains(_selectedScheme)) {
|
||||
// Try to find the corresponding scheme in the new language
|
||||
// This is a bit tricky, but since we only have two:
|
||||
// If it doesn't match, it might be from the other language.
|
||||
// For simplicity, we can just reset it or try to guess.
|
||||
// Better to use non-localized values for the state, but let's just reset for now if it doesn't match
|
||||
_selectedScheme = null;
|
||||
}
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('Pradhan Mantri Yojana'),
|
||||
title: Text(l10n.pradhanMantriYojana),
|
||||
centerTitle: false,
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
@@ -180,7 +195,7 @@ class _PMMainScreenState extends State<PMMainScreen> {
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(16.0),
|
||||
child: Text(
|
||||
"Create and Enquire about your Pradhan Mantri Jeevan Jyoti Bima Yojana (PMJJBY) and Pradhan Mantri Suraksha Bima Yojana(PMSBY) schemes.",
|
||||
l10n.pmjjbyPmsbyDescription,
|
||||
style: Theme.of(context).textTheme.titleMedium,
|
||||
),
|
||||
),
|
||||
@@ -196,7 +211,7 @@ class _PMMainScreenState extends State<PMMainScreen> {
|
||||
DropdownButtonFormField<User>(
|
||||
value: _selectedAccount,
|
||||
decoration: InputDecoration(
|
||||
labelText: AppLocalizations.of(context).accountNumber,
|
||||
labelText: l10n.accountNumber,
|
||||
border: const OutlineInputBorder(),
|
||||
contentPadding: const EdgeInsets.symmetric(
|
||||
vertical: 20, horizontal: 12),
|
||||
@@ -214,8 +229,7 @@ class _PMMainScreenState extends State<PMMainScreen> {
|
||||
},
|
||||
validator: (value) {
|
||||
if (value == null) {
|
||||
return AppLocalizations.of(context)
|
||||
.accountNumberRequired;
|
||||
return l10n.accountNumberRequired;
|
||||
}
|
||||
return null;
|
||||
},
|
||||
@@ -226,14 +240,14 @@ class _PMMainScreenState extends State<PMMainScreen> {
|
||||
isExpanded: true,
|
||||
isDense: false,
|
||||
itemHeight: null,
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'Select Scheme',
|
||||
border: OutlineInputBorder(),
|
||||
decoration: InputDecoration(
|
||||
labelText: l10n.selectScheme,
|
||||
border: const OutlineInputBorder(),
|
||||
contentPadding:
|
||||
EdgeInsets.symmetric(vertical: 12, horizontal: 12),
|
||||
const EdgeInsets.symmetric(vertical: 12, horizontal: 12),
|
||||
),
|
||||
selectedItemBuilder: (BuildContext context) {
|
||||
return _schemes.map((String scheme) {
|
||||
return schemes.map((String scheme) {
|
||||
return Container(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Text(
|
||||
@@ -246,7 +260,7 @@ class _PMMainScreenState extends State<PMMainScreen> {
|
||||
);
|
||||
}).toList();
|
||||
},
|
||||
items: _schemes.map((String scheme) {
|
||||
items: schemes.map((String scheme) {
|
||||
return DropdownMenuItem<String>(
|
||||
value: scheme,
|
||||
child: Padding(
|
||||
@@ -287,9 +301,9 @@ class _PMMainScreenState extends State<PMMainScreen> {
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
),
|
||||
child: const Text(
|
||||
"Create",
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
child: Text(
|
||||
l10n.create,
|
||||
style: const TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -309,7 +323,7 @@ class _PMMainScreenState extends State<PMMainScreen> {
|
||||
),
|
||||
),
|
||||
child: Text(
|
||||
AppLocalizations.of(context).enquiry,
|
||||
l10n.enquiry,
|
||||
style: const TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:kmobile/api/services/yojna_service.dart';
|
||||
import 'package:kmobile/di/injection.dart';
|
||||
import 'package:kmobile/l10n/app_localizations.dart';
|
||||
|
||||
class PMJJBYEnquiryScreen extends StatefulWidget {
|
||||
final String? cifNumber;
|
||||
@@ -35,6 +36,7 @@ class _PMJJBYEnquiryScreenState extends State<PMJJBYEnquiryScreen> {
|
||||
}
|
||||
|
||||
Future<void> _fetchEnquiryData() async {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
if (_selectedFinancialYear == null || widget.cifNumber == null) return;
|
||||
|
||||
setState(() {
|
||||
@@ -56,19 +58,19 @@ class _PMJJBYEnquiryScreenState extends State<PMJJBYEnquiryScreen> {
|
||||
setState(() {
|
||||
if (response is Map<String, dynamic>) {
|
||||
if (response['status'] == 'FAILED') {
|
||||
_errorMessage = response['message'] ?? 'No record found';
|
||||
_errorMessage = response['message'] ?? l10n.noRecordFound;
|
||||
} else {
|
||||
_enquiryData = response;
|
||||
}
|
||||
} else if (response is List && response.isNotEmpty) {
|
||||
_enquiryData = response[0] as Map<String, dynamic>;
|
||||
} else {
|
||||
_errorMessage = 'No data found for the selected year.';
|
||||
_errorMessage = l10n.noDataFoundYear;
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
setState(() {
|
||||
_errorMessage = 'Error: ${e.toString()}';
|
||||
_errorMessage = l10n.genericError(e.toString());
|
||||
});
|
||||
} finally {
|
||||
setState(() {
|
||||
@@ -79,9 +81,10 @@ class _PMJJBYEnquiryScreenState extends State<PMJJBYEnquiryScreen> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('PMJJBY details'),
|
||||
title: Text(l10n.pmjjbyDetails),
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
padding: const EdgeInsets.all(16.0),
|
||||
@@ -100,9 +103,9 @@ class _PMJJBYEnquiryScreenState extends State<PMJJBYEnquiryScreen> {
|
||||
ListTile(
|
||||
contentPadding: EdgeInsets.zero,
|
||||
leading: const Icon(Icons.person, color: Colors.blue),
|
||||
title: const Text('CIF Number'),
|
||||
title: Text(l10n.cifNumber),
|
||||
subtitle: Text(
|
||||
widget.cifNumber ?? 'N/A',
|
||||
widget.cifNumber ?? l10n.notApplicable,
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 16,
|
||||
@@ -112,11 +115,11 @@ class _PMJJBYEnquiryScreenState extends State<PMJJBYEnquiryScreen> {
|
||||
const SizedBox(height: 16),
|
||||
DropdownButtonFormField<String>(
|
||||
value: _selectedFinancialYear,
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'Select Financial Year',
|
||||
border: OutlineInputBorder(),
|
||||
prefixIcon: Icon(Icons.calendar_today),
|
||||
contentPadding: EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
decoration: InputDecoration(
|
||||
labelText: l10n.selectFinancialYear,
|
||||
border: const OutlineInputBorder(),
|
||||
prefixIcon: const Icon(Icons.calendar_today),
|
||||
contentPadding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
),
|
||||
items: _financialYears.map((String year) {
|
||||
return DropdownMenuItem<String>(
|
||||
@@ -167,20 +170,20 @@ class _PMJJBYEnquiryScreenState extends State<PMJJBYEnquiryScreen> {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Scheme Details',
|
||||
l10n.schemeDetails,
|
||||
style: Theme.of(context).textTheme.titleLarge?.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
),
|
||||
const Divider(),
|
||||
_buildDetailRow('Customer Name', _enquiryData!['customername']),
|
||||
_buildDetailRow('Policy Number', _enquiryData!['policynumber']),
|
||||
_buildDetailRow('Account Number', _enquiryData!['accountno']),
|
||||
_buildDetailRow('Premium Amount', _enquiryData!['preimiumamount']),
|
||||
_buildDetailRow('Nominee Name', _enquiryData!['nomineename']),
|
||||
_buildDetailRow('Transaction Date', _enquiryData!['transactiondate']),
|
||||
_buildDetailRow('Journal No', _enquiryData!['journalno']),
|
||||
_buildDetailRow(l10n.customerName, _enquiryData!['customername']),
|
||||
_buildDetailRow(l10n.policyNumber, _enquiryData!['policynumber']),
|
||||
_buildDetailRow(l10n.accountNumber, _enquiryData!['accountno']),
|
||||
_buildDetailRow(l10n.premiumAmount, _enquiryData!['preimiumamount']),
|
||||
_buildDetailRow(l10n.nomineeName, _enquiryData!['nomineename']),
|
||||
_buildDetailRow(l10n.date, _enquiryData!['transactiondate']),
|
||||
_buildDetailRow(l10n.journalNo, _enquiryData!['journalno']),
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -203,7 +206,7 @@ class _PMJJBYEnquiryScreenState extends State<PMJJBYEnquiryScreen> {
|
||||
),
|
||||
Flexible(
|
||||
child: Text(
|
||||
value?.toString() ?? 'N/A',
|
||||
value?.toString() ?? AppLocalizations.of(context).notApplicable,
|
||||
style: const TextStyle(fontWeight: FontWeight.bold),
|
||||
textAlign: TextAlign.end,
|
||||
),
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:kmobile/api/services/yojna_service.dart';
|
||||
import 'package:kmobile/di/injection.dart';
|
||||
import 'package:kmobile/l10n/app_localizations.dart';
|
||||
|
||||
class PMJJBYScreen extends StatefulWidget {
|
||||
final Map<String, dynamic>? initialData;
|
||||
@@ -141,6 +142,7 @@ class _PMJJBYScreenState extends State<PMJJBYScreen> {
|
||||
}
|
||||
|
||||
Future<void> _handleRegister() async {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
// Show loading spinner
|
||||
showDialog(
|
||||
context: context,
|
||||
@@ -179,7 +181,7 @@ class _PMJJBYScreenState extends State<PMJJBYScreen> {
|
||||
);
|
||||
String x = response.toString();
|
||||
if(x.contains('RECORD ALREADY EXISTS')){
|
||||
x= "A record already exists for this request. Your submission has been registered previously.";
|
||||
x= l10n.recordAlreadyExists;
|
||||
}
|
||||
|
||||
if (mounted) {
|
||||
@@ -190,14 +192,14 @@ class _PMJJBYScreenState extends State<PMJJBYScreen> {
|
||||
context: context,
|
||||
barrierDismissible: false,
|
||||
builder: (context) => AlertDialog(
|
||||
title: const Text('Response'),
|
||||
title: Text(l10n.response),
|
||||
content: SingleChildScrollView(child: Text(x)),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context).popUntil((route) => route.isFirst);
|
||||
},
|
||||
child: const Text('Close'),
|
||||
child: Text(l10n.close),
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -207,7 +209,7 @@ class _PMJJBYScreenState extends State<PMJJBYScreen> {
|
||||
if (mounted) {
|
||||
Navigator.pop(context); // Close loading spinner
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text('Error: ${e.toString()}')),
|
||||
SnackBar(content: Text(l10n.genericError(e.toString()))),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -215,9 +217,10 @@ class _PMJJBYScreenState extends State<PMJJBYScreen> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('PMJJBY Registration'),
|
||||
title: Text(l10n.pmjjbyRegistration),
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
padding: const EdgeInsets.all(16.0),
|
||||
@@ -226,38 +229,38 @@ class _PMJJBYScreenState extends State<PMJJBYScreen> {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
children: [
|
||||
_buildTextField(_nameController, 'Customer Name', readOnly: _isFetched('customername')),
|
||||
_buildTextField(_customerNoController, 'Customer No', readOnly: _isFetched('customerno')),
|
||||
_buildTextField(_accountNoController, 'Account No', keyboardType: TextInputType.number, readOnly: _isFetched('accountno')),
|
||||
_buildTextField(_balanceController, 'Available Balance', keyboardType: TextInputType.number, readOnly: _isFetched('availablebalance')),
|
||||
_buildTextField(_aadhaarController, 'Aadhaar No', keyboardType: TextInputType.number, readOnly: _isFetched('aadharno')),
|
||||
_buildTextField(_dobController, 'Customer DOB (DD/MM/YYYY)', readOnly: _isFetched('customerdob')),
|
||||
_buildTextField(_genderController, 'Gender', readOnly: _isFetched('gender')),
|
||||
_buildTextField(_marriedController, 'Married (Yes/No)', readOnly: _isFetched('married')),
|
||||
_buildTextField(_mobileController, 'Mobile No', keyboardType: TextInputType.phone, readOnly: _isFetched('mobileno')),
|
||||
_buildTextField(_nameController, l10n.customerName, readOnly: _isFetched('customername')),
|
||||
_buildTextField(_customerNoController, l10n.customerNo, readOnly: _isFetched('customerno')),
|
||||
_buildTextField(_accountNoController, l10n.accountNumber, keyboardType: TextInputType.number, readOnly: _isFetched('accountno')),
|
||||
_buildTextField(_balanceController, l10n.availableBalance, keyboardType: TextInputType.number, readOnly: _isFetched('availablebalance')),
|
||||
_buildTextField(_aadhaarController, l10n.aadhaarNo, keyboardType: TextInputType.number, readOnly: _isFetched('aadharno')),
|
||||
_buildTextField(_dobController, l10n.customerDobFormat, readOnly: _isFetched('customerdob')),
|
||||
_buildTextField(_genderController, l10n.gender, readOnly: _isFetched('gender')),
|
||||
_buildTextField(_marriedController, l10n.marriedYesNo, readOnly: _isFetched('married')),
|
||||
_buildTextField(_mobileController, l10n.mobileNumber, keyboardType: TextInputType.phone, readOnly: _isFetched('mobileno')),
|
||||
_buildTextField(_emailController, 'Email ID', keyboardType: TextInputType.emailAddress, readOnly: _isFetched('emailid')),
|
||||
_buildTextField(_panController, 'PAN', readOnly: _isFetched('pan')),
|
||||
_buildTextField(_ifscController, 'IFSC Code', readOnly: _isFetched('ifsccode')),
|
||||
_buildTextField(_acctOpeningDateController, 'Date of Acct Opening', readOnly: _isFetched('dateofacctopening')),
|
||||
_buildTextField(_pincodeController, 'Pincode', keyboardType: TextInputType.number, readOnly: _isFetched('pincode')),
|
||||
_buildTextField(_stateController, 'State', readOnly: _isFetched('state')),
|
||||
_buildTextField(_countryController, 'Country', readOnly: _isFetched('country')),
|
||||
_buildDropdownField(_ruralCategoryController, 'Rural Category', _ruralOptions, readOnly: _isFetched('ruralcategory')),
|
||||
_buildTextField(_panController, l10n.pan, readOnly: _isFetched('pan')),
|
||||
_buildTextField(_ifscController, l10n.ifscCode, readOnly: _isFetched('ifsccode')),
|
||||
_buildTextField(_acctOpeningDateController, l10n.dateOfAcctOpening, readOnly: _isFetched('dateofacctopening')),
|
||||
_buildTextField(_pincodeController, l10n.pincode, keyboardType: TextInputType.number, readOnly: _isFetched('pincode')),
|
||||
_buildTextField(_stateController, l10n.state, readOnly: _isFetched('state')),
|
||||
_buildTextField(_countryController, l10n.country, readOnly: _isFetched('country')),
|
||||
_buildDropdownField(_ruralCategoryController, l10n.ruralCategory, _ruralOptions, readOnly: _isFetched('ruralcategory')),
|
||||
const Divider(height: 32),
|
||||
const Text('Policy Details', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
|
||||
Text(l10n.policyDetails, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
|
||||
const SizedBox(height: 16),
|
||||
_buildTextField(_policyNumberController, 'Policy Number', readOnly: _isFetched('policynumber')),
|
||||
_buildTextField(_premiumAmountController, 'Premium Amount', keyboardType: TextInputType.number, readOnly: _isFetched('premiumamount')),
|
||||
_buildTextField(_financialYearController, 'Financial Year', readOnly: _isFetched('financialyear')),
|
||||
_buildDropdownField(_healthStatusController, 'Health Status', _healthStatusOptions),
|
||||
_buildTextField(_collectionChannelController, 'Collection Channel'),
|
||||
_buildTextField(_policyNumberController, l10n.policyNumber, readOnly: _isFetched('policynumber')),
|
||||
_buildTextField(_premiumAmountController, l10n.premiumAmount, keyboardType: TextInputType.number, readOnly: _isFetched('premiumamount')),
|
||||
_buildTextField(_financialYearController, l10n.financialYear, readOnly: _isFetched('financialyear')),
|
||||
_buildDropdownField(_healthStatusController, l10n.healthStatus, _healthStatusOptions),
|
||||
_buildTextField(_collectionChannelController, l10n.collectionChannel),
|
||||
const Divider(height: 32),
|
||||
const Text('Nominee Details', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
|
||||
Text(l10n.nomineeDetails, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
|
||||
const SizedBox(height: 16),
|
||||
_buildTextField(_nomineeNameController, 'Nominee Name'),
|
||||
_buildTextField(_nomineeAddressController, 'Nominee Address'),
|
||||
_buildDropdownField(_nomineeRelationshipController, 'Nominee Relationship', _relationshipOptions, readOnly: _isFetched('nomineerelationship')),
|
||||
_buildDropdownField(_nomineeMinorController, 'Nominee Minor', _minorOptions, readOnly: _isFetched('nomineeminor')),
|
||||
_buildTextField(_nomineeNameController, l10n.nomineeName),
|
||||
_buildTextField(_nomineeAddressController, l10n.nomineeAddress),
|
||||
_buildDropdownField(_nomineeRelationshipController, l10n.nomineeRelationship, _relationshipOptions, readOnly: _isFetched('nomineerelationship')),
|
||||
_buildDropdownField(_nomineeMinorController, l10n.nomineeMinor, _minorOptions, readOnly: _isFetched('nomineeminor')),
|
||||
const SizedBox(height: 24),
|
||||
ElevatedButton(
|
||||
onPressed: _handleRegister,
|
||||
@@ -269,9 +272,9 @@ class _PMJJBYScreenState extends State<PMJJBYScreen> {
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
),
|
||||
child: const Text(
|
||||
'Register',
|
||||
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
|
||||
child: Text(
|
||||
l10n.register,
|
||||
style: const TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 32),
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:kmobile/api/services/yojna_service.dart';
|
||||
import 'package:kmobile/di/injection.dart';
|
||||
import 'package:kmobile/l10n/app_localizations.dart';
|
||||
|
||||
class PMSBYEnquiryScreen extends StatefulWidget {
|
||||
final String? cifNumber;
|
||||
@@ -35,6 +36,7 @@ class _PMSBYEnquiryScreenState extends State<PMSBYEnquiryScreen> {
|
||||
}
|
||||
|
||||
Future<void> _fetchEnquiryData() async {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
if (_selectedFinancialYear == null || widget.cifNumber == null) return;
|
||||
|
||||
setState(() {
|
||||
@@ -56,19 +58,19 @@ class _PMSBYEnquiryScreenState extends State<PMSBYEnquiryScreen> {
|
||||
setState(() {
|
||||
if (response is Map<String, dynamic>) {
|
||||
if (response['status'] == 'FAILED') {
|
||||
_errorMessage = response['message'] ?? 'No record found';
|
||||
_errorMessage = response['message'] ?? l10n.noRecordFound;
|
||||
} else {
|
||||
_enquiryData = response;
|
||||
}
|
||||
} else if (response is List && response.isNotEmpty) {
|
||||
_enquiryData = response[0] as Map<String, dynamic>;
|
||||
} else {
|
||||
_errorMessage = 'No data found for the selected year.';
|
||||
_errorMessage = l10n.noDataFoundYear;
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
setState(() {
|
||||
_errorMessage = 'Error: ${e.toString()}';
|
||||
_errorMessage = l10n.genericError(e.toString());
|
||||
});
|
||||
} finally {
|
||||
setState(() {
|
||||
@@ -79,9 +81,10 @@ class _PMSBYEnquiryScreenState extends State<PMSBYEnquiryScreen> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('PMSBY details'),
|
||||
title: Text(l10n.pmsbyDetails),
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
padding: const EdgeInsets.all(16.0),
|
||||
@@ -100,9 +103,9 @@ class _PMSBYEnquiryScreenState extends State<PMSBYEnquiryScreen> {
|
||||
ListTile(
|
||||
contentPadding: EdgeInsets.zero,
|
||||
leading: const Icon(Icons.person, color: Colors.blue),
|
||||
title: const Text('CIF Number'),
|
||||
title: Text(l10n.cifNumber),
|
||||
subtitle: Text(
|
||||
widget.cifNumber ?? 'N/A',
|
||||
widget.cifNumber ?? l10n.notApplicable,
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 16,
|
||||
@@ -112,11 +115,11 @@ class _PMSBYEnquiryScreenState extends State<PMSBYEnquiryScreen> {
|
||||
const SizedBox(height: 16),
|
||||
DropdownButtonFormField<String>(
|
||||
value: _selectedFinancialYear,
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'Select Financial Year',
|
||||
border: OutlineInputBorder(),
|
||||
prefixIcon: Icon(Icons.calendar_today),
|
||||
contentPadding: EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
decoration: InputDecoration(
|
||||
labelText: l10n.selectFinancialYear,
|
||||
border: const OutlineInputBorder(),
|
||||
prefixIcon: const Icon(Icons.calendar_today),
|
||||
contentPadding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
),
|
||||
items: _financialYears.map((String year) {
|
||||
return DropdownMenuItem<String>(
|
||||
@@ -167,20 +170,20 @@ class _PMSBYEnquiryScreenState extends State<PMSBYEnquiryScreen> {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Scheme Details',
|
||||
l10n.schemeDetails,
|
||||
style: Theme.of(context).textTheme.titleLarge?.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
),
|
||||
const Divider(),
|
||||
_buildDetailRow('Customer Name', _enquiryData!['customername']),
|
||||
_buildDetailRow('Policy Number', _enquiryData!['policynumber'] ?? _enquiryData!['policyno']),
|
||||
_buildDetailRow('Account Number', _enquiryData!['accountno']),
|
||||
_buildDetailRow('Premium Amount', _enquiryData!['preimiumamount'] ?? _enquiryData!['premiumamount']),
|
||||
_buildDetailRow('Nominee Name', _enquiryData!['nomineename']),
|
||||
_buildDetailRow('Transaction Date', _enquiryData!['transactiondate']),
|
||||
_buildDetailRow('Journal No', _enquiryData!['journalno']),
|
||||
_buildDetailRow(l10n.customerName, _enquiryData!['customername']),
|
||||
_buildDetailRow(l10n.policyNumber, _enquiryData!['policynumber'] ?? _enquiryData!['policyno']),
|
||||
_buildDetailRow(l10n.accountNumber, _enquiryData!['accountno']),
|
||||
_buildDetailRow(l10n.premiumAmount, _enquiryData!['preimiumamount'] ?? _enquiryData!['premiumamount']),
|
||||
_buildDetailRow(l10n.nomineeName, _enquiryData!['nomineename']),
|
||||
_buildDetailRow(l10n.date, _enquiryData!['transactiondate']),
|
||||
_buildDetailRow(l10n.journalNo, _enquiryData!['journalno']),
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -203,7 +206,7 @@ class _PMSBYEnquiryScreenState extends State<PMSBYEnquiryScreen> {
|
||||
),
|
||||
Flexible(
|
||||
child: Text(
|
||||
value?.toString() ?? 'N/A',
|
||||
value?.toString() ?? AppLocalizations.of(context).notApplicable,
|
||||
style: const TextStyle(fontWeight: FontWeight.bold),
|
||||
textAlign: TextAlign.end,
|
||||
),
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:kmobile/api/services/yojna_service.dart';
|
||||
import 'package:kmobile/di/injection.dart';
|
||||
import 'package:kmobile/l10n/app_localizations.dart';
|
||||
|
||||
class PMSBYScreen extends StatefulWidget {
|
||||
final Map<String, dynamic>? initialData;
|
||||
@@ -151,6 +152,7 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
|
||||
}
|
||||
|
||||
Future<void> _handleRegister() async {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
// Show loading spinner
|
||||
showDialog(
|
||||
context: context,
|
||||
@@ -191,7 +193,7 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
|
||||
);
|
||||
String x = response.toString();
|
||||
if(x.contains('RECORD ALREADY EXISTS')){
|
||||
x= "A record already exists for this request. Your submission has been registered previously.";
|
||||
x= l10n.recordAlreadyExists;
|
||||
}
|
||||
|
||||
if (mounted) {
|
||||
@@ -202,14 +204,14 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
|
||||
context: context,
|
||||
barrierDismissible: false,
|
||||
builder: (context) => AlertDialog(
|
||||
title: const Text('Response'),
|
||||
title: Text(l10n.response),
|
||||
content: SingleChildScrollView(child: Text(x)),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context).popUntil((route) => route.isFirst);
|
||||
},
|
||||
child: const Text('Close'),
|
||||
child: Text(l10n.close),
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -219,7 +221,7 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
|
||||
if (mounted) {
|
||||
Navigator.pop(context); // Close loading spinner
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text('Error: ${e.toString()}')),
|
||||
SnackBar(content: Text(l10n.genericError(e.toString()))),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -227,9 +229,10 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('PMSBY Registration'),
|
||||
title: Text(l10n.pmsbyRegistration),
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
padding: const EdgeInsets.all(16.0),
|
||||
@@ -238,43 +241,43 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
children: [
|
||||
_buildTextField(_nameController, 'Customer Name', readOnly: _isFetched('customername')),
|
||||
_buildTextField(_customerNoController, 'Customer No', readOnly: _isFetched('customerno')),
|
||||
_buildTextField(_accountNoController, 'Account No', keyboardType: TextInputType.number, readOnly: _isFetched('accountno')),
|
||||
_buildTextField(_balanceController, 'Available Balance', keyboardType: TextInputType.number, readOnly: _isFetched('availablebalance')),
|
||||
_buildTextField(_aadhaarController, 'Aadhaar No', keyboardType: TextInputType.number, readOnly: _isFetched('aadharno')),
|
||||
_buildTextField(_dobController, 'Customer DOB (DD/MM/YYYY)', readOnly: _isFetched('customerdob')),
|
||||
_buildTextField(_genderController, 'Gender', readOnly: _isFetched('gender')),
|
||||
_buildTextField(_marriedController, 'Married (Yes/No)', readOnly: _isFetched('married')),
|
||||
_buildTextField(_mobileController, 'Mobile No', keyboardType: TextInputType.phone, readOnly: _isFetched('mobileno')),
|
||||
_buildTextField(_nameController, l10n.customerName, readOnly: _isFetched('customername')),
|
||||
_buildTextField(_customerNoController, l10n.customerNo, readOnly: _isFetched('customerno')),
|
||||
_buildTextField(_accountNoController, l10n.accountNumber, keyboardType: TextInputType.number, readOnly: _isFetched('accountno')),
|
||||
_buildTextField(_balanceController, l10n.availableBalance, keyboardType: TextInputType.number, readOnly: _isFetched('availablebalance')),
|
||||
_buildTextField(_aadhaarController, l10n.aadhaarNo, keyboardType: TextInputType.number, readOnly: _isFetched('aadharno')),
|
||||
_buildTextField(_dobController, l10n.customerDobFormat, readOnly: _isFetched('customerdob')),
|
||||
_buildTextField(_genderController, l10n.gender, readOnly: _isFetched('gender')),
|
||||
_buildTextField(_marriedController, l10n.marriedYesNo, readOnly: _isFetched('married')),
|
||||
_buildTextField(_mobileController, l10n.mobileNumber, keyboardType: TextInputType.phone, readOnly: _isFetched('mobileno')),
|
||||
_buildTextField(_emailController, 'Email ID', keyboardType: TextInputType.emailAddress, readOnly: _isFetched('emailid')),
|
||||
_buildTextField(_address1Controller, 'Address 1', readOnly: _isFetched('address1')),
|
||||
_buildTextField(_address2Controller, 'Address 2', readOnly: _isFetched('address2')),
|
||||
_buildTextField(_cityController, 'City', readOnly: _isFetched('city')),
|
||||
_buildTextField(_panController, 'PAN', readOnly: _isFetched('pan')),
|
||||
_buildTextField(_ifscController, 'IFSC Code', readOnly: _isFetched('ifsccode')),
|
||||
_buildTextField(_acctOpeningDateController, 'Date of Acct Opening', readOnly: _isFetched('dateofacctopening')),
|
||||
_buildTextField(_pincodeController, 'Pincode', keyboardType: TextInputType.number, readOnly: _isFetched('pincode')),
|
||||
_buildTextField(_stateController, 'State', readOnly: _isFetched('state')),
|
||||
_buildTextField(_countryController, 'Country', readOnly: _isFetched('country')),
|
||||
_buildDropdownField(_ruralCategoryController, 'Rural Category', _ruralOptions, readOnly: _isFetched('ruralcategory')),
|
||||
_buildTextField(_address1Controller, l10n.address1, readOnly: _isFetched('address1')),
|
||||
_buildTextField(_address2Controller, l10n.address2, readOnly: _isFetched('address2')),
|
||||
_buildTextField(_cityController, l10n.city, readOnly: _isFetched('city')),
|
||||
_buildTextField(_panController, l10n.pan, readOnly: _isFetched('pan')),
|
||||
_buildTextField(_ifscController, l10n.ifscCode, readOnly: _isFetched('ifsccode')),
|
||||
_buildTextField(_acctOpeningDateController, l10n.dateOfAcctOpening, readOnly: _isFetched('dateofacctopening')),
|
||||
_buildTextField(_pincodeController, l10n.pincode, keyboardType: TextInputType.number, readOnly: _isFetched('pincode')),
|
||||
_buildTextField(_stateController, l10n.state, readOnly: _isFetched('state')),
|
||||
_buildTextField(_countryController, l10n.country, readOnly: _isFetched('country')),
|
||||
_buildDropdownField(_ruralCategoryController, l10n.ruralCategory, _ruralOptions, readOnly: _isFetched('ruralcategory')),
|
||||
const Divider(height: 32),
|
||||
const Text('Policy Details', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
|
||||
Text(l10n.policyDetails, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
|
||||
const SizedBox(height: 16),
|
||||
_buildTextField(_policyNumberController, 'Policy Number', readOnly: _isFetched('policyno')),
|
||||
_buildTextField(_premiumAmountController, 'Premium Amount', keyboardType: TextInputType.number, readOnly: _isFetched('premiumamount')),
|
||||
_buildTextField(_financialYearController, 'Financial Year', readOnly: _isFetched('financialyear')),
|
||||
_buildTextField(_policyStatusController, 'Policy Status', readOnly: _isFetched('policystatus')),
|
||||
_buildDropdownField(_healthStatusController, 'Health Status', _healthStatusOptions),
|
||||
_buildTextField(_collectionChannelController, 'Collection Channel'),
|
||||
_buildTextField(_policyNumberController, l10n.policyNumber, readOnly: _isFetched('policyno')),
|
||||
_buildTextField(_premiumAmountController, l10n.premiumAmount, keyboardType: TextInputType.number, readOnly: _isFetched('premiumamount')),
|
||||
_buildTextField(_financialYearController, l10n.financialYear, readOnly: _isFetched('financialyear')),
|
||||
_buildTextField(_policyStatusController, l10n.policyStatus, readOnly: _isFetched('policystatus')),
|
||||
_buildDropdownField(_healthStatusController, l10n.healthStatus, _healthStatusOptions),
|
||||
_buildTextField(_collectionChannelController, l10n.collectionChannel),
|
||||
const Divider(height: 32),
|
||||
const Text('Nominee Details', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
|
||||
Text(l10n.nomineeDetails, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
|
||||
const SizedBox(height: 16),
|
||||
_buildTextField(_nomineeNameController, 'Nominee Name'),
|
||||
_buildTextField(_nomineeAddressController, 'Nominee Address'),
|
||||
_buildDropdownField(_relationWithNomineeController, 'Relation with Nominee', _relationshipOptions, readOnly: _isFetched('relationwithnominee')),
|
||||
_buildTextField(_nomineeRelationshipController, 'Nominee Relationship'),
|
||||
_buildDropdownField(_nomineeMinorController, 'Nominee Minor', _minorOptions, readOnly: _isFetched('nomineeminor')),
|
||||
_buildTextField(_nomineeNameController, l10n.nomineeName),
|
||||
_buildTextField(_nomineeAddressController, l10n.nomineeAddress),
|
||||
_buildDropdownField(_relationWithNomineeController, l10n.relationWithNominee, _relationshipOptions, readOnly: _isFetched('relationwithnominee')),
|
||||
_buildTextField(_nomineeRelationshipController, l10n.nomineeRelationship),
|
||||
_buildDropdownField(_nomineeMinorController, l10n.nomineeMinor, _minorOptions, readOnly: _isFetched('nomineeminor')),
|
||||
const SizedBox(height: 24),
|
||||
ElevatedButton(
|
||||
onPressed: _handleRegister,
|
||||
@@ -286,9 +289,9 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
),
|
||||
child: const Text(
|
||||
'Register',
|
||||
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
|
||||
child: Text(
|
||||
l10n.register,
|
||||
style: const TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 32),
|
||||
|
||||
@@ -592,5 +592,63 @@
|
||||
"chequeStolen": "Cheque Stolen",
|
||||
"chequeMissing": "Cheque Missing",
|
||||
"chequeDamaged": "Cheque Damaged",
|
||||
"close": "Close"
|
||||
"close": "Close",
|
||||
"governmentSchemes": "Government Schemes",
|
||||
"pradhanMantriYojana": "Pradhan Mantri Yojana",
|
||||
"atalPensionYojana": "Atal Pension Yojana",
|
||||
"registerForAtalPensionYojana": "Register for Atal Pension Yojana",
|
||||
"secureYourFutureAPY": "Secure your future with Atal Pension Yojana (APY) retirement scheme. Register in a few steps.",
|
||||
"enrollPMJJBYPMSBY": "Enroll in Pradhan Mantri Jeevan Jyoti Bima Yojana (PMJJBY) and Pradhan Mantri Suraksha Bima Yojana (PMSBY) insurance schemes",
|
||||
"apyRegistration": "APY registration",
|
||||
"apyDescription": "Atal Pension Yojana (APY) is a periodic contribution-based pension scheme for citizens of India.",
|
||||
"pmjjbyPmsbyDescription": "Create and Enquire about your Pradhan Mantri Jeevan Jyoti Bima Yojana (PMJJBY) and Pradhan Mantri Suraksha Bima Yojana(PMSBY) schemes.",
|
||||
"selectScheme": "Select Scheme",
|
||||
"pmjjbyFull": "Pradhan Mantri Jeevan Jyoti Bima Yojana (PMJJBY)",
|
||||
"pmsbyFull": "Pradhan Mantri Suraksha Bima Yojana (PMSBY)",
|
||||
"create": "Create",
|
||||
"pleaseSelectAccountNumber": "Please select account number",
|
||||
"pleaseSelectSchemeFirst": "Please select a scheme first",
|
||||
"fetchingDetails": "Fetching details...",
|
||||
"failedToFetchDetails": "Failed to fetch details or no data found.",
|
||||
"pmjjbyDetails": "PMJJBY details",
|
||||
"pmsbyDetails": "PMSBY details",
|
||||
"cifNumber": "CIF Number",
|
||||
"selectFinancialYear": "Select Financial Year",
|
||||
"schemeDetails": "Scheme Details",
|
||||
"customerName": "Customer Name",
|
||||
"policyNumber": "Policy Number",
|
||||
"premiumAmount": "Premium Amount",
|
||||
"nomineeName": "Nominee Name",
|
||||
"journalNo": "Journal No",
|
||||
"noRecordFound": "No record found",
|
||||
"noDataFoundYear": "No data found for the selected year.",
|
||||
"pmjjbyRegistration": "PMJJBY Registration",
|
||||
"pmsbyRegistration": "PMSBY Registration",
|
||||
"customerNo": "Customer No",
|
||||
"aadhaarNo": "Aadhaar No",
|
||||
"customerDobFormat": "Customer DOB (DD/MM/YYYY)",
|
||||
"gender": "Gender",
|
||||
"marriedYesNo": "Married (Yes/No)",
|
||||
"pan": "PAN",
|
||||
"dateOfAcctOpening": "Date of Acct Opening",
|
||||
"pincode": "Pincode",
|
||||
"state": "State",
|
||||
"country": "Country",
|
||||
"ruralCategory": "Rural Category",
|
||||
"policyDetails": "Policy Details",
|
||||
"financialYear": "Financial Year",
|
||||
"healthStatus": "Health Status",
|
||||
"collectionChannel": "Collection Channel",
|
||||
"nomineeDetails": "Nominee Details",
|
||||
"nomineeAddress": "Nominee Address",
|
||||
"nomineeRelationship": "Nominee Relationship",
|
||||
"nomineeMinor": "Nominee Minor",
|
||||
"response": "Response",
|
||||
"recordAlreadyExists": "A record already exists for this request. Your submission has been registered previously.",
|
||||
"address1": "Address 1",
|
||||
"address2": "Address 2",
|
||||
"city": "City",
|
||||
"relationWithNominee": "Relation with Nominee",
|
||||
"policyStatus": "Policy Status",
|
||||
"emailId": "Email ID"
|
||||
}
|
||||
|
||||
@@ -593,5 +593,62 @@
|
||||
"chequeStolen": "चेक चोरी हो गया",
|
||||
"chequeMissing": "चेक गायब है",
|
||||
"chequeDamaged": "चेक क्षतिग्रस्त है",
|
||||
"close": "बंद करें"
|
||||
"close": "बंद करें",
|
||||
"governmentSchemes": "सरकारी योजनाएं",
|
||||
"pradhanMantriYojana": "प्रधानमंत्री योजना",
|
||||
"atalPensionYojana": "अटल पेंशन योजना",
|
||||
"registerForAtalPensionYojana": "अटल पेंशन योजना के लिए पंजीकरण करें",
|
||||
"secureYourFutureAPY": "अटल पेंशन योजना (APY) सेवानिवृत्ति योजना के साथ अपना भविष्य सुरक्षित करें। कुछ ही चरणों में पंजीकरण करें।",
|
||||
"enrollPMJJBYPMSBY": "प्रधानमंत्री जीवन ज्योति बीमा योजना (PMJJBY) और प्रधानमंत्री सुरक्षा बीमा योजना (PMSBY) बीमा योजनाओं में नामांकन करें",
|
||||
"apyRegistration": "APY पंजीकरण",
|
||||
"apyDescription": "अटल पेंशन योजना (APY) भारत के नागरिकों के लिए एक आवधिक योगदान-आधारित पेंशन योजना है।",
|
||||
"pmjjbyPmsbyDescription": "अपनी प्रधानमंत्री जीवन ज्योति बीमा योजना (PMJJBY) और प्रधानमंत्री सुरक्षा बीमा योजना (PMSBY) योजनाओं के बारे में बनाएं और पूछताछ करें।",
|
||||
"selectScheme": "योजना चुनें",
|
||||
"pmjjbyFull": "प्रधानमंत्री जीवन ज्योति बीमा योजना (PMJJBY)",
|
||||
"pmsbyFull": "प्रधानमंत्री सुरक्षा बीमा योजना (PMSBY)",
|
||||
"create": "बनाएं",
|
||||
"pleaseSelectAccountNumber": "कृपया खाता संख्या चुनें",
|
||||
"pleaseSelectSchemeFirst": "कृपया पहले एक योजना चुनें",
|
||||
"fetchingDetails": "विवरण प्राप्त किया जा रहा है...",
|
||||
"failedToFetchDetails": "विवरण प्राप्त करने में विफल या कोई डेटा नहीं मिला।",
|
||||
"pmjjbyDetails": "PMJJBY विवरण",
|
||||
"pmsbyDetails": "PMSBY विवरण",
|
||||
"cifNumber": "CIF संख्या",
|
||||
"selectFinancialYear": "वित्तीय वर्ष चुनें",
|
||||
"schemeDetails": "योजना विवरण",
|
||||
"customerName": "ग्राहक का नाम",
|
||||
"policyNumber": "पॉलिसी संख्या",
|
||||
"premiumAmount": "प्रीमियम राशि",
|
||||
"nomineeName": "नामांकित व्यक्ति का नाम",
|
||||
"journalNo": "जर्नल नंबर",
|
||||
"noRecordFound": "कोई रिकॉर्ड नहीं मिला",
|
||||
"noDataFoundYear": "चयनित वर्ष के लिए कोई डेटा नहीं मिला।",
|
||||
"pmjjbyRegistration": "PMJJBY पंजीकरण",
|
||||
"pmsbyRegistration": "PMSBY पंजीकरण",
|
||||
"customerNo": "ग्राहक संख्या",
|
||||
"aadhaarNo": "आधार संख्या",
|
||||
"customerDobFormat": "ग्राहक की जन्म तिथि (DD/MM/YYYY)",
|
||||
"gender": "लिंग",
|
||||
"marriedYesNo": "विवाहित (हाँ/नहीं)",
|
||||
"pan": "पैन",
|
||||
"dateOfAcctOpening": "खाता खोलने की तिथि",
|
||||
"pincode": "पिनकोड",
|
||||
"state": "राज्य",
|
||||
"country": "देश",
|
||||
"ruralCategory": "ग्रामीण श्रेणी",
|
||||
"policyDetails": "पॉलिसी विवरण",
|
||||
"financialYear": "वित्तीय वर्ष",
|
||||
"healthStatus": "स्वास्थ्य की स्थिति",
|
||||
"collectionChannel": "संग्रह चैनल",
|
||||
"nomineeDetails": "नामांकित व्यक्ति का विवरण",
|
||||
"nomineeAddress": "नामांकित व्यक्ति का पता",
|
||||
"nomineeRelationship": "नामांकित व्यक्ति से संबंध",
|
||||
"nomineeMinor": "नामांकित व्यक्ति नाबालिग है",
|
||||
"response": "प्रतिक्रिया",
|
||||
"recordAlreadyExists": "इस अनुरोध के लिए एक रिकॉर्ड पहले से मौजूद है। आपका सबमिशन पहले पंजीकृत किया जा चुका है।",
|
||||
"address1": "पता 1",
|
||||
"address2": "पता 2",
|
||||
"city": "शहर",
|
||||
"relationWithNominee": "नामांकित व्यक्ति के साथ संबंध",
|
||||
"policyStatus": "पॉलिसी की स्थिति"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user