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 tickets = 1;
|
||||||
int closedTrackActive = 1;
|
int closedTrackActive = 1;
|
||||||
int allClaimsActive = 0;
|
int allClaimsActive = 0;
|
||||||
|
bool _isArgsHandled = false;
|
||||||
dynamic _token;
|
dynamic _token;
|
||||||
dynamic empCodeString;
|
dynamic empCodeString;
|
||||||
dynamic empPrimaryId;
|
dynamic empPrimaryId;
|
||||||
@ -77,6 +78,26 @@ class _helpState extends State<help> {
|
|||||||
super.dispose();
|
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 {
|
Future<void> _loadToken() async {
|
||||||
print('_loadToken');
|
print('_loadToken');
|
||||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||||
@ -413,7 +434,7 @@ class _helpState extends State<help> {
|
|||||||
arguments: details);
|
arguments: details);
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text(
|
||||||
'Raise a request',
|
'Raise a Claims',
|
||||||
style: GoogleFonts.poppins(color: Colors.white),
|
style: GoogleFonts.poppins(color: Colors.white),
|
||||||
),
|
),
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
|
|||||||
@ -137,7 +137,7 @@ class ApiService {
|
|||||||
if (_token == null) {
|
if (_token == null) {
|
||||||
await _initializeToken();
|
await _initializeToken();
|
||||||
}
|
}
|
||||||
final url = Uri.parse('${Environment.apiUrlTicket}/initiateClaim');
|
final url = Uri.parse('${Environment.apiUrl}ticketSave');
|
||||||
// Convert formData to Map<String, String>
|
// Convert formData to Map<String, String>
|
||||||
Map<String, String> stringFormData =
|
Map<String, String> stringFormData =
|
||||||
formData.map((key, value) => MapEntry(key, value.toString()));
|
formData.map((key, value) => MapEntry(key, value.toString()));
|
||||||
|
|||||||
@ -31,7 +31,6 @@ class _ticketsState extends State<tickets> {
|
|||||||
dynamic policyDataIsEmpty = 1;
|
dynamic policyDataIsEmpty = 1;
|
||||||
int? fromClaimsPage;
|
int? fromClaimsPage;
|
||||||
dynamic decodedToken;
|
dynamic decodedToken;
|
||||||
List<Map<String, dynamic>> departmentList = [];
|
|
||||||
List<Map<String, dynamic>> policyNumberList = [];
|
List<Map<String, dynamic>> policyNumberList = [];
|
||||||
dynamic serviceId;
|
dynamic serviceId;
|
||||||
dynamic policyNumberId;
|
dynamic policyNumberId;
|
||||||
@ -62,6 +61,7 @@ class _ticketsState extends State<tickets> {
|
|||||||
bool isServiceValid = true;
|
bool isServiceValid = true;
|
||||||
bool isPolicyValid = true;
|
bool isPolicyValid = true;
|
||||||
bool isSubjectValid = true;
|
bool isSubjectValid = true;
|
||||||
|
bool isMessageValid = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -167,7 +167,7 @@ class _ticketsState extends State<tickets> {
|
|||||||
if (response.containsKey('data')) {
|
if (response.containsKey('data')) {
|
||||||
setState(() {
|
setState(() {
|
||||||
selfDetails = response['data'];
|
selfDetails = response['data'];
|
||||||
print(selfDetails);
|
print('ABBC $selfDetails');
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Handle other status messages if needed
|
// Handle other status messages if needed
|
||||||
@ -183,13 +183,20 @@ class _ticketsState extends State<tickets> {
|
|||||||
Future<void> sendFormDataToApi() async {
|
Future<void> sendFormDataToApi() async {
|
||||||
setState(() {
|
setState(() {
|
||||||
isServiceValid = serviceId != null;
|
isServiceValid = serviceId != null;
|
||||||
isPolicyValid = policyNumberId != null;
|
|
||||||
isSubjectValid = subjectController.text.trim().isNotEmpty;
|
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 &&
|
if (isServiceValid &&
|
||||||
isPolicyValid &&
|
isPolicyValid &&
|
||||||
isSubjectValid) {
|
isSubjectValid && isMessageValid) {
|
||||||
// Proceed to submit
|
// Proceed to submit
|
||||||
} else {
|
} else {
|
||||||
ToastHelper.showErrorToast(context, 'Please Fill Required Fields');
|
ToastHelper.showErrorToast(context, 'Please Fill Required Fields');
|
||||||
@ -208,52 +215,50 @@ class _ticketsState extends State<tickets> {
|
|||||||
try {
|
try {
|
||||||
print('Check One');
|
print('Check One');
|
||||||
Map<String, dynamic> formData = {
|
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
|
'email': decodedToken['email_corporate'] != null
|
||||||
? decodedToken['email_corporate']
|
? 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'],
|
'client_id': selfDetails['client_id'],
|
||||||
'relationship': selfDetails['relationship'],
|
'client_branch_id': selfDetails['client_branch_id'],
|
||||||
'gender': selfDetails['gender'],
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
print('formData $formData');
|
||||||
if (policyTypeCondition == 1) {
|
// if (policyTypeCondition == 1) {
|
||||||
formData['policyholder_name'] = employeePolicyList[0]['name'];
|
// formData['policyholder_name'] = employeePolicyList[0]['name'];
|
||||||
formData['member_name'] = selectedMemberName;
|
// formData['member_name'] = selectedMemberName;
|
||||||
} else {
|
// } else {
|
||||||
|
//
|
||||||
formData['policyholder_name'] = employeePolicyList[0]['name'];
|
// formData['policyholder_name'] = employeePolicyList[0]['name'];
|
||||||
formData['member_name'] = selectedMemberName;
|
// formData['member_name'] = selectedMemberName;
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Convert integer values to strings
|
// Convert integer values to strings
|
||||||
formData = formData.map((key, value) => MapEntry(key, value.toString()));
|
formData = formData.map((key, value) => MapEntry(key, value.toString()));
|
||||||
|
|
||||||
final response = await apiService.sendFormDataToApi(formData);
|
final response = await apiService.sendFormDataToApi(formData);
|
||||||
|
|
||||||
if (response['status'] == true) {
|
if (response['status'] == 'success') {
|
||||||
ToastHelper.showSuccessToast(context, response['message']);
|
ToastHelper.showSuccessToast(context, response['message']);
|
||||||
serviceId = null;
|
serviceId = null;
|
||||||
departmentList.clear();
|
policyNumberId = null;
|
||||||
|
subjectController.clear();
|
||||||
|
messageController.clear();
|
||||||
setState(() {
|
setState(() {
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
});
|
});
|
||||||
Navigator.pushNamed(context, 'claims');
|
Navigator.pushNamed(context, 'help');
|
||||||
|
Navigator.pushNamed(
|
||||||
|
context,
|
||||||
|
'help',
|
||||||
|
arguments: {'ticketTabSelected': 0},
|
||||||
|
);
|
||||||
print('Form data submitted successfully');
|
print('Form data submitted successfully');
|
||||||
} else {
|
} else {
|
||||||
print('Failed to submit form data: ${response['status']}');
|
print('Failed to submit form data: ${response['status']}');
|
||||||
@ -424,10 +429,13 @@ class _ticketsState extends State<tickets> {
|
|||||||
serviceId,
|
serviceId,
|
||||||
valueKey: 'id',
|
valueKey: 'id',
|
||||||
),
|
),
|
||||||
|
if (!isServiceValid)
|
||||||
|
Text('Please select a Service',
|
||||||
|
style: TextStyle(color: Colors.red)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(height: 15),
|
SizedBox(height: 15),
|
||||||
if (selectedServiceName == "Service")
|
if (selectedServiceName != "Sales")
|
||||||
Column(
|
Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
@ -464,6 +472,8 @@ class _ticketsState extends State<tickets> {
|
|||||||
buildTextAreaField(
|
buildTextAreaField(
|
||||||
'Message',
|
'Message',
|
||||||
messageController),
|
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,
|
alignment: Alignment.centerRight,
|
||||||
child: ElevatedButton(
|
child: ElevatedButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
// sendFormDataToApi();
|
sendFormDataToApi();
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text(
|
||||||
'Send',
|
'Send',
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user