Claims History Added
This commit is contained in:
parent
b7b17c928d
commit
d532f9150d
@ -31,6 +31,8 @@ class ClaimHistoryPopup extends StatefulWidget {
|
||||
class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
|
||||
late ApiService apiService;
|
||||
List<Map<String, dynamic>> getClaimsHistoryList = [];
|
||||
List<String> stepKeys =[];
|
||||
late Map<String, dynamic> stepMap;
|
||||
int _index = 4;
|
||||
|
||||
@override
|
||||
@ -44,7 +46,7 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
|
||||
print(widget.empCode);
|
||||
print(widget.policyType);
|
||||
print(widget.ticket_id);
|
||||
// getClaimsHistoryDetails();
|
||||
getClaimsHistoryDetails();
|
||||
}
|
||||
|
||||
@override
|
||||
@ -58,10 +60,10 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
|
||||
});
|
||||
try {
|
||||
print('10');
|
||||
final ticketID = widget.ticket_id;
|
||||
if (ticketID != '' || ticketID != null) {
|
||||
return;
|
||||
}
|
||||
// final ticketID = widget.ticket_id;
|
||||
// if (ticketID != '' || ticketID != null) {
|
||||
// return;
|
||||
// }
|
||||
final response = await apiService.getClaimsHistoryToApi(
|
||||
widget.ticket_id, widget.postToken);
|
||||
if (response['status'] == 'success') {
|
||||
@ -69,8 +71,10 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
|
||||
// isLoading = false;
|
||||
});
|
||||
setState(() {
|
||||
getClaimsHistoryList =
|
||||
List<Map<String, dynamic>>.from(response['data']);
|
||||
getClaimsHistoryList = [Map<String, dynamic>.from(response['data']['ticket_data'])];
|
||||
stepMap = getClaimsHistoryList[0];
|
||||
stepKeys = stepMap.keys.toList();
|
||||
print('Claims History List $getClaimsHistoryList');
|
||||
// originalData = getCDPolicies;
|
||||
// filteredData = List.from(originalData);
|
||||
// print('filteredData');
|
||||
@ -99,12 +103,12 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (getClaimsHistoryList.isEmpty) {
|
||||
return SizedBox(
|
||||
height: 50,
|
||||
child: Center(child: Text('No available Claims')),
|
||||
);
|
||||
}
|
||||
// if (getClaimsHistoryList.isEmpty) {
|
||||
// return SizedBox(
|
||||
// height: 50,
|
||||
// child: Center(child: Text('No available Claims')),
|
||||
// );
|
||||
// }
|
||||
return Container(
|
||||
constraints: BoxConstraints(maxWidth: 800, maxHeight: 800),
|
||||
padding: EdgeInsets.all(20),
|
||||
@ -154,123 +158,124 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
|
||||
],
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Container(
|
||||
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 20),
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFFFFFFF), // White background
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Color(0xFFEBEBEB), // Shadow color
|
||||
blurRadius: 14, // How soft the shadow is
|
||||
spreadRadius: 2, // How much it spreads
|
||||
offset: Offset(0, 1), // X and Y offset
|
||||
),
|
||||
],
|
||||
),
|
||||
padding: const EdgeInsets.all(16),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: _buildKeyValue(
|
||||
'Name', '${widget.empName ?? ''} (${widget.empCode ?? ''})'),
|
||||
),
|
||||
SizedBox(width: 16),
|
||||
Expanded(
|
||||
child: _buildKeyValue('Policy Name',
|
||||
'${widget.policyType ?? ''} - ${widget.clientPolicyNo ?? ''}')),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 16),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: _buildKeyValue(
|
||||
'Claim Amount', '₹${widget.claimAmount ?? ''}'),
|
||||
),
|
||||
SizedBox(width: 16),
|
||||
Expanded(
|
||||
child: _buildKeyValue('Claim Number', widget.claimNo ?? ''),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
// Container(
|
||||
// decoration: BoxDecoration(
|
||||
// color: Color(0xFFFFFFFF), // White background
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
// boxShadow: [
|
||||
// BoxShadow(
|
||||
// color: Color(0xFFEBEBEB), // Shadow color
|
||||
// blurRadius: 14, // How soft the shadow is
|
||||
// spreadRadius: 2, // How much it spreads
|
||||
// offset: Offset(0, 1), // X and Y offset
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// padding: const EdgeInsets.all(16),
|
||||
// child: Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// Row(
|
||||
// children: [
|
||||
// Expanded(
|
||||
// child: _buildKeyValue(
|
||||
// 'Name', '${widget.empName ?? ''} (${widget.empCode ?? ''})'),
|
||||
// ),
|
||||
// SizedBox(width: 16),
|
||||
// Expanded(
|
||||
// child: _buildKeyValue('Policy Name',
|
||||
// '${widget.policyType ?? ''} - ${widget.clientPolicyNo ?? ''}')),
|
||||
// ],
|
||||
// child: Stepper(
|
||||
// currentStep: _index,
|
||||
// onStepCancel: () {
|
||||
// if (_index > 0) {
|
||||
// setState(() {
|
||||
// _index -= 1;
|
||||
// });
|
||||
// }
|
||||
// },
|
||||
// onStepContinue: () {
|
||||
// if (_index < 4) {
|
||||
// setState(() {
|
||||
// _index += 1;
|
||||
// });
|
||||
// }
|
||||
// },
|
||||
// onStepTapped: (int index) {
|
||||
// setState(() {
|
||||
// _index = index;
|
||||
// });
|
||||
// },
|
||||
// steps: <Step>[
|
||||
// Step(
|
||||
// title: Text('Step 1: PAYMENT INITIATED'),
|
||||
// content: Text('Pay Initiate Date: 05-05-2025'),
|
||||
// isActive: true,
|
||||
// state: StepState.complete,
|
||||
// ),
|
||||
// SizedBox(height: 16),
|
||||
// Row(
|
||||
// children: [
|
||||
// Expanded(
|
||||
// child: _buildKeyValue(
|
||||
// 'Claim Amount', '₹${widget.claimAmount ?? ''}'),
|
||||
// ),
|
||||
// SizedBox(width: 16),
|
||||
// Expanded(
|
||||
// child: _buildKeyValue('Claim Number', widget.claimNo ?? ''),
|
||||
// ),
|
||||
// ],
|
||||
// Step(
|
||||
// title: Text('Step 2: INFORMATION REQUIRED'),
|
||||
// content: Text('Raised Date: 05-05-2025'),
|
||||
// isActive: true,
|
||||
// state: StepState.complete,
|
||||
// ),
|
||||
// Step(
|
||||
// title: Text('Step 3: CLAIM NO. UPDATION'),
|
||||
// content: Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// Text('Claim Number: 4315440'),
|
||||
// Text('Registration Date: 05-05-2025'),
|
||||
// ],
|
||||
// ),
|
||||
// isActive: true,
|
||||
// state: StepState.complete,
|
||||
// ),
|
||||
// Step(
|
||||
// title: Text('Step 4: QUERY DOCUMENT REQUIRED'),
|
||||
// content: Text('Query Received Date: 05-05-2025'),
|
||||
// isActive: true,
|
||||
// state: StepState.complete,
|
||||
// ),
|
||||
// Step(
|
||||
// title: Text('Step 5: APPROVED'),
|
||||
// content: Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// Text('Approved Amount: 4315440'),
|
||||
// Text('Approved Date: 05-05-2025'),
|
||||
// Text('Approved Letter: Lorem ipsum...'),
|
||||
// Text('Description: Lorem ipsum...'),
|
||||
// ],
|
||||
// ),
|
||||
// isActive: true,
|
||||
// state: StepState.complete,
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// SizedBox(height: 10),
|
||||
// // Container(
|
||||
// // padding: const EdgeInsets.all(16),
|
||||
// // child: Stepper(
|
||||
// // currentStep: _index,
|
||||
// // onStepCancel: () {
|
||||
// // if (_index > 0) {
|
||||
// // setState(() {
|
||||
// // _index -= 1;
|
||||
// // });
|
||||
// // }
|
||||
// // },
|
||||
// // onStepContinue: () {
|
||||
// // if (_index < 4) {
|
||||
// // setState(() {
|
||||
// // _index += 1;
|
||||
// // });
|
||||
// // }
|
||||
// // },
|
||||
// // onStepTapped: (int index) {
|
||||
// // setState(() {
|
||||
// // _index = index;
|
||||
// // });
|
||||
// // },
|
||||
// // steps: <Step>[
|
||||
// // Step(
|
||||
// // title: Text('Step 1: PAYMENT INITIATED'),
|
||||
// // content: Text('Pay Initiate Date: 05-05-2025'),
|
||||
// // isActive: true,
|
||||
// // state: StepState.complete,
|
||||
// // ),
|
||||
// // Step(
|
||||
// // title: Text('Step 2: INFORMATION REQUIRED'),
|
||||
// // content: Text('Raised Date: 05-05-2025'),
|
||||
// // isActive: true,
|
||||
// // state: StepState.complete,
|
||||
// // ),
|
||||
// // Step(
|
||||
// // title: Text('Step 3: CLAIM NO. UPDATION'),
|
||||
// // content: Column(
|
||||
// // crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// // children: [
|
||||
// // Text('Claim Number: 4315440'),
|
||||
// // Text('Registration Date: 05-05-2025'),
|
||||
// // ],
|
||||
// // ),
|
||||
// // isActive: true,
|
||||
// // state: StepState.complete,
|
||||
// // ),
|
||||
// // Step(
|
||||
// // title: Text('Step 4: QUERY DOCUMENT REQUIRED'),
|
||||
// // content: Text('Query Received Date: 05-05-2025'),
|
||||
// // isActive: true,
|
||||
// // state: StepState.complete,
|
||||
// // ),
|
||||
// // Step(
|
||||
// // title: Text('Step 5: APPROVED'),
|
||||
// // content: Column(
|
||||
// // crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// // children: [
|
||||
// // Text('Approved Amount: 4315440'),
|
||||
// // Text('Approved Date: 05-05-2025'),
|
||||
// // Text('Approved Letter: Lorem ipsum...'),
|
||||
// // Text('Description: Lorem ipsum...'),
|
||||
// // ],
|
||||
// // ),
|
||||
// // isActive: true,
|
||||
// // state: StepState.complete,
|
||||
// // ),
|
||||
// // ],
|
||||
// // ),
|
||||
// // )
|
||||
// )
|
||||
// Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: List.generate(5, (index) {
|
||||
@ -282,6 +287,25 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
|
||||
// );
|
||||
// }),
|
||||
// )
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: List.generate(stepKeys.length, (index) {
|
||||
String stepTitleKey = stepKeys[index];
|
||||
Map<String, dynamic> stepData = stepMap[stepTitleKey];
|
||||
|
||||
print('stepTitleKey');
|
||||
print(stepTitleKey);
|
||||
print('stepData');
|
||||
print(stepData);
|
||||
|
||||
return _buildStep(
|
||||
stepNumber: index + 1,
|
||||
title: _getStepTitleFromApi(stepTitleKey, stepData),
|
||||
content: _getStepContentFromApi(stepData),
|
||||
isLast: index == stepKeys.length - 1,
|
||||
);
|
||||
}),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
@ -290,10 +314,12 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
|
||||
|
||||
Widget _buildStep({
|
||||
required int stepNumber,
|
||||
required String title,
|
||||
// required String title,
|
||||
required Widget title,
|
||||
required Widget content,
|
||||
bool isLast = false,
|
||||
}) {
|
||||
print(title);
|
||||
return Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
@ -342,13 +368,7 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
title,
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.w600,
|
||||
fontSize: 15,
|
||||
),
|
||||
),
|
||||
title,
|
||||
SizedBox(height: 8),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
@ -368,52 +388,60 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
|
||||
);
|
||||
}
|
||||
|
||||
String _getStepTitle(int index) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
return 'PAYMENT INITIATED (Nalini – 21–06–2025 / 11:20:02 AM)';
|
||||
case 1:
|
||||
return 'INFORMATION REQUIRED (Nalini – 21–06–2025 / 11:20:02 AM)';
|
||||
case 2:
|
||||
return 'UNDER PROCESS – CLAIM NO. UPDATION (Nalini – 21–06–2025 / 11:20:02 AM)';
|
||||
case 3:
|
||||
return 'UNDER PROCESS – QUERY DOCUMENT REQUIRED (Nalini – 21–06–2025 / 11:20:02 AM)';
|
||||
case 4:
|
||||
return 'APPROVED (Nalini – 21–06–2025 / 11:20:02 AM)';
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
// String _getStepTitleFromApi(String status, Map<String, dynamic> data) {
|
||||
// final modifiedBy = data['modified_by'] ?? '';
|
||||
// final modifiedAt = data['modified_at'] ?? '';
|
||||
// return '$status ($modifiedBy – $modifiedAt)';
|
||||
// }
|
||||
|
||||
|
||||
Widget _getStepTitleFromApi(String status, Map<String, dynamic> data) {
|
||||
final modifiedBy = data['modified_by'] ?? '';
|
||||
final modifiedAt = data['modified_at'] ?? '';
|
||||
|
||||
return RichText(
|
||||
text: TextSpan(
|
||||
children: [
|
||||
TextSpan(
|
||||
text: status,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: 15,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF212120), // Status color
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
text: ' ($modifiedBy – $modifiedAt)',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF565656), // Subtitle color
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _getStepContent(int index) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
return Text('Pay Initiate Date: 05-05-2025');
|
||||
case 1:
|
||||
return Text('Raised Date: 05-05-2025');
|
||||
case 2:
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text('Claim Number: 4315440'),
|
||||
Text('Registration Date: 05-05-2025'),
|
||||
],
|
||||
);
|
||||
case 3:
|
||||
return Text('Query Received Date: 05-05-2025');
|
||||
case 4:
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text('Approved Amount: 4315440'),
|
||||
Text('Approved Date: 05-05-2025'),
|
||||
Text('Approved Letter: Lorem ipsum...'),
|
||||
Text('Description: Lorem ipsum...'),
|
||||
],
|
||||
);
|
||||
default:
|
||||
return SizedBox.shrink();
|
||||
}
|
||||
|
||||
Widget _getStepContentFromApi(Map<String, dynamic> data) {
|
||||
List<Widget> rows = [];
|
||||
|
||||
data.forEach((key, value) {
|
||||
// Skip metadata fields
|
||||
if (key == 'modified_by' || key == 'modified_at') return;
|
||||
|
||||
String displayName = value['display_name'] ?? key;
|
||||
String displayValue = value['display_value'] ?? 'N/A';
|
||||
|
||||
rows.add(_buildHistoryListData(displayName, displayValue));
|
||||
rows.add(SizedBox(height: 6));
|
||||
});
|
||||
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: rows,
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildKeyValue(String title, String value) {
|
||||
@ -424,29 +452,75 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
|
||||
children: [
|
||||
Text(
|
||||
title,
|
||||
style: TextStyle(
|
||||
color: Colors.grey[600],
|
||||
fontSize: 14,
|
||||
style: GoogleFonts.poppins(
|
||||
color: Color(0xFF747474),
|
||||
fontWeight: FontWeight.w400,
|
||||
fontSize: 16,
|
||||
),
|
||||
),
|
||||
SizedBox(height: 4),
|
||||
Text(
|
||||
displayValue,
|
||||
style: TextStyle(
|
||||
color: Colors.black,
|
||||
style: GoogleFonts.poppins(
|
||||
color: Color(0xFF000000),
|
||||
fontWeight: FontWeight.w500,
|
||||
fontSize: 15,
|
||||
fontSize: 16,
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildHistoryListData(String title, String value) {
|
||||
final displayValue =
|
||||
(value == null || value.trim().isEmpty) ? 'N/A' : value;
|
||||
|
||||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 6), // optional spacing
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
// Title - Align to center left
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Text(
|
||||
title,
|
||||
style: GoogleFonts.poppins(
|
||||
color: const Color(0xFF747474),
|
||||
fontWeight: FontWeight.w400,
|
||||
fontSize: 14,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
// Value - Align to center right
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: Text(
|
||||
displayValue,
|
||||
style: GoogleFonts.poppins(
|
||||
color: const Color(0xFF000000),
|
||||
fontWeight: FontWeight.w400,
|
||||
fontSize: 14,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class DottedLinePainter extends CustomPainter {
|
||||
@override
|
||||
void paint(Canvas canvas, Size size) {
|
||||
const dashHeight = 4.0;
|
||||
const dashHeight = 2.0;
|
||||
const dashSpace = 3.0;
|
||||
double startY = 0;
|
||||
final paint = Paint()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user