ticket flow added
This commit is contained in:
parent
9f4241fc9d
commit
dfdc8c803c
@ -31,6 +31,7 @@ class _helpState extends State<help> {
|
||||
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<help> {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
void didChangeDependencies() {
|
||||
super.didChangeDependencies();
|
||||
|
||||
if (!_isArgsHandled) {
|
||||
final args = ModalRoute.of(context)?.settings.arguments as Map<String, dynamic>?;
|
||||
|
||||
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<void> _loadToken() async {
|
||||
print('_loadToken');
|
||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
@ -413,7 +434,7 @@ class _helpState extends State<help> {
|
||||
arguments: details);
|
||||
},
|
||||
child: Text(
|
||||
'Raise a request',
|
||||
'Raise a Claims',
|
||||
style: GoogleFonts.poppins(color: Colors.white),
|
||||
),
|
||||
style: ElevatedButton.styleFrom(
|
||||
|
||||
@ -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<String, String>
|
||||
Map<String, String> stringFormData =
|
||||
formData.map((key, value) => MapEntry(key, value.toString()));
|
||||
|
||||
@ -31,7 +31,6 @@ class _ticketsState extends State<tickets> {
|
||||
dynamic policyDataIsEmpty = 1;
|
||||
int? fromClaimsPage;
|
||||
dynamic decodedToken;
|
||||
List<Map<String, dynamic>> departmentList = [];
|
||||
List<Map<String, dynamic>> policyNumberList = [];
|
||||
dynamic serviceId;
|
||||
dynamic policyNumberId;
|
||||
@ -62,6 +61,7 @@ class _ticketsState extends State<tickets> {
|
||||
bool isServiceValid = true;
|
||||
bool isPolicyValid = true;
|
||||
bool isSubjectValid = true;
|
||||
bool isMessageValid = true;
|
||||
|
||||
|
||||
|
||||
@ -167,7 +167,7 @@ class _ticketsState extends State<tickets> {
|
||||
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<tickets> {
|
||||
Future<void> 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<tickets> {
|
||||
try {
|
||||
print('Check One');
|
||||
Map<String, dynamic> 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<tickets> {
|
||||
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<tickets> {
|
||||
buildTextAreaField(
|
||||
'Message',
|
||||
messageController),
|
||||
if (!isMessageValid)
|
||||
Text('Please enter the Message', style: TextStyle(color: Colors.red)),
|
||||
]
|
||||
),
|
||||
],
|
||||
@ -483,7 +493,7 @@ class _ticketsState extends State<tickets> {
|
||||
alignment: Alignment.centerRight,
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
// sendFormDataToApi();
|
||||
sendFormDataToApi();
|
||||
},
|
||||
child: Text(
|
||||
'Send',
|
||||
|
||||
Loading…
Reference in New Issue
Block a user