diff --git a/android/app/build.gradle b/android/app/build.gradle index a11a274..88942a4 100755 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -19,12 +19,12 @@ if (project.hasProperty('google-services.json')) { def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { - flutterVersionCode = '54' + flutterVersionCode = '55' } def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { - flutterVersionName = '2.0.16' + flutterVersionName = '2.0.17' } def keystoreProperties = new Properties() diff --git a/lib/pages/postEnrollment/planclaimsform.dart b/lib/pages/postEnrollment/planclaimsform.dart index f9f2077..b7c0d46 100755 --- a/lib/pages/postEnrollment/planclaimsform.dart +++ b/lib/pages/postEnrollment/planclaimsform.dart @@ -85,7 +85,6 @@ class _planclaimsformState extends State { int? claimTypeId; bool isClaimTypeValid = true; - // Declare subjectController and bodyController as instance variables late TextEditingController subjectController; late TextEditingController messageController; @@ -946,14 +945,14 @@ class _planclaimsformState extends State { vertical: MediaQuery.of(context).size.height * 0.05, // 5% of screen height as vertical padding ) - : EdgeInsets.all(10), - color: Colors.white, + : EdgeInsets.all(10), + color: Colors.white, child: Column(children: [ Card( elevation: 5, shape: RoundedRectangleBorder( borderRadius: - BorderRadius.circular(15.0), // Set border radius here + BorderRadius.circular(15.0), // Set border radius here ), child: Container( decoration: BoxDecoration( @@ -964,10 +963,10 @@ class _planclaimsformState extends State { padding: Responsive.isDesktop(context) ? EdgeInsets.only(top: 15, bottom: 15, left: 15, right: 15) : EdgeInsets.only( - top: 10, - bottom: 10, - left: 10, - right: 10), // Add padding to the container + top: 10, + bottom: 10, + left: 10, + right: 10), // Add padding to the container child: Row( children: [ Expanded( @@ -987,22 +986,22 @@ class _planclaimsformState extends State { ), padding: Responsive.isDesktop(context) ? EdgeInsets.only( - top: 20, - bottom: 20, - left: 0, - right: 0) + top: 20, + bottom: 20, + left: 0, + right: 0) : EdgeInsets.only( - top: 10, - bottom: 10, - left: 10, - right: 10), + top: 10, + bottom: 10, + left: 10, + right: 10), child: Column( crossAxisAlignment: - CrossAxisAlignment.center, + CrossAxisAlignment.center, children: [ Row( mainAxisAlignment: - MainAxisAlignment.start, + MainAxisAlignment.start, children: [ Expanded( flex: 1, @@ -1018,40 +1017,6 @@ class _planclaimsformState extends State { ), ), ), - padding: Responsive.isDesktop(context) - ? EdgeInsets.only( - top: 20, - bottom: 20, - left: 0, - right: 0) - : EdgeInsets.only( - top: 10, - bottom: 10, - left: 10, - right: 10), - child: Column( - crossAxisAlignment: - CrossAxisAlignment.center, - children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.start, - children: [ - Expanded( - flex: 1, - child: InkWell( - onTap: () { - final route = fromClaimsPage == 0 ? 'claims' : 'help'; - context.go('/$route'); - }, - child: Icon( - Icons - .chevron_left, // Replace with your desired icon - color: Color(0xFF000000), - size: 30, - ), - ), - ), Expanded( flex: 11, child: Row( @@ -1070,8 +1035,8 @@ class _planclaimsformState extends State { fontSize: Responsive.isDesktop( context) - ? 20 - : 16, + ? 20 + : 16, fontWeight: FontWeight.w600, color: Color(0xFF000000), ), @@ -1091,16 +1056,16 @@ class _planclaimsformState extends State { children: [ Column( crossAxisAlignment: - CrossAxisAlignment.start, + CrossAxisAlignment.start, children: [ Container( width: double.infinity, alignment: Alignment.centerLeft, child: Column( mainAxisAlignment: - MainAxisAlignment.start, + MainAxisAlignment.start, crossAxisAlignment: - CrossAxisAlignment.start, + CrossAxisAlignment.start, children: [ Form( key: formKey, @@ -1193,6 +1158,32 @@ class _planclaimsformState extends State { Text('Please select a policy', style: TextStyle(color: Colors.red)), ], ), + SizedBox(height: 15), + + if (policyTypeCondition == 1 || policyTypeCondition == 72) + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + buildDropdownField( + 'Select Claim Type', + (value) { + setState(() { + claimTypeId = value; + isClaimTypeValid = true; + }); + }, + false, + claimTypeList, + 'name', + claimTypeId, + ), + if (!isClaimTypeValid) + Text( + 'Please select a claim type', + style: TextStyle(color: Colors.red), + ), + ], + ), // // if (fromClaimsPage == 1) // buildDropdownField( @@ -1254,7 +1245,7 @@ class _planclaimsformState extends State { Text('Please select a member', style: TextStyle(color: Colors.red)), ], ), -SizedBox(height: 15), + SizedBox(height: 15), // buildDropdownField( // 'Member Name', // (value) { @@ -1278,7 +1269,7 @@ SizedBox(height: 15), // 'name', // selectedMemberId, // Pass current selectedMemberId as selectedValue // ), - Column( + Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // buildTextField('Subject', @@ -1322,12 +1313,12 @@ SizedBox(height: 15), Text('Please enter the Hospital Pincode', style: TextStyle(color: Colors.red)), SizedBox(height: 15), buildTextField('Hospital Phone No', hospitalPhoneNoController, - isRequired: true, - keyboardType: TextInputType.number, - inputFormatters: [ - FilteringTextInputFormatter.digitsOnly, - LengthLimitingTextInputFormatter(10), - ],minLength: 10,), + isRequired: true, + keyboardType: TextInputType.number, + inputFormatters: [ + FilteringTextInputFormatter.digitsOnly, + LengthLimitingTextInputFormatter(10), + ],minLength: 10,), if (!isHospitalPhoneNoValid) Text( hospitalPhoneNoController.text.trim().isEmpty @@ -1454,9 +1445,9 @@ SizedBox(height: 15), SizedBox(height: 15), if (serviceId == 1) ...[ buildTextField('Claims Amount', claimAmountController, isRequired: true, keyboardType: TextInputType.number, - inputFormatters: [ - FilteringTextInputFormatter.digitsOnly, - ]), + inputFormatters: [ + FilteringTextInputFormatter.digitsOnly, + ]), if (!isClaimAmountValid) Text('Please enter the Claims Amount', style: TextStyle(color: Colors.red)), ], @@ -1475,7 +1466,7 @@ SizedBox(height: 15), ], ), ] - ), + ), SizedBox(height: 15), // ThemedUploadField( // hintText: "Upload Documents", @@ -1504,442 +1495,6 @@ SizedBox(height: 15), ], ), ), - ), - SizedBox(height: 15), - Container( - child: Column( - children: [ - Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Container( - width: double.infinity, - alignment: Alignment.centerLeft, - child: Column( - mainAxisAlignment: - MainAxisAlignment.start, - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Form( - key: formKey, - child: Column( - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - buildDropdownField( - 'Service', - (value) { - setState(() { - serviceId = value; - selectedServiceName = departmentList.firstWhere( - (serList) => serList['id'] == value, - orElse: () => {'name': ''}, - )['name']; - policyNumberId = null; - - loadClaimTypes(serviceId); // ✅ LOAD CLAIM TYPES - isServiceValid = true; - if (fromClaimsPage == 1) { - fetchPoliciesBasedOnService(serviceId); - } - }); - }, - fromClaimsPage == 0, - departmentList, - 'name', - serviceId, - ), - if (!isServiceValid) - Text('Please select a service', style: TextStyle(color: Colors.red)), - ], - ), - - // buildDropdownField( - // 'Service', - // (value) { - // setState(() { - // serviceId = value; - // selectedServiceName = - // departmentList - // .firstWhere( - // (serList) => - // serList[ - // 'id'] == - // value, - // orElse: () => - // {'name': ''}, - // )['name']; - // policyNumberId = - // null; - // if (fromClaimsPage == - // 1) { - // fetchPoliciesBasedOnService( - // serviceId); - // } - // }); - // }, - // fromClaimsPage == 0, - // departmentList, - // 'name', - // serviceId, // Pass current serviceId as selectedValue - // ), - SizedBox(height: 15), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - buildDropdownField( - 'Select Policy', - (value) { - setState(() { - policyNumberId = value; - selectedMemberId = null; - String? selectedPolicyNo = policyNumberList.firstWhere( - (item) => item['id'] == value, - orElse: () => {'policy_no': ''}, - )['policy_no']; - if (selectedPolicyNo != null && fromClaimsPage == 1) { - fetchMemberBasedOnPolicy(selectedPolicyNo); - } - isPolicyValid = true; - }); - }, - fromClaimsPage == 0, - policyNumberList, - 'policy_no', - policyNumberId, - ), - if (!isPolicyValid) - Text('Please select a policy', style: TextStyle(color: Colors.red)), - ], - ), - - SizedBox(height: 15), - - if (policyTypeCondition == 1 || policyTypeCondition == 72) - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - buildDropdownField( - 'Select Claim Type', - (value) { - setState(() { - claimTypeId = value; - isClaimTypeValid = true; - }); - }, - false, - claimTypeList, - 'name', - claimTypeId, - ), - if (!isClaimTypeValid) - Text( - 'Please select a claim type', - style: TextStyle(color: Colors.red), - ), - ], - ), - - // // if (fromClaimsPage == 1) - // buildDropdownField( - // 'Select Policy', - // (value) { - // setState(() { - // policyNumberId = - // value; - // selectedMemberId = - // null; - // String? - // selectedPolicyNo = - // policyNumberList - // .firstWhere( - // (item) => - // item['id'] == - // value, - // orElse: () => - // { - // 'policy_no': '' - // })['policy_no']; - // - // if (selectedPolicyNo != - // null && - // fromClaimsPage == - // 1) { - // fetchMemberBasedOnPolicy( - // selectedPolicyNo); - // } - // }); - // }, - // fromClaimsPage == 0, - // policyNumberList, - // 'policy_no', - // policyNumberId, // Pass current policyNumberId as selectedValue - // ), - SizedBox(height: 15), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - buildDropdownField( - 'Member Name', - (value) { - setState(() { - selectedMemberId = value; - selectedMemberName = employeePolicyList.firstWhere( - (member) => member['id'] == value, - orElse: () => {'name': ''}, - )['name']; - isMemberValid = true; - }); - }, - false, - employeePolicyList, - 'name', - selectedMemberId, - ), - if (!isMemberValid) - Text('Please select a member', style: TextStyle(color: Colors.red)), - ], - ), - SizedBox(height: 15), - // buildDropdownField( - // 'Member Name', - // (value) { - // setState(() { - // selectedMemberId = - // value; - // selectedMemberName = - // employeePolicyList - // .firstWhere( - // (member) => - // member[ - // 'id'] == - // value, - // orElse: () => - // {'name': ''}, - // )['name']; - // }); - // }, - // false, - // employeePolicyList, - // 'name', - // selectedMemberId, // Pass current selectedMemberId as selectedValue - // ), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - // buildTextField('Subject', - // subjectController), - // if (!isSubjectValid) - // Text('Please enter the Subject', style: TextStyle(color: Colors.red)), - SizedBox(height: 15), - buildTextAreaField( - 'Message', - messageController), - SizedBox(height: 15), - // if (policyTypeCondition == - // 3) - // buildTextField( - // 'Accident Details', - // accidentDetailsController), - SizedBox(height: 15), - if (policyTypeCondition == 1 || policyTypeCondition == 72) ...[ - buildTextField('Hospital Name', hospitalNameController), - if (!isHospitalNameValid) - Text('Please enter the Hospital Name', style: TextStyle(color: Colors.red)), - SizedBox(height: 15), - buildTextAreaField('Hospital Address',hospitalAddressController), - if (!isHospitalAddressValid) - Text('Please enter the Hospital Address', style: TextStyle(color: Colors.red)), - SizedBox(height: 15), - buildTextField('Hospital City', hospitalCityController), - if (!isHospitalCityValid) - Text('Please enter the Hospital City', style: TextStyle(color: Colors.red)), - SizedBox(height: 15), - buildTextField('Hospital State', hospitalStateController), - if (!isHospitalStateValid) - Text('Please enter the Hospital State', style: TextStyle(color: Colors.red)), - SizedBox(height: 15), - buildTextField('Hospital Pincode', hospitalPinCodeController,keyboardType: TextInputType.number, - inputFormatters: [ - FilteringTextInputFormatter.digitsOnly, - LengthLimitingTextInputFormatter(6), // optional - ]), - if (!isHospitalPincodeValid) - Text('Please enter the Hospital Pincode', style: TextStyle(color: Colors.red)), - SizedBox(height: 15), - buildTextField('Hospital Phone No', hospitalPhoneNoController,keyboardType: TextInputType.number, - inputFormatters: [ - FilteringTextInputFormatter.digitsOnly, - LengthLimitingTextInputFormatter(10), // optional - ]), - if (!isHospitalPhoneNoValid) - Text('Please enter the Hospital Phone No', style: TextStyle(color: Colors.red)), - ], - SizedBox(height: 15), - if (serviceId == 2 || - serviceId == 3 || - serviceId == 4) ...[ - buildDatePickerField( - label: - 'Date of Birth', - selectedDate: - birthDate, - allowFuture: false, - onDateSelected: - (selectedDate) { - setState(() { - birthDate = - selectedDate; - }); - }, - ), - SizedBox(height: 15), - buildDatePickerField( - label: 'Accident Date', - selectedDate: accidentDate, - allowFuture: false, - minDate: parsedPolicyStartDate, - maxDate: parsedPolicyEndDate, - onDateSelected: (selectedDate) { - setState(() { - if (deathDate != null) deathDate = null; - if (intimationDate != null) intimationDate = null; - accidentDate = selectedDate; - }); - }, - ), - if (!isAccidentDateValid) - Text('Please select the Accident Date', style: TextStyle(color: Colors.red)), - SizedBox(height: 15), - buildDatePickerField( - label: - 'Date of Death', - selectedDate: - deathDate, - allowFuture: false, - minDate: accidentDate ?? parsedPolicyStartDate, - maxDate: parsedPolicyEndDate, - onDateSelected: - (selectedDate) { - setState(() { - deathDate = - selectedDate; - }); - }, - ), - SizedBox(height: 15), - buildDatePickerField( - label: 'Date of Intimation', - selectedDate: intimationDate, - allowFuture: false, - minDate: accidentDate ?? deathDate ?? parsedPolicyStartDate, - maxDate: parsedPolicyEndDate, - onDateSelected: (selectedDate) { - setState(() { - intimationDate = selectedDate; - }); - }, - ), - if (!isIntimationDateValid) - Text('Please select the Intimation Date', style: TextStyle(color: Colors.red)), - ], - SizedBox(height: 15), - // buildTextAreaField( - // 'Accident Details', - // accidentDetailsController), - // SizedBox(height: 15), - if (policyTypeCondition == 1 || policyTypeCondition == 72) ...[ - // 🟡 Admit Date — no future allowed - buildDatePickerField( - label: 'Admit Date', - selectedDate: admitDate, - allowFuture: false, - onDateSelected: (selectedDate) { - setState(() { - admitDate = selectedDate; - dischargeDate = null; // reset discharge when admit changes - }); - }, - ), - if (!isAdmitDateValid) - const Text('Please select the Admit Date', style: TextStyle(color: Colors.red)), - const SizedBox(height: 20), - - // 🟢 Discharge Date — must be after Admit Date - buildDatePickerField( - label: 'Discharge Date', - selectedDate: dischargeDate, - allowFuture: true, - minDate: admitDate != null - ? admitDate!.add(const Duration(days: 1)) - : DateTime.now().add(const Duration(days: 1)), - maxDate: null, - onDateSelected: (selectedDate) { - setState(() { - dischargeDate = selectedDate; - }); - }, - ), - if (!isDischargeDateValid) - const Text('Please select the Discharge Date', style: TextStyle(color: Colors.red)), - ], - - - SizedBox(height: 15), - if (serviceId == 1) ...[ - buildTextField('Claims Amount', claimAmountController, keyboardType: TextInputType.number, - inputFormatters: [ - FilteringTextInputFormatter.digitsOnly, - ]), - if (!isClaimAmountValid) - Text('Please enter the Claims Amount', style: TextStyle(color: Colors.red)), - ], - - SizedBox(height: 15), - if (serviceId == 2 || - serviceId == 3 || - serviceId == 4) - buildTextField( - 'Sum Insured', - sumInsuredController, - keyboardType: TextInputType.number, - inputFormatters: [ - FilteringTextInputFormatter.digitsOnly, - ], - ), - ] - ), - SizedBox(height: 15), - // ThemedUploadField( - // hintText: "Upload Documents", - // txtwidth: MediaQuery.of(context).size.width < 600 - // ? MediaQuery.of(context).size.width // Full width on mobile - // : MediaQuery.of(context).size.width * 0.26, // 26% on desktop - // txtheight: 45, - // onFilesSelected: (files) { - // print("Picked files: ${files.map((f) => f.name).toList()}"); - // setState(() { - // uploadedFiles = files; // store all selected files - // }); - // }, - // ), - Padding( - padding: const EdgeInsets.all(16.0), - child: Column( - children: [ - const MultiFileUploadWidget(), - ], - ), - ), - ], - ), - ), - ], - ), - ), ], ), SizedBox(height: 15), @@ -2185,7 +1740,7 @@ SizedBox(height: 15), List> itemsList, String displayField, int? selectedValue, // Added selectedValue parameter - {bool isRequired = false,} + {bool isRequired = false,} ) { return DropdownButtonFormField( value: selectedValue, diff --git a/lib/pages/postEnrollment/service/api_service.dart b/lib/pages/postEnrollment/service/api_service.dart index ccb4317..29a3ddc 100755 --- a/lib/pages/postEnrollment/service/api_service.dart +++ b/lib/pages/postEnrollment/service/api_service.dart @@ -421,13 +421,8 @@ class ApiService { ToastHelper.showWarningToast(context, message); return {}; } else if (response.statusCode == 429) { -<<<<<<< HEAD - final body = jsonDecode(response.body); -======= - if (!context.mounted) return {}; - final body = jsonDecode(response.body); ->>>>>>> 24f532f750daddbb5d414d9056a4e1c4c760a2c4 - final message = body['message']; + final body = jsonDecode(response.body); + final message = body['message']; ToastHelper.showWarningToast(context, message); return {}; } else { diff --git a/pubspec.yaml b/pubspec.yaml index 4ed2211..01ef878 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,8 +17,8 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. #version: 1.0.32+32 -version: 1.0.29+34 -#version: 2.0.16+54 +version: 1.0.30+35 +#version: 2.0.17+55 environment: sdk: '>=3.3.3 <4.0.0'