diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index 42facf90..a628f8e2 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -410,6 +410,7 @@ class URLs { static get getLoanById => '$_baseUrl/Loan/GetLoanById'; static get getIncidentById => '$_baseUrl/Incident/GetIncidentById'; + static get getOvrTicketDetails => '$_baseUrl/Incident/GetOvrTicketDetails'; static get addLoan => '$_baseUrl/Loan/AddLoan'; static get addIncident => '$_baseUrl/Incident/AddIncident'; diff --git a/lib/modules/incident_module/create_incident_request_page.dart b/lib/modules/incident_module/create_incident_request_page.dart index e8790342..995dc70f 100644 --- a/lib/modules/incident_module/create_incident_request_page.dart +++ b/lib/modules/incident_module/create_incident_request_page.dart @@ -76,6 +76,7 @@ class _CreateIncidentRequestPageState extends State { @override void initState() { super.initState(); + ovrSystem = Lookup(id: 81, name: "No", value: 0); payload["id"] = 0; payload["isFromMobile"] = true; payload["requestorUserId"] = context.userProvider.user!.userID; diff --git a/lib/modules/incident_module/incident_detail_page.dart b/lib/modules/incident_module/incident_detail_page.dart index 2b7f43ef..2484a9e9 100644 --- a/lib/modules/incident_module/incident_detail_page.dart +++ b/lib/modules/incident_module/incident_detail_page.dart @@ -39,59 +39,58 @@ class IncidentDetailPage extends StatelessWidget { Widget build(BuildContext context) { return Scaffold( appBar: const DefaultAppBar(title: "Request Details"), - body: SafeArea( - child: FutureBuilder( - future: Provider.of(context, listen: false).getIncidentById(incidentId), - builder: (BuildContext context, AsyncSnapshot snapshot) { - if (snapshot.connectionState == ConnectionState.waiting) return const CircularProgressIndicator(color: AppColor.primary10).center; - if (snapshot.data == null) return const NoDataFound().center; - - List allAttachments = snapshot.data!.incidentAttachments!; - - return ListView( - padding: const EdgeInsets.all(16), - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - StatusLabel( - label: snapshot.data!.incidentStatusName!, - textColor: AppColor.getRequestStatusTextColorByName(context, snapshot.data!.incidentStatusName!), - backgroundColor: AppColor.getRequestStatusColorByName(context, snapshot.data!.incidentStatusName!), - ), - 1.width.expanded, - Text( - snapshot.data!.createdDate?.toServiceRequestCardFormat ?? "-", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), - ], - ), - 12.height, - ...requesterDetails(context, snapshot.data!), - const Divider().defaultStyle(context), - ...requestDetails(context, snapshot.data!), - const Divider().defaultStyle(context), - ...assetDetails(context, snapshot.data!), - const Divider().defaultStyle(context), - ...personInvolvedDetails(context, snapshot.data!), - if (allAttachments.isNotEmpty) ...[ - const Divider().defaultStyle(context), + body: FutureBuilder( + future: Provider.of(context, listen: false).getIncidentById(incidentId), + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) return const CircularProgressIndicator(color: AppColor.primary10).center; + if (snapshot.data == null) return const NoDataFound().center; + + List allAttachments = snapshot.data!.incidentAttachments!; + + return ListView( + padding: const EdgeInsets.all(16), + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + StatusLabel( + label: snapshot.data!.incidentStatusName!, + textColor: AppColor.getRequestStatusTextColorByName(context, snapshot.data!.incidentStatusName!), + backgroundColor: AppColor.getRequestStatusColorByName(context, snapshot.data!.incidentStatusName!), + ), + 1.width.expanded, Text( - "Attachments".addTranslation, - style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), + snapshot.data!.createdDate?.toServiceRequestCardFormat ?? "-", + textAlign: TextAlign.end, + style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), ), - FilesList(images: allAttachments.map((e) => URLs.getFileUrl(e.attachmentName ?? '') ?? '').toList() ?? []), ], + ), + 12.height, + ...requesterDetails(context, snapshot.data!), + const Divider().defaultStyle(context), + ...requestDetails(context, snapshot.data!), + if (snapshot.data!.ovrTicketNumber?.isNotEmpty ?? false) ovrInformation(context, snapshot.data!.ovrTicketNumber!), + const Divider().defaultStyle(context), + ...assetDetails(context, snapshot.data!), + const Divider().defaultStyle(context), + ...personInvolvedDetails(context, snapshot.data!), + if (allAttachments.isNotEmpty) ...[ + const Divider().defaultStyle(context), + Text( + "Attachments".addTranslation, + style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), + ), + FilesList(images: allAttachments.map((e) => URLs.getFileUrl(e.attachmentName ?? '') ?? '').toList() ?? []), ], - ).toShadowContainer(context, padding: 12), - ], - ); - }), - )); + ], + ).toShadowContainer(context, padding: 12), + ], + ); + })); } List requestDetails(BuildContext context, IncidentDataModel incidentData) { @@ -113,6 +112,29 @@ class IncidentDetailPage extends StatelessWidget { ]; } + Widget ovrInformation(BuildContext context, String ovrNumber) { + return FutureBuilder?>( + future: Provider.of(context, listen: false).getOvrTicketDetails(ovrNumber), + builder: (BuildContext context, AsyncSnapshot?> snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) return const CircularProgressIndicator(color: AppColor.primary10).center; + if (snapshot.data == null) return const NoDataFound().center; + + Map? data = snapshot.data; + if (data == null) return const SizedBox(); + List keysList = data.keys.toList(); + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Divider().defaultStyle(context), + Text("OVR Ticket Information", style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)), + 'OVR Ticket Number: $ovrNumber'.bodyText(context), + for (int i = 0; i < keysList.length; i++) '${keysList[i]}: ${data[keysList[i]] ?? "-"}'.bodyText(context), + ], + ); + }); + } + List personInvolvedDetails(BuildContext context, IncidentDataModel incidentData) { return [ Text("Person Involved Information", style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)), diff --git a/lib/modules/incident_module/incident_provider.dart b/lib/modules/incident_module/incident_provider.dart index bb692016..93f29939 100644 --- a/lib/modules/incident_module/incident_provider.dart +++ b/lib/modules/incident_module/incident_provider.dart @@ -37,4 +37,16 @@ class IncidentProvider extends ChangeNotifier { } return loanData; } + + Future?> getOvrTicketDetails(String ticketNumber) async { + try { + Response response = await ApiManager.instance.post(URLs.getOvrTicketDetails, body: {"ticketNumber": ticketNumber}, showToast: false); + if (response.statusCode >= 200 && response.statusCode < 300) { + return json.decode(response.body)["data"]; + } + } catch (error) { + print(error); + } + return null; + } }