From 4a7ca9cd46225f69272e9be535298cfa625f73b0 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 20 Aug 2023 12:19:18 +0300 Subject: [PATCH] InPatient advance payment history implemented --- lib/config/config.dart | 4 + ...atient_advance_history_response_model.dart | 71 +++++++++++++++ .../inpatient_paid_advance_payment.dart | 91 ++++++++++++++++++- .../inpatient_advance_payment.dart | 5 +- .../clinic_services/get_clinic_service.dart | 14 +++ 5 files changed, 182 insertions(+), 3 deletions(-) create mode 100644 lib/models/InPatientServices/get_inpatient_advance_history_response_model.dart diff --git a/lib/config/config.dart b/lib/config/config.dart index c79bc863..b95cbed6 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -608,6 +608,8 @@ var CHECK_IF_INPATIENT = 'Services/Patients.svc/REST/GetInPatientAdmissionInfo'; var CHECK_IF_PATIENT_ADMITTED = 'Services/Inps.svc/REST/checkIsPatientAdmittedOrAdmissionRequest'; + + // Get General Instructions API var GET_GENERAL_INSTRUCTIONS = 'Services/INPs.svc/REST/getGeneralInstructions'; @@ -616,6 +618,8 @@ var GET_MEDICAL_INSTRUCTIONS = 'Services/INPs.svc/REST/getPatientAdmissionReques var GET_INPATIENT_ADVANCE_PAYMENT_REQUESTS = 'Services/INPs.svc/REST/getInpatientAdvancePendingPayment'; +var GET_INPATIENT_PAID_ADVANCE_PAYMENT = 'Services/INPs.svc/REST/getInpatientAdvanceHistory'; + var GET_INPATIENT_ADVANCE_PAYMENT_LINK = 'Services/PayFort_Serv.svc/REST/InsertInPatientAdvanceDetails'; var INSERT_INPATIENT_ORDER = 'Services/INPs.svc/REST/Inpcp_insertOrder'; diff --git a/lib/models/InPatientServices/get_inpatient_advance_history_response_model.dart b/lib/models/InPatientServices/get_inpatient_advance_history_response_model.dart new file mode 100644 index 00000000..fcc42771 --- /dev/null +++ b/lib/models/InPatientServices/get_inpatient_advance_history_response_model.dart @@ -0,0 +1,71 @@ +class InPatientAdvanceHistoryResponseModel { + int advanceNumber; + int errorCode; + String message; + List responseInpatientAdvanceInfo; + int statusCode; + + InPatientAdvanceHistoryResponseModel({this.advanceNumber, this.errorCode, this.message, this.responseInpatientAdvanceInfo, this.statusCode}); + + InPatientAdvanceHistoryResponseModel.fromJson(Map json) { + advanceNumber = json['advanceNumber']; + errorCode = json['errorCode']; + message = json['message']; + if (json['responseInpatientAdvanceInfo'] != null) { + responseInpatientAdvanceInfo = []; + json['responseInpatientAdvanceInfo'].forEach((v) { + responseInpatientAdvanceInfo.add(new ResponseInpatientAdvanceInfo.fromJson(v)); + }); + } + statusCode = json['statusCode']; + } + + Map toJson() { + final Map data = new Map(); + data['advanceNumber'] = this.advanceNumber; + data['errorCode'] = this.errorCode; + data['message'] = this.message; + if (this.responseInpatientAdvanceInfo != null) { + data['responseInpatientAdvanceInfo'] = this.responseInpatientAdvanceInfo.map((v) => v.toJson()).toList(); + } + data['statusCode'] = this.statusCode; + return data; + } +} + +class ResponseInpatientAdvanceInfo { + int admissionNo; + int admissionReqNo; + String createdOn; + int patientId; + int projectId; + num requestedAmount; + String setupId; + int status; + + ResponseInpatientAdvanceInfo({this.admissionNo, this.admissionReqNo, this.createdOn, this.patientId, this.projectId, this.requestedAmount, this.setupId, this.status}); + + ResponseInpatientAdvanceInfo.fromJson(Map json) { + admissionNo = json['admissionNo']; + admissionReqNo = json['admissionReqNo']; + createdOn = json['createdOn']; + patientId = json['patientId']; + projectId = json['projectId']; + requestedAmount = json['requestedAmount']; + setupId = json['setupId']; + status = json['status']; + } + + Map toJson() { + final Map data = new Map(); + data['admissionNo'] = this.admissionNo; + data['admissionReqNo'] = this.admissionReqNo; + data['createdOn'] = this.createdOn; + data['patientId'] = this.patientId; + data['projectId'] = this.projectId; + data['requestedAmount'] = this.requestedAmount; + data['setupId'] = this.setupId; + data['status'] = this.status; + return data; + } +} diff --git a/lib/pages/InPatientServices/components/inpatient_paid_advance_payment.dart b/lib/pages/InPatientServices/components/inpatient_paid_advance_payment.dart index 76a44f75..a4b2949e 100644 --- a/lib/pages/InPatientServices/components/inpatient_paid_advance_payment.dart +++ b/lib/pages/InPatientServices/components/inpatient_paid_advance_payment.dart @@ -1,4 +1,14 @@ +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; +import 'package:diplomaticquarterapp/models/InPatientServices/get_inpatient_advance_history_response_model.dart'; +import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; +import 'package:diplomaticquarterapp/theme/colors.dart'; +import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/uitl/utils_new.dart'; +import 'package:diplomaticquarterapp/widgets/my_rich_text.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class InPatientPaidAdvancePayment extends StatefulWidget { const InPatientPaidAdvancePayment({Key key}) : super(key: key); @@ -8,8 +18,87 @@ class InPatientPaidAdvancePayment extends StatefulWidget { } class _InPatientPaidAdvancePaymentState extends State { + ProjectViewModel projectViewModel; + InPatientAdvanceHistoryResponseModel inPatientAdvanceHistoryResponseModel; + + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addPostFrameCallback((_) { + getInPatientAdvancePaymentHistory(); + }); + } + @override Widget build(BuildContext context) { - return const Placeholder(); + projectViewModel = Provider.of(context); + return Padding( + padding: const EdgeInsets.all(16.0), + child: inPatientAdvanceHistoryResponseModel.responseInpatientAdvanceInfo.isNotEmpty + ? ListView.separated( + itemCount: inPatientAdvanceHistoryResponseModel.responseInpatientAdvanceInfo.length, + itemBuilder: (BuildContext context, int index) { + return Container( + decoration: cardRadius(12), + padding: EdgeInsets.all(12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + MyRichText(TranslationBase.of(context).insuranceCompany + ": ", inPatientAdvanceHistoryResponseModel.responseInpatientAdvanceInfo[index].admissionNo.toString(), + projectViewModel.isArabic), + MyRichText(TranslationBase.of(context).insuranceCompany + ": ", inPatientAdvanceHistoryResponseModel.responseInpatientAdvanceInfo[index].admissionReqNo.toString(), + projectViewModel.isArabic), + MyRichText( + TranslationBase.of(context).date + ": ", + DateUtil.formatDateToDate(DateUtil.convertStringToDate(inPatientAdvanceHistoryResponseModel.responseInpatientAdvanceInfo[index].createdOn), false), + projectViewModel.isArabic), + MyRichText( + TranslationBase.of(context).amount_ + ": ", inPatientAdvanceHistoryResponseModel.responseInpatientAdvanceInfo[index].requestedAmount.toString(), projectViewModel.isArabic), + MyRichText(TranslationBase.of(context).status + ": ", getStatus(inPatientAdvanceHistoryResponseModel.responseInpatientAdvanceInfo[index]), projectViewModel.isArabic), + ], + ), + ); + }, + separatorBuilder: (BuildContext context, int index) { + return Padding( + padding: const EdgeInsets.only(left: 14, right: 14), + child: mDivider(CustomColors.devider), + ); + }, + ) + : getNoDataWidget(context), + ); + } + + String getStatus(ResponseInpatientAdvanceInfo responseInpatientAdvanceInfo) { + switch (responseInpatientAdvanceInfo.status) { + case 1: + return "Hold"; + break; + case 2: + return "Active"; + break; + case 4: + return "Cancelled"; + break; + default: + return ""; + } + } + + void getInPatientAdvancePaymentHistory() { + ClinicListService service = new ClinicListService(); + GifLoaderDialogUtils.showMyDialog(context); + service + .getInPatientAdvancePaymentHistory(projectViewModel.inPatientProjectID, projectViewModel.isPatientAdmitted ? projectViewModel.getAdmissionInfoResponseModel.admissionNo : 0, + projectViewModel.isPatientAdmitted ? projectViewModel.getAdmissionInfoResponseModel.admissionRequestNo : projectViewModel.getAdmissionRequestInfoResponseModel.admissionRequestNo, context) + .then((res) { + GifLoaderDialogUtils.hideDialog(context); + inPatientAdvanceHistoryResponseModel = InPatientAdvanceHistoryResponseModel.fromJson(res["responseInpatient"]); + print(inPatientAdvanceHistoryResponseModel.responseInpatientAdvanceInfo[0].requestedAmount); + }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + print(err); + }); } } diff --git a/lib/pages/InPatientServices/inpatient_advance_payment.dart b/lib/pages/InPatientServices/inpatient_advance_payment.dart index 736d7242..3b6dd929 100644 --- a/lib/pages/InPatientServices/inpatient_advance_payment.dart +++ b/lib/pages/InPatientServices/inpatient_advance_payment.dart @@ -1,5 +1,6 @@ import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/models/InPatientServices/get_inpatient_advance_requests_response_model.dart'; +import 'package:diplomaticquarterapp/pages/InPatientServices/components/inpatient_paid_advance_payment.dart'; import 'package:diplomaticquarterapp/pages/InPatientServices/components/inpatient_pending_advance_payment.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; @@ -58,7 +59,7 @@ class _InPatientAdvancePaymentState extends State with fontWeight: FontWeight.w600, letterSpacing: -0.48, ), - tabs: [Text(TranslationBase.of(context).pending), Text(TranslationBase.of(context).paid)], + tabs: [Text(TranslationBase.of(context).pending), Text(TranslationBase.of(context).history)], ), Expanded( child: TabBarView( @@ -66,7 +67,7 @@ class _InPatientAdvancePaymentState extends State with controller: _tabController, children: [ InPatientPendingAdvancePayment(inPatientAdvanceResponseModel: widget.inPatientAdvanceResponseModel), - Container(), + InPatientPaidAdvancePayment(), ], ), ) diff --git a/lib/services/clinic_services/get_clinic_service.dart b/lib/services/clinic_services/get_clinic_service.dart index f0a0f0f9..4dc4538e 100644 --- a/lib/services/clinic_services/get_clinic_service.dart +++ b/lib/services/clinic_services/get_clinic_service.dart @@ -349,6 +349,20 @@ class ClinicListService extends BaseService { return Future.value(localRes); } + Future getInPatientAdvancePaymentHistory(int projectID, int admissionNo, int admissionReqNo, context) async { + Map request; + request = {"ProjectID": projectID, "AdmissionNo": admissionNo, "AdmissionReqNo": admissionReqNo}; + + dynamic localRes; + + await baseAppClient.post(GET_INPATIENT_PAID_ADVANCE_PAYMENT, onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request, isAllowAny: true); + return Future.value(localRes); + } + Future getCurrentWeekIDAndDay(BuildContext context) async { dynamic localRes; await baseAppClient.get(GET_CURRENT_WEEKID_WEEKDAY, isExternal: false, isRCService: false, onSuccess: (response, statusCode) async {