diff --git a/assets/searchData.jpg b/assets/searchData.jpg new file mode 100644 index 0000000..a1264ae Binary files /dev/null and b/assets/searchData.jpg differ diff --git a/lib/main.dart b/lib/main.dart index e411e19..f190ffd 100755 --- a/lib/main.dart +++ b/lib/main.dart @@ -54,47 +54,44 @@ Future main() async { if (kIsWeb) { await Firebase.initializeApp( options: const FirebaseOptions( - // apiKey: 'AIzaSyC4yHbCX4mQu0jO81pJrDwxKLQlTQWofrc', - // appId: '1:1084115316849:android:68b14c4ff37f4bbc6c6bd0', - // messagingSenderId: '1084115316849', - // projectId: 'nhance-ee8d1' + // apiKey: 'AIzaSyC4yHbCX4mQu0jO81pJrDwxKLQlTQWofrc', + // appId: '1:1084115316849:android:68b14c4ff37f4bbc6c6bd0', + // messagingSenderId: '1084115316849', + // projectId: 'nhance-ee8d1' apiKey: "AIzaSyC4yHbCX4mQu0jO81pJrDwxKLQlTQWofrc", authDomain: "nhance-ee8d1.firebaseapp.com", projectId: "nhance-ee8d1", storageBucket: "nhance-ee8d1.firebasestorage.app", messagingSenderId: "1084115316849", - appId: "1:1084115316849:web:8fc3b1c886349ae86c6bd0" - ) - ); + appId: "1:1084115316849:web:8fc3b1c886349ae86c6bd0")); } else { - await Firebase.initializeApp(); - await FirebaseAppCheck.instance.activate( - // webProvider: ReCaptchaV3Provider('recaptcha-v3-site-key'), - androidProvider: AndroidProvider.playIntegrity, - appleProvider: AppleProvider.appAttest, - ); - FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); + await Firebase.initializeApp(); + await FirebaseAppCheck.instance.activate( + // webProvider: ReCaptchaV3Provider('recaptcha-v3-site-key'), + androidProvider: AndroidProvider.playIntegrity, + appleProvider: AppleProvider.appAttest, + ); + FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); - FirebaseMessaging messaging = FirebaseMessaging.instance; - // NotificationSettings settings = await messaging.requestPermission(); - NotificationSettings settings = await FirebaseMessaging.instance.requestPermission( - alert: true, - badge: true, - sound: true, - ); - print('User granted permission: ${settings.authorizationStatus}'); + FirebaseMessaging messaging = FirebaseMessaging.instance; + // NotificationSettings settings = await messaging.requestPermission(); + NotificationSettings settings = + await FirebaseMessaging.instance.requestPermission( + alert: true, + badge: true, + sound: true, + ); + print('User granted permission: ${settings.authorizationStatus}'); - FirebaseMessaging.onMessage.listen((RemoteMessage message) { - print('Foreground Message: ${message.notification?.title}'); - }); - - FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { - print('User tapped on notification'); - }); + FirebaseMessaging.onMessage.listen((RemoteMessage message) { + print('Foreground Message: ${message.notification?.title}'); + }); + FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { + print('User tapped on notification'); + }); } - await dotenv.load(fileName: Environment.fileName); runApp(MyApp()); @@ -132,7 +129,8 @@ class MyApp extends StatelessWidget { 'claimtracklist': (context) => claimtracklist(), 'privacypolicy': (context) => privacypolicy(), 'termsofuse': (context) => termsofuse(), - 'generalExclusionsDeductibles': (context) => generalExclusionsDeductibles(), + 'generalExclusionsDeductibles': (context) => + generalExclusionsDeductibles(), // 'home': (context) => BotmanScaffold(currentRoute: 'home', child: Home()), // 'policies': (context) => BotmanScaffold(currentRoute: 'policies', child: policies()), // 'claims': (context) => BotmanScaffold(currentRoute: 'claims', child: claims()), @@ -213,4 +211,3 @@ class BotmanScaffold extends StatelessWidget { ); } } - diff --git a/lib/pages/postEnrollment/claims.dart b/lib/pages/postEnrollment/claims.dart index ff7e337..1f2abdd 100755 --- a/lib/pages/postEnrollment/claims.dart +++ b/lib/pages/postEnrollment/claims.dart @@ -14,6 +14,7 @@ import '../../customAppBar/customFooter.dart'; import '../../customAppBar/responsive.dart'; import '../../customAppBar/tabs.dart'; import '../../customAppBar/toastHelper.dart'; +import 'claimshistory.dart'; class claims extends StatefulWidget { const claims({Key? key}) : super(key: key); @@ -76,7 +77,6 @@ class _claimsState extends State { super.dispose(); } - Future _loadToken() async { print('_loadToken'); final SharedPreferences prefs = await SharedPreferences.getInstance(); @@ -107,7 +107,6 @@ class _claimsState extends State { } } - Future getActiveAndInactivePolicyDetails() async { if (client_id == null || empCodeString == null) { return; @@ -120,15 +119,16 @@ class _claimsState extends State { try { // Call both APIs final responseActive = await apiService.getActiveAndInactivePolicyDetails( - client_id!, empCodeString!, 'Active', client_branch_id,mobileNo - ); + client_id!, empCodeString!, 'Active', client_branch_id, mobileNo); - final responseInactive = await apiService.getActiveAndInactivePolicyDetails( - client_id!, empCodeString!, 'Inactive', client_branch_id,mobileNo - ); + final responseInactive = + await apiService.getActiveAndInactivePolicyDetails(client_id!, + empCodeString!, 'Inactive', client_branch_id, mobileNo); - final bool isActiveSuccess = responseActive['status'] == 'success' && responseActive['data'] != null; - final bool isInactiveSuccess = responseInactive['status'] == 'success' && responseInactive['data'] != null; + final bool isActiveSuccess = responseActive['status'] == 'success' && + responseActive['data'] != null; + final bool isInactiveSuccess = responseInactive['status'] == 'success' && + responseInactive['data'] != null; final List> activeData = isActiveSuccess ? List>.from(responseActive['data']) @@ -158,7 +158,6 @@ class _claimsState extends State { } } - Future getTrackClaimsList() async { if (client_id == null || empCodeString == null) { return; @@ -585,7 +584,7 @@ class _claimsState extends State { .isDesktop( context) ? 130 - : 50, + : 30, vertical: Responsive .isDesktop( context) @@ -818,7 +817,9 @@ class _claimsState extends State { fontSize: Responsive.isDesktop(context) ? 18 : 14, fontWeight: FontWeight.w600, - color: policyStatus == 'Active' ? Colors.green : Colors.red, + color: policyStatus == 'Active' + ? Colors.green + : Colors.red, ), ), ], @@ -888,6 +889,7 @@ class _claimsState extends State { itemBuilder: (BuildContext context, int index) { var item = data[index]; // String claimsName = item['user_name']; + String ticketId = item['id'] ?? ''; String claimsSubject = item['subject'] ?? ''; String claimsDate = item['created_at'] ?? ''; String claimStatus = item['claim_status'] ?? ''; @@ -896,6 +898,8 @@ class _claimsState extends State { // List messageList = item['message_list']; print('generateTrackList'); + print('generateTrackList- $data'); + print('generateTrackList- $ticketId'); print(claimsSubject); print(claimsDate); print(claimStatus); @@ -922,7 +926,32 @@ class _claimsState extends State { return GestureDetector( onTap: () { + print("Tappp - $ticketId"); // Navigator.pushNamed(context, 'claimtracklist', arguments: item); + + showDialog( + context: context, + barrierDismissible: true, + builder: (BuildContext context) { + return Dialog( + backgroundColor: Colors.transparent, + insetPadding: EdgeInsets.all(16), + child: ClaimHistoryPopup( + ticket_id: item['id'], + empName: item['emp_name'], // example + empCode: item['emp_code'], // example + policyType: item['ticket_policy_type']!, + // policyType: item['policy_type'], + // clientPolicyNo: item['client_policy_no'], + clientPolicyNo: item['policy_no']?.toString(), + claimAmount: item['claim_amount']?.toString(), + // claimNo: item['claim_no'], + claimNo: item['claim_number']?.toString(), + // postToken: widget.postToken, + ), + ); + }, + ); }, child: MouseRegion( cursor: SystemMouseCursors.click, diff --git a/lib/pages/postEnrollment/claimshistory.dart b/lib/pages/postEnrollment/claimshistory.dart new file mode 100644 index 0000000..0b178b1 --- /dev/null +++ b/lib/pages/postEnrollment/claimshistory.dart @@ -0,0 +1,694 @@ +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:nhance_app_pwa/pages/postEnrollment/service/api_service.dart'; + +import '../../customAppBar/responsive.dart'; + +class ClaimHistoryPopup extends StatefulWidget { + final String ticket_id; + final String empName; + final String empCode; + final String policyType; + final String? clientPolicyNo; + final String? claimAmount; + final String? claimNo; + // final String postToken; + + const ClaimHistoryPopup({ + Key? key, + required this.ticket_id, + required this.empName, + required this.empCode, + required this.policyType, + this.clientPolicyNo, + this.claimAmount, + this.claimNo, + // required this.postToken, + }) : super(key: key); + + @override + State createState() => _ClaimHistoryPopupState(); +} + +class _ClaimHistoryPopupState extends State { + late ApiService apiService; + List> getClaimsHistoryList = []; + List stepKeys = []; + late Map stepMap; + int _index = 4; + bool isLoading = false; + + @override + void initState() { + super.initState(); + apiService = ApiService(context); + // print(widget.postToken); + print("CLAIMHISTORY"); + print(widget.claimAmount); + print(widget.claimNo); + print(widget.clientPolicyNo); + print(widget.empCode); + print(widget.policyType); + print(widget.ticket_id); + getClaimsHistoryDetails(); + } + + @override + void dispose() { + super.dispose(); + } + + Future getClaimsHistoryDetails() async { + setState(() { + isLoading = true; + }); + try { + print('10'); + // final ticketID = widget.ticket_id; + // if (ticketID != '' || ticketID != null) { + // return; + // } + final response = await apiService.getClaimsHistoryToApi(widget.ticket_id); + if (response['status'] == 'success') { + setState(() { + isLoading = false; + print('Claims History List1'); + // final List ticketDataList = response['data']['ticket_data']; + // final Map ticketDataMap = + // response['data']['ticket_data']; + // print('Claims History List12'); + // print('Claims History List1- $ticketDataMap'); + + // getClaimsHistoryList = ticketDataList + // .map((item) => Map.from(item)) + // .toList(); + + // getClaimsHistoryList = ticketDataMap.entries.map((entry) { + // return { + // 'status': entry.key, + // ...Map.from(entry.value), + // }; + // }).toList(); + // + // getClaimsHistoryList = ticketDataMap.entries.map((entry) { + // return { + // 'status': entry.key, + // ...Map.from(entry.value), + // }; + // }).toList(); + + // if (getClaimsHistoryList.isNotEmpty) { + // stepMap = getClaimsHistoryList[0]; + // stepKeys = stepMap.keys.toList(); + // } + + print('Claims History List: $getClaimsHistoryList'); + + getClaimsHistoryList = [ + Map.from(response['data']['ticket_data']) + ]; + stepMap = getClaimsHistoryList[0]; + stepKeys = stepMap.keys.toList(); + + // originalData = getCDPolicies; + // filteredData = List.from(originalData); + // print('filteredData'); + // print(filteredData); + }); + } else { + setState(() { + isLoading = false; + }); + + // ToastHelper.showWarningToast( + // context, 'Request failed with status: ${response.statusCode}'); + print('Request failed with status: ${response['code']}'); + } + } catch (e) { + setState(() { + isLoading = false; + }); + print('Exception occurred: $e'); + } finally { + setState(() { + // _isLoading = false; + }); + } + } + + @override + Widget build(BuildContext context) { + // if (getClaimsHistoryList.isEmpty) { + // return SizedBox( + // height: 50, + // child: Center(child: Text('No available Claims')), + // ); + // } + final keyValueWidgets = [ + _buildKeyValue( + 'Name', + '${widget.empName ?? ''} (${widget.empCode ?? ''})', + ), + SizedBox( + width: Responsive.isDesktop(context) ? 16 : 0, + height: Responsive.isDesktop(context) ? 0 : 8), + _buildKeyValue( + 'Policy Name', + '${widget.policyType ?? ''} - ${widget.clientPolicyNo ?? ''}', + ), + ]; + + final keyValueWidgetRow = [ + _buildKeyValue( + 'Claim Amount', + widget.claimAmount == null || widget.claimAmount!.trim().isEmpty + ? 'N/A' + : '₹${widget.claimAmount}', + ), + SizedBox( + width: Responsive.isDesktop(context) ? 16 : 0, + height: Responsive.isDesktop(context) ? 0 : 8), + _buildKeyValue( + 'Claim Number', + widget.claimNo == null || widget.claimNo!.trim().isEmpty + ? 'N/A' + : widget.claimNo!, + ), + ]; + + return Container( + constraints: BoxConstraints(maxWidth: 800, maxHeight: 800), + padding: EdgeInsets.all(20), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + ), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Expanded( + child: Align( + alignment: Alignment.centerLeft, + child: Text( + 'Claim History', + style: GoogleFonts.poppins( + fontSize: Responsive.isDesktop(context) ? 20 : 16, + fontWeight: FontWeight.w500, + color: Color(0xFF101010), + ), + ), + ), + ), + MouseRegion( + cursor: SystemMouseCursors.click, // Show pointer cursor + child: GestureDetector( + onTap: () => Navigator.of(context).pop(), + child: Container( + height: 30, + width: 30, + decoration: BoxDecoration( + color: Colors.white, + border: Border.all(color: Color(0xFFBCBCBC)), + borderRadius: BorderRadius.circular(6), + ), + child: Icon( + Icons.close, + size: 25, + color: Color(0xFFBCBCBC), + ), + ), + ), + ) + ], + ), + SizedBox(height: Responsive.isDesktop(context) ? 10 : 5), + 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: Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Responsive.isDesktop(context) + ? Row( + children: keyValueWidgets + .map((w) => Expanded(child: w)) + .toList(), + ) + : Container( + width: MediaQuery.of(context).size.width, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: keyValueWidgets), + ), + // Row( + // children: [ + // Expanded( + // child: _buildKeyValue('Name', + // '${widget.empName ?? ''} (${widget.empCode ?? ''})'), + // ), + // SizedBox(width: 16), + // Expanded( + // child: _buildKeyValue('Policy Name', + // '${widget.policyType ?? ''} - ${widget.clientPolicyNo ?? ''}')), + // ], + // ), + SizedBox(height: Responsive.isDesktop(context) ? 16 : 8), + Responsive.isDesktop(context) + ? Row( + children: keyValueWidgetRow + .map((w) => Expanded(child: w)) + .toList(), + ) + : Container( + width: MediaQuery.of(context).size.width, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: keyValueWidgetRow), + ), + ], + ), + ), + ), + 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( + // 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) { + // return _buildStep( + // stepNumber: index + 1, + // title: _getStepTitle(index), + // content: _getStepContent(index), + // isLast: index == 4, + // ); + // }), + // ) + + isLoading + ? Container( + // color: Color(0x98FFFCE5), // Semi-transparent background + child: Center( + child: // Your GIF loader widget + Image.asset( + height: 60, + width: 60, + 'assets/nhance-loader.gif'), // Adjust path to your GIF loader + ), + ) + : Container( + child: getClaimsHistoryList.isNotEmpty + ? Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: List.generate(stepKeys.length, (index) { + String stepTitleKey = stepKeys[index]; + Map 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, + ); + }), + ) + : Container( + height: MediaQuery.of(context).size.height * 0.4, + // color: Colors.red, + child: Center( + child: Column( + children: [ + Image.asset( + 'assets/searchData.jpg', // Replace 'default_image.png' with your default image asset path + width: 200, + height: 200, + fit: BoxFit.cover, + ), + Text( + 'No Claim History', + style: TextStyle( + fontWeight: FontWeight.w500, + fontSize: 15), + ), + ], + )), + ), + ), + ], + ), + ), + ); + } + + Widget _buildStep({ + required int stepNumber, + // required String title, + required Widget title, + required Widget content, + bool isLast = false, + }) { + print(title); + return Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Left Column with circle + line + Column( + children: [ + // Add top spacing before circle + SizedBox(height: stepNumber == 1 ? 0 : 4), + + // Step number circle + Container( + height: 28, + width: 28, + decoration: BoxDecoration( + color: Color(0xFF00A5A8), + shape: BoxShape.circle, + ), + alignment: Alignment.center, + child: Text( + '$stepNumber', + style: TextStyle( + color: Colors.white, + fontSize: Responsive.isDesktop(context) ? 13 : 12, + fontWeight: FontWeight.w600, + ), + ), + ), + + // Dotted line below circle (except for last step) + if (!isLast) + Container( + height: 50, // increase to extend line + width: 2, + margin: EdgeInsets.only(top: 4, bottom: 4), + child: CustomPaint( + painter: DottedLinePainter(), + ), + ), + ], + ), + + SizedBox(width: 12), + + // Right Side: Step title and content + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + title, + SizedBox(height: 8), + Container( + width: double.infinity, + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0xFFF7F7F7), + borderRadius: BorderRadius.circular(8), + border: Border.all(color: Color(0xFFE0E0E0)), + ), + child: content, + ), + SizedBox(height: isLast ? 0 : 16), + ], + ), + ), + ], + ); + } + + // String _getStepTitleFromApi(String status, Map data) { + // final modifiedBy = data['modified_by'] ?? ''; + // final modifiedAt = data['modified_at'] ?? ''; + // return '$status ($modifiedBy – $modifiedAt)'; + // } + + Widget _getStepTitleFromApi(String status, Map data) { + final modifiedBy = data['modified_by'] ?? ''; + final modifiedAt = data['modified_at'] ?? ''; + final isDesktop = Responsive.isDesktop(context); + + return RichText( + text: TextSpan( + children: [ + TextSpan( + text: status + (isDesktop ? ' ' : '\n'), + style: GoogleFonts.poppins( + fontSize: Responsive.isDesktop(context) ? 15 : 11, + fontWeight: FontWeight.w500, + color: Color(0xFF212120), // Status color + ), + ), + TextSpan( + text: ' ($modifiedBy – $modifiedAt)', + style: GoogleFonts.poppins( + fontSize: Responsive.isDesktop(context) ? 14 : 11, + fontWeight: FontWeight.w400, + color: Color(0xFF565656), // Subtitle color + ), + ), + ], + ), + ); + } + + Widget _getStepContentFromApi(Map data) { + List 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: 1)); + }); + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: rows, + ); + } + + Widget _buildKeyValue(String title, String value) { + final displayValue = + (value == null || value.trim().isEmpty) ? 'N/A' : value; + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: GoogleFonts.poppins( + color: Color(0xFF747474), + fontWeight: FontWeight.w400, + fontSize: Responsive.isDesktop(context) ? 16 : 13, + ), + ), + SizedBox(height: 4), + Text( + displayValue, + style: GoogleFonts.poppins( + color: Color(0xFF000000), + fontWeight: FontWeight.w500, + fontSize: Responsive.isDesktop(context) ? 16 : 13, + ), + ), + ], + ); + } + + Widget _buildHistoryListData(String title, String value) { + final displayValue = + (value == null || value.trim().isEmpty) ? 'N/A' : value; + + final titleText = Text( + title, + style: GoogleFonts.poppins( + color: const Color(0xFF747474), + fontWeight: FontWeight.w400, + fontSize: Responsive.isDesktop(context) ? 14 : 12, + ), + ); + + final valueText = Text( + displayValue, + style: GoogleFonts.poppins( + color: const Color(0xFF000000), + fontWeight: FontWeight.w400, + fontSize: Responsive.isDesktop(context) ? 14 : 12, + ), + textAlign: TextAlign.right, + ); + + return Padding( + padding: const EdgeInsets.symmetric(vertical: 1), // optional spacing + child: Responsive.isDesktop(context) + ? Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Expanded( + child: Align( + alignment: Alignment.centerLeft, child: titleText)), + Expanded( + child: Align( + alignment: Alignment.centerRight, child: valueText)), + + // 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, + // ), + // ), + // ), + // ), + ], + ) + : Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + titleText, + SizedBox(height: 4), + valueText, + ], + ), + ); + } +} + +class DottedLinePainter extends CustomPainter { + @override + void paint(Canvas canvas, Size size) { + const dashHeight = 2.0; + const dashSpace = 3.0; + double startY = 0; + final paint = Paint() + ..color = Colors.grey.shade400 + ..strokeWidth = 1; + + while (startY < size.height) { + canvas.drawLine( + Offset(0, startY), + Offset(0, startY + dashHeight), + paint, + ); + startY += dashHeight + dashSpace; + } + } + + @override + bool shouldRepaint(CustomPainter oldDelegate) => false; +} diff --git a/lib/pages/postEnrollment/service/api_service.dart b/lib/pages/postEnrollment/service/api_service.dart index b8683de..1f58061 100755 --- a/lib/pages/postEnrollment/service/api_service.dart +++ b/lib/pages/postEnrollment/service/api_service.dart @@ -19,7 +19,11 @@ class ApiService { } Future> getActiveAndInactivePolicyDetails( - String clientId, String empCode, String status, String branchID,String mobileNo) async { + String clientId, + String empCode, + String status, + String branchID, + String mobileNo) async { print(_token); if (_token == null) { await _initializeToken(); @@ -33,6 +37,19 @@ class ApiService { return response; } + Future> getClaimsHistoryToApi( + String ticket_type_id) async { + print("getCashDepositDetailsToApi1"); + final url = + Uri.parse('${Environment.apiUrl}claimView?ticket_id=$ticket_type_id'); + + final headers = { + 'Authorization': 'Bearer $_token' ?? '', + }; + final response = await _makeGetRequest(url, headers); + return response; + } + Future> getAdvertisementImageToApi() async { print(_token); if (_token == null) { diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 35427fa..7ba8699 100755 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -25,7 +25,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin")) - FLALocalAuthPlugin.register(with: registry.registrar(forPlugin: "FLALocalAuthPlugin")) + LocalAuthPlugin.register(with: registry.registrar(forPlugin: "LocalAuthPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))