From dfdc8c803c0a133b88e10c568a3b6f619df2de75 Mon Sep 17 00:00:00 2001 From: SurendarSuri30 Date: Wed, 20 Aug 2025 17:38:01 +0530 Subject: [PATCH] ticket flow added --- lib/pages/postEnrollment/help.dart | 23 +++++- .../postEnrollment/service/api_service.dart | 2 +- lib/pages/postEnrollment/tickets.dart | 80 +++++++++++-------- 3 files changed, 68 insertions(+), 37 deletions(-) diff --git a/lib/pages/postEnrollment/help.dart b/lib/pages/postEnrollment/help.dart index abf9ebf..d278876 100755 --- a/lib/pages/postEnrollment/help.dart +++ b/lib/pages/postEnrollment/help.dart @@ -31,6 +31,7 @@ class _helpState extends State { int tickets = 1; int closedTrackActive = 1; int allClaimsActive = 0; + bool _isArgsHandled = false; dynamic _token; dynamic empCodeString; dynamic empPrimaryId; @@ -77,6 +78,26 @@ class _helpState extends State { super.dispose(); } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + + if (!_isArgsHandled) { + final args = ModalRoute.of(context)?.settings.arguments as Map?; + + if (args != null && args.containsKey('ticketTabSelected')) { + setState(() { + tickets = args['ticketTabSelected']; // e.g. 0 from TicketForm + closedTrackActive = 1; + allClaimsActive = 1; + isActive = false; + }); + } + + _isArgsHandled = true; // ✅ only apply once + } + } + Future _loadToken() async { print('_loadToken'); final SharedPreferences prefs = await SharedPreferences.getInstance(); @@ -413,7 +434,7 @@ class _helpState extends State { arguments: details); }, child: Text( - 'Raise a request', + 'Raise a Claims', style: GoogleFonts.poppins(color: Colors.white), ), style: ElevatedButton.styleFrom( diff --git a/lib/pages/postEnrollment/service/api_service.dart b/lib/pages/postEnrollment/service/api_service.dart index 1f58061..1c1ff8b 100755 --- a/lib/pages/postEnrollment/service/api_service.dart +++ b/lib/pages/postEnrollment/service/api_service.dart @@ -137,7 +137,7 @@ class ApiService { if (_token == null) { await _initializeToken(); } - final url = Uri.parse('${Environment.apiUrlTicket}/initiateClaim'); + final url = Uri.parse('${Environment.apiUrl}ticketSave'); // Convert formData to Map Map stringFormData = formData.map((key, value) => MapEntry(key, value.toString())); diff --git a/lib/pages/postEnrollment/tickets.dart b/lib/pages/postEnrollment/tickets.dart index 07d5d5f..663c5fe 100644 --- a/lib/pages/postEnrollment/tickets.dart +++ b/lib/pages/postEnrollment/tickets.dart @@ -31,7 +31,6 @@ class _ticketsState extends State { dynamic policyDataIsEmpty = 1; int? fromClaimsPage; dynamic decodedToken; - List> departmentList = []; List> policyNumberList = []; dynamic serviceId; dynamic policyNumberId; @@ -62,6 +61,7 @@ class _ticketsState extends State { bool isServiceValid = true; bool isPolicyValid = true; bool isSubjectValid = true; + bool isMessageValid = true; @@ -167,7 +167,7 @@ class _ticketsState extends State { if (response.containsKey('data')) { setState(() { selfDetails = response['data']; - print(selfDetails); + print('ABBC $selfDetails'); }); } else { // Handle other status messages if needed @@ -183,13 +183,20 @@ class _ticketsState extends State { Future sendFormDataToApi() async { setState(() { isServiceValid = serviceId != null; - isPolicyValid = policyNumberId != null; isSubjectValid = subjectController.text.trim().isNotEmpty; + isMessageValid = messageController.text.trim().isNotEmpty; + + // ✅ Skip policy validation if service is "Sales" + if (selectedServiceName == "Sales") { + isPolicyValid = true; + } else { + isPolicyValid = policyNumberId != null; + } }); if (isServiceValid && isPolicyValid && - isSubjectValid) { + isSubjectValid && isMessageValid) { // Proceed to submit } else { ToastHelper.showErrorToast(context, 'Please Fill Required Fields'); @@ -208,52 +215,50 @@ class _ticketsState extends State { try { print('Check One'); Map formData = { - // 'opener': 'user', - 'emp_id': emp_id, - 'client_policy_id': client_policy_id, - 'ticket_type_id': serviceId, - 'subject': subjectController.text, - 'message': messageController.text, - // 'policy_id': fromClaimsPage == 0 - // ? claimsDetails['client_policy_id'] - // : policyNumberId, - 'emp_code': - decodedToken['emp_code'] != null ? decodedToken['emp_code'] : '', - 'mobile_number': - decodedToken['mobile'] != null ? decodedToken['mobile'] : '', 'email': decodedToken['email_corporate'] != null ? decodedToken['email_corporate'] : '', - 'fullname': decodedToken['name'] != null ? decodedToken['name'] : '', + 'empcode': decodedToken['emp_code'] != null ? decodedToken['emp_code'] : '', + 'message': messageController.text, + 'mobile': decodedToken['mobile'] != null ? decodedToken['mobile'] : '', + 'name': decodedToken['name'] != null ? decodedToken['name'] : '', + 'policy_no': policyNumberId, + 'subject': subjectController.text, + 'ticket_type': selectedServiceName, 'client_id': selfDetails['client_id'], - 'relationship': selfDetails['relationship'], - 'gender': selfDetails['gender'], - + 'client_branch_id': selfDetails['client_branch_id'], }; - - if (policyTypeCondition == 1) { - formData['policyholder_name'] = employeePolicyList[0]['name']; - formData['member_name'] = selectedMemberName; - } else { - - formData['policyholder_name'] = employeePolicyList[0]['name']; - formData['member_name'] = selectedMemberName; - } + print('formData $formData'); + // if (policyTypeCondition == 1) { + // formData['policyholder_name'] = employeePolicyList[0]['name']; + // formData['member_name'] = selectedMemberName; + // } else { + // + // formData['policyholder_name'] = employeePolicyList[0]['name']; + // formData['member_name'] = selectedMemberName; + // } // Convert integer values to strings formData = formData.map((key, value) => MapEntry(key, value.toString())); final response = await apiService.sendFormDataToApi(formData); - if (response['status'] == true) { + if (response['status'] == 'success') { ToastHelper.showSuccessToast(context, response['message']); serviceId = null; - departmentList.clear(); + policyNumberId = null; + subjectController.clear(); + messageController.clear(); setState(() { isLoading = false; }); - Navigator.pushNamed(context, 'claims'); + Navigator.pushNamed(context, 'help'); + Navigator.pushNamed( + context, + 'help', + arguments: {'ticketTabSelected': 0}, + ); print('Form data submitted successfully'); } else { print('Failed to submit form data: ${response['status']}'); @@ -424,10 +429,13 @@ class _ticketsState extends State { serviceId, valueKey: 'id', ), + if (!isServiceValid) + Text('Please select a Service', + style: TextStyle(color: Colors.red)), ], ), SizedBox(height: 15), - if (selectedServiceName == "Service") + if (selectedServiceName != "Sales") Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -464,6 +472,8 @@ class _ticketsState extends State { buildTextAreaField( 'Message', messageController), + if (!isMessageValid) + Text('Please enter the Message', style: TextStyle(color: Colors.red)), ] ), ], @@ -483,7 +493,7 @@ class _ticketsState extends State { alignment: Alignment.centerRight, child: ElevatedButton( onPressed: () { - // sendFormDataToApi(); + sendFormDataToApi(); }, child: Text( 'Send',