insurance card and insurance update and insurance approval
parent
20ab170e7a
commit
492cfa084b
@ -0,0 +1,72 @@
|
|||||||
|
class ReauestInsuranceApprovalModel {
|
||||||
|
double versionID;
|
||||||
|
int channel;
|
||||||
|
int languageID;
|
||||||
|
String iPAdress;
|
||||||
|
String generalid;
|
||||||
|
int patientOutSA;
|
||||||
|
String sessionID;
|
||||||
|
bool isDentalAllowedBackend;
|
||||||
|
int deviceTypeID;
|
||||||
|
int patientID;
|
||||||
|
String tokenID;
|
||||||
|
int patientTypeID;
|
||||||
|
int patientType;
|
||||||
|
int eXuldAPPNO;
|
||||||
|
int projectID;
|
||||||
|
|
||||||
|
ReauestInsuranceApprovalModel(
|
||||||
|
{this.versionID,
|
||||||
|
this.channel,
|
||||||
|
this.languageID,
|
||||||
|
this.iPAdress,
|
||||||
|
this.generalid,
|
||||||
|
this.patientOutSA,
|
||||||
|
this.sessionID,
|
||||||
|
this.isDentalAllowedBackend,
|
||||||
|
this.deviceTypeID,
|
||||||
|
this.patientID,
|
||||||
|
this.tokenID,
|
||||||
|
this.patientTypeID,
|
||||||
|
this.patientType,
|
||||||
|
this.eXuldAPPNO,
|
||||||
|
this.projectID});
|
||||||
|
|
||||||
|
ReauestInsuranceApprovalModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
versionID = json['VersionID'];
|
||||||
|
channel = json['Channel'];
|
||||||
|
languageID = json['LanguageID'];
|
||||||
|
iPAdress = json['IPAdress'];
|
||||||
|
generalid = json['generalid'];
|
||||||
|
patientOutSA = json['PatientOutSA'];
|
||||||
|
sessionID = json['SessionID'];
|
||||||
|
isDentalAllowedBackend = json['isDentalAllowedBackend'];
|
||||||
|
deviceTypeID = json['DeviceTypeID'];
|
||||||
|
patientID = json['PatientID'];
|
||||||
|
tokenID = json['TokenID'];
|
||||||
|
patientTypeID = json['PatientTypeID'];
|
||||||
|
patientType = json['PatientType'];
|
||||||
|
eXuldAPPNO = json['EXuldAPPNO'];
|
||||||
|
projectID = json['ProjectID'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['VersionID'] = this.versionID;
|
||||||
|
data['Channel'] = this.channel;
|
||||||
|
data['LanguageID'] = this.languageID;
|
||||||
|
data['IPAdress'] = this.iPAdress;
|
||||||
|
data['generalid'] = this.generalid;
|
||||||
|
data['PatientOutSA'] = this.patientOutSA;
|
||||||
|
data['SessionID'] = this.sessionID;
|
||||||
|
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
|
||||||
|
data['DeviceTypeID'] = this.deviceTypeID;
|
||||||
|
data['PatientID'] = this.patientID;
|
||||||
|
data['TokenID'] = this.tokenID;
|
||||||
|
data['PatientTypeID'] = this.patientTypeID;
|
||||||
|
data['PatientType'] = this.patientType;
|
||||||
|
data['EXuldAPPNO'] = this.eXuldAPPNO;
|
||||||
|
data['ProjectID'] = this.projectID;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,129 @@
|
|||||||
|
class InsuranceApprovalDetails {
|
||||||
|
String procedureName;
|
||||||
|
String status;
|
||||||
|
String isInvoicedDesc;
|
||||||
|
|
||||||
|
InsuranceApprovalDetails({
|
||||||
|
this.procedureName,
|
||||||
|
this.status,
|
||||||
|
this.isInvoicedDesc,
|
||||||
|
});
|
||||||
|
|
||||||
|
InsuranceApprovalDetails.fromJson(Map<String, dynamic> json) {
|
||||||
|
try {
|
||||||
|
isInvoicedDesc = json['IsInvoicedDesc'];
|
||||||
|
status = json['Status'];
|
||||||
|
procedureName = json['ProcedureName'];
|
||||||
|
} catch (e) {
|
||||||
|
print(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class InsuranceApprovalModel {
|
||||||
|
InsuranceApprovalDetails approvalDetails;
|
||||||
|
double versionID;
|
||||||
|
int channel;
|
||||||
|
int languageID;
|
||||||
|
String iPAdress;
|
||||||
|
String generalid;
|
||||||
|
int patientOutSA;
|
||||||
|
String sessionID;
|
||||||
|
bool isDentalAllowedBackend;
|
||||||
|
int deviceTypeID;
|
||||||
|
int patientID;
|
||||||
|
String tokenID;
|
||||||
|
int patientTypeID;
|
||||||
|
int patientType;
|
||||||
|
int eXuldAPPNO;
|
||||||
|
int projectID;
|
||||||
|
String doctorName;
|
||||||
|
String clinicName;
|
||||||
|
String patientDescription;
|
||||||
|
int approvalNo;
|
||||||
|
String approvalStatusDescption;
|
||||||
|
int unUsedCount;
|
||||||
|
//String companyName;
|
||||||
|
String expiryDate;
|
||||||
|
String rceiptOn;
|
||||||
|
|
||||||
|
InsuranceApprovalModel(
|
||||||
|
{this.versionID,
|
||||||
|
this.channel,
|
||||||
|
this.languageID,
|
||||||
|
this.iPAdress,
|
||||||
|
this.generalid,
|
||||||
|
this.patientOutSA,
|
||||||
|
this.sessionID,
|
||||||
|
this.isDentalAllowedBackend,
|
||||||
|
this.deviceTypeID,
|
||||||
|
this.patientID,
|
||||||
|
this.tokenID,
|
||||||
|
this.patientTypeID,
|
||||||
|
this.patientType,
|
||||||
|
this.eXuldAPPNO,
|
||||||
|
this.projectID,
|
||||||
|
this.doctorName,
|
||||||
|
this.clinicName,
|
||||||
|
this.patientDescription,
|
||||||
|
this.approvalNo,
|
||||||
|
this.approvalStatusDescption,
|
||||||
|
this.unUsedCount,
|
||||||
|
//this.companyName,
|
||||||
|
this.expiryDate,
|
||||||
|
this.rceiptOn,
|
||||||
|
this.approvalDetails});
|
||||||
|
InsuranceApprovalDetails x = InsuranceApprovalDetails();
|
||||||
|
InsuranceApprovalModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
try {
|
||||||
|
rceiptOn = json['ReceiptOn'];
|
||||||
|
expiryDate = json['ExpiryDate'];
|
||||||
|
//companyName = json['CompanyName'];
|
||||||
|
unUsedCount = json['TotaUnUsedCount'];
|
||||||
|
approvalStatusDescption = json['ApprovalStatusDescption'];
|
||||||
|
approvalNo = json['ApprovalNo'];
|
||||||
|
patientDescription = json['IsInOutPatientDescription'];
|
||||||
|
versionID = json['VersionID'];
|
||||||
|
channel = json['Channel'];
|
||||||
|
languageID = json['LanguageID'];
|
||||||
|
iPAdress = json['IPAdress'];
|
||||||
|
generalid = json['generalid'];
|
||||||
|
patientOutSA = json['PatientOutSA'];
|
||||||
|
sessionID = json['SessionID'];
|
||||||
|
isDentalAllowedBackend = json['isDentalAllowedBackend'];
|
||||||
|
deviceTypeID = json['DeviceTypeID'];
|
||||||
|
patientID = json['PatientID'];
|
||||||
|
tokenID = json['TokenID'];
|
||||||
|
patientTypeID = json['PatientTypeID'];
|
||||||
|
patientType = json['PatientType'];
|
||||||
|
eXuldAPPNO = json['EXuldAPPNO'];
|
||||||
|
projectID = json['ProjectID'];
|
||||||
|
doctorName = json['DoctorName'];
|
||||||
|
clinicName = json['ClinicName'];
|
||||||
|
approvalDetails =
|
||||||
|
InsuranceApprovalDetails.fromJson(json['ApporvalDetails'][0]);
|
||||||
|
} catch (e) {
|
||||||
|
print(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['VersionID'] = this.versionID;
|
||||||
|
data['Channel'] = this.channel;
|
||||||
|
data['LanguageID'] = this.languageID;
|
||||||
|
data['IPAdress'] = this.iPAdress;
|
||||||
|
data['generalid'] = this.generalid;
|
||||||
|
data['PatientOutSA'] = this.patientOutSA;
|
||||||
|
data['SessionID'] = this.sessionID;
|
||||||
|
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
|
||||||
|
data['DeviceTypeID'] = this.deviceTypeID;
|
||||||
|
data['PatientID'] = this.patientID;
|
||||||
|
data['TokenID'] = this.tokenID;
|
||||||
|
data['PatientTypeID'] = this.patientTypeID;
|
||||||
|
data['PatientType'] = this.patientType;
|
||||||
|
data['EXuldAPPNO'] = this.eXuldAPPNO;
|
||||||
|
data['ProjectID'] = this.projectID;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,90 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
class InsuranceCardModel {
|
||||||
|
double versionID;
|
||||||
|
int channel;
|
||||||
|
int languageID;
|
||||||
|
String iPAdress;
|
||||||
|
String generalid;
|
||||||
|
int patientOutSA;
|
||||||
|
String sessionID;
|
||||||
|
bool isDentalAllowedBackend;
|
||||||
|
int deviceTypeID;
|
||||||
|
int patientID;
|
||||||
|
String tokenID;
|
||||||
|
int patientTypeID;
|
||||||
|
int patientType;
|
||||||
|
String groupName;
|
||||||
|
String companyName;
|
||||||
|
String subCategoryDesc;
|
||||||
|
String patientCardID;
|
||||||
|
String insurancePolicyNumber;
|
||||||
|
bool isActive;
|
||||||
|
String cardValidTo;
|
||||||
|
|
||||||
|
InsuranceCardModel({
|
||||||
|
this.insurancePolicyNumber,
|
||||||
|
this.subCategoryDesc,
|
||||||
|
this.versionID,
|
||||||
|
this.channel,
|
||||||
|
this.languageID,
|
||||||
|
this.iPAdress,
|
||||||
|
this.generalid,
|
||||||
|
this.patientOutSA,
|
||||||
|
this.sessionID,
|
||||||
|
this.isDentalAllowedBackend,
|
||||||
|
this.deviceTypeID,
|
||||||
|
this.patientID,
|
||||||
|
this.tokenID,
|
||||||
|
this.patientTypeID,
|
||||||
|
this.patientType,
|
||||||
|
this.groupName,
|
||||||
|
this.companyName,
|
||||||
|
this.patientCardID,
|
||||||
|
this.isActive,
|
||||||
|
this.cardValidTo,
|
||||||
|
});
|
||||||
|
|
||||||
|
InsuranceCardModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
isActive = json['IsActive'];
|
||||||
|
insurancePolicyNumber = json['InsurancePolicyNo'];
|
||||||
|
patientCardID = json['PatientCardID'];
|
||||||
|
companyName = json['CompanyName'];
|
||||||
|
groupName = json['GroupName'];
|
||||||
|
versionID = json['VersionID'];
|
||||||
|
channel = json['Channel'];
|
||||||
|
languageID = json['LanguageID'];
|
||||||
|
iPAdress = json['IPAdress'];
|
||||||
|
generalid = json['generalid'];
|
||||||
|
patientOutSA = json['PatientOutSA'];
|
||||||
|
sessionID = json['SessionID'];
|
||||||
|
isDentalAllowedBackend = json['isDentalAllowedBackend'];
|
||||||
|
deviceTypeID = json['DeviceTypeID'];
|
||||||
|
patientID = json['PatientID'];
|
||||||
|
tokenID = json['TokenID'];
|
||||||
|
patientTypeID = json['PatientTypeID'];
|
||||||
|
patientType = json['PatientType'];
|
||||||
|
subCategoryDesc = json['SubCategoryDesc'];
|
||||||
|
cardValidTo = json['CardValidTo'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
|
||||||
|
data['VersionID'] = this.versionID;
|
||||||
|
data['Channel'] = this.channel;
|
||||||
|
data['LanguageID'] = this.languageID;
|
||||||
|
data['IPAdress'] = this.iPAdress;
|
||||||
|
data['generalid'] = this.generalid;
|
||||||
|
data['PatientOutSA'] = this.patientOutSA;
|
||||||
|
data['SessionID'] = this.sessionID;
|
||||||
|
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
|
||||||
|
data['DeviceTypeID'] = this.deviceTypeID;
|
||||||
|
data['PatientID'] = this.patientID;
|
||||||
|
data['TokenID'] = this.tokenID;
|
||||||
|
data['PatientTypeID'] = this.patientTypeID;
|
||||||
|
data['PatientType'] = this.patientType;
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
|
class InsuranceUpdateModel {
|
||||||
|
int patientID;
|
||||||
|
int patientType;
|
||||||
|
double versionID;
|
||||||
|
int channel;
|
||||||
|
int languageID;
|
||||||
|
String iPAdress;
|
||||||
|
String generalid;
|
||||||
|
int patientOutSA;
|
||||||
|
String sessionID;
|
||||||
|
bool isDentalAllowedBackend;
|
||||||
|
int deviceTypeID;
|
||||||
|
String createdOn;
|
||||||
|
String statusDescription;
|
||||||
|
|
||||||
|
InsuranceUpdateModel(
|
||||||
|
{this.patientID,
|
||||||
|
this.patientType,
|
||||||
|
this.versionID,
|
||||||
|
this.channel,
|
||||||
|
this.languageID,
|
||||||
|
this.iPAdress,
|
||||||
|
this.generalid,
|
||||||
|
this.patientOutSA,
|
||||||
|
this.sessionID,
|
||||||
|
this.isDentalAllowedBackend,
|
||||||
|
this.deviceTypeID,
|
||||||
|
this.createdOn,
|
||||||
|
this.statusDescription});
|
||||||
|
|
||||||
|
InsuranceUpdateModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
statusDescription = json['StatusDescription'];
|
||||||
|
patientID = json['PatientID'];
|
||||||
|
patientType = json['PatientType'];
|
||||||
|
versionID = json['VersionID'];
|
||||||
|
channel = json['Channel'];
|
||||||
|
languageID = json['LanguageID'];
|
||||||
|
iPAdress = json['IPAdress'];
|
||||||
|
generalid = json['generalid'];
|
||||||
|
patientOutSA = json['PatientOutSA'];
|
||||||
|
sessionID = json['SessionID'];
|
||||||
|
isDentalAllowedBackend = json['isDentalAllowedBackend'];
|
||||||
|
deviceTypeID = json['DeviceTypeID'];
|
||||||
|
createdOn = json['CreatedOn'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['PatientID'] = this.patientID;
|
||||||
|
data['PatientType'] = this.patientType;
|
||||||
|
data['VersionID'] = this.versionID;
|
||||||
|
data['Channel'] = this.channel;
|
||||||
|
data['LanguageID'] = this.languageID;
|
||||||
|
data['IPAdress'] = this.iPAdress;
|
||||||
|
data['generalid'] = this.generalid;
|
||||||
|
data['PatientOutSA'] = this.patientOutSA;
|
||||||
|
data['SessionID'] = this.sessionID;
|
||||||
|
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
|
||||||
|
data['DeviceTypeID'] = this.deviceTypeID;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,112 @@
|
|||||||
|
import 'package:diplomaticquarterapp/config/config.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/insurance/insurance_card.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/service/base_service.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/insurance/insurance_card_update.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/insurance/insurance_approval.dart';
|
||||||
|
|
||||||
|
class InsuranceCardService extends BaseService {
|
||||||
|
List<InsuranceCardModel> _cardList = List();
|
||||||
|
List<InsuranceUpdateModel> _cardUpdated = List();
|
||||||
|
List<InsuranceApprovalModel> _insuranceApproval = List();
|
||||||
|
|
||||||
|
List<InsuranceCardModel> get cardList => _cardList;
|
||||||
|
List<InsuranceUpdateModel> get updatedCard => _cardUpdated;
|
||||||
|
List<InsuranceApprovalModel> get insuranceApproval => _insuranceApproval;
|
||||||
|
|
||||||
|
clearInsuranceCard() {
|
||||||
|
_cardList.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
clearUpdatedList() {
|
||||||
|
_cardUpdated.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
InsuranceCardModel _insuranceCardModel = InsuranceCardModel(
|
||||||
|
channel: 3,
|
||||||
|
deviceTypeID: 2,
|
||||||
|
generalid: "Cs2020@2016\$2958",
|
||||||
|
iPAdress: "10.20.10.20",
|
||||||
|
isDentalAllowedBackend: false,
|
||||||
|
languageID: 1,
|
||||||
|
patientID: 1231755,
|
||||||
|
patientOutSA: 0,
|
||||||
|
patientType: 1,
|
||||||
|
patientTypeID: 1,
|
||||||
|
sessionID: "uoKFXSLUwEaHYPwKZNA",
|
||||||
|
tokenID: "@dm!n",
|
||||||
|
versionID: 5.5,
|
||||||
|
);
|
||||||
|
|
||||||
|
InsuranceUpdateModel _insuranceUpdateModel = InsuranceUpdateModel(
|
||||||
|
channel: 3,
|
||||||
|
deviceTypeID: 2,
|
||||||
|
generalid: "Cs2020@2016\$2958",
|
||||||
|
iPAdress: "10.20.10.20",
|
||||||
|
isDentalAllowedBackend: false,
|
||||||
|
patientID: 1231755,
|
||||||
|
patientType: 1,
|
||||||
|
versionID: 5.5,
|
||||||
|
languageID: 2,
|
||||||
|
patientOutSA: 0,
|
||||||
|
sessionID: "ENRSJBKXnzCuuVQ",
|
||||||
|
);
|
||||||
|
|
||||||
|
InsuranceApprovalModel _insuranceApprovalModel = InsuranceApprovalModel(
|
||||||
|
versionID: 5.5,
|
||||||
|
channel: 3,
|
||||||
|
languageID: 2,
|
||||||
|
iPAdress: "10.20.10.20",
|
||||||
|
generalid: "Cs2020@2016\$2958",
|
||||||
|
patientOutSA: 0,
|
||||||
|
sessionID: "DypNmtMkivzURHjeYg",
|
||||||
|
isDentalAllowedBackend: false,
|
||||||
|
deviceTypeID: 2,
|
||||||
|
patientID: 1231755,
|
||||||
|
tokenID: "@dm!n",
|
||||||
|
patientTypeID: 1,
|
||||||
|
patientType: 1,
|
||||||
|
eXuldAPPNO: 0,
|
||||||
|
projectID: 0);
|
||||||
|
|
||||||
|
Future getInsurance() async {
|
||||||
|
hasError = false;
|
||||||
|
_cardList.clear();
|
||||||
|
await baseAppClient.post(GET_PAtIENTS_INSURANCE,
|
||||||
|
onSuccess: (dynamic response, int statusCode) {
|
||||||
|
response['List_PatientInsuranceCard'].forEach((item) {
|
||||||
|
_cardList.add(InsuranceCardModel.fromJson(item));
|
||||||
|
});
|
||||||
|
}, onFailure: (String error, int statusCode) {
|
||||||
|
hasError = true;
|
||||||
|
super.error = error;
|
||||||
|
}, body: _insuranceCardModel.toJson());
|
||||||
|
}
|
||||||
|
|
||||||
|
Future getInsuranceUpdate() async {
|
||||||
|
hasError = false;
|
||||||
|
// _cardList.clear();
|
||||||
|
await baseAppClient.post(GET_PAtIENTS_INSURANCE_UPDATED,
|
||||||
|
onSuccess: (dynamic response, int statusCode) {
|
||||||
|
response['List_PatientInsuranceCardHistory'].forEach((item) {
|
||||||
|
_cardUpdated.add(InsuranceUpdateModel.fromJson(item));
|
||||||
|
});
|
||||||
|
}, onFailure: (String error, int statusCode) {
|
||||||
|
hasError = true;
|
||||||
|
super.error = error;
|
||||||
|
}, body: _insuranceUpdateModel.toJson());
|
||||||
|
}
|
||||||
|
|
||||||
|
Future getInsuranceApproval() async {
|
||||||
|
hasError = false;
|
||||||
|
// _cardList.clear();
|
||||||
|
await baseAppClient.post(GET_PAtIENTS_INSURANCE_APPROVALS,
|
||||||
|
onSuccess: (dynamic response, int statusCode) {
|
||||||
|
response['HIS_Approval_List'].forEach((item) {
|
||||||
|
_insuranceApproval.add(InsuranceApprovalModel.fromJson(item));
|
||||||
|
});
|
||||||
|
}, onFailure: (String error, int statusCode) {
|
||||||
|
hasError = true;
|
||||||
|
super.error = error;
|
||||||
|
}, body: _insuranceApprovalModel.toJson());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,57 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/model/insurance/insurance_approval.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/insurance/insurance_card_update.dart';
|
||||||
|
import 'package:diplomaticquarterapp/pages/insurance/insurance_approval_screen.dart';
|
||||||
|
|
||||||
|
import 'base_view_model.dart';
|
||||||
|
import '../../locator.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/insurance/insurance_card.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/service/insurance_service.dart';
|
||||||
|
|
||||||
|
class InsuranceViewModel extends BaseViewModel {
|
||||||
|
bool hasError = false;
|
||||||
|
|
||||||
|
InsuranceCardService _insuranceCardService = locator<InsuranceCardService>();
|
||||||
|
|
||||||
|
List<InsuranceCardModel> get insurance => _insuranceCardService.cardList;
|
||||||
|
List<InsuranceUpdateModel> get insuranceUpdate =>
|
||||||
|
_insuranceCardService.updatedCard;
|
||||||
|
List<InsuranceApprovalModel> get insuranceApproval =>
|
||||||
|
_insuranceCardService.insuranceApproval;
|
||||||
|
|
||||||
|
Future getInsurance() async {
|
||||||
|
hasError = false;
|
||||||
|
_insuranceCardService.clearInsuranceCard();
|
||||||
|
setState(ViewState.Busy);
|
||||||
|
await _insuranceCardService.getInsurance();
|
||||||
|
if (_insuranceCardService.hasError) {
|
||||||
|
error = _insuranceCardService.error;
|
||||||
|
setState(ViewState.ErrorLocal);
|
||||||
|
} else
|
||||||
|
setState(ViewState.Idle);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future getInsuranceUpdated() async {
|
||||||
|
hasError = false;
|
||||||
|
//_insuranceCardService.clearInsuranceCard();
|
||||||
|
setState(ViewState.Busy);
|
||||||
|
await _insuranceCardService.getInsuranceUpdate();
|
||||||
|
if (_insuranceCardService.hasError) {
|
||||||
|
error = _insuranceCardService.error;
|
||||||
|
setState(ViewState.ErrorLocal);
|
||||||
|
} else
|
||||||
|
setState(ViewState.Idle);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future getInsuranceApproval() async {
|
||||||
|
hasError = false;
|
||||||
|
//_insuranceCardService.clearInsuranceCard();
|
||||||
|
setState(ViewState.Busy);
|
||||||
|
await _insuranceCardService.getInsuranceApproval();
|
||||||
|
if (_insuranceCardService.hasError) {
|
||||||
|
error = _insuranceCardService.error;
|
||||||
|
setState(ViewState.ErrorLocal);
|
||||||
|
} else
|
||||||
|
setState(ViewState.Idle);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,395 @@
|
|||||||
|
import 'package:diplomaticquarterapp/widgets/others/rounded_container.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:diplomaticquarterapp/config/size_config.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import '../base/base_view.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart';
|
||||||
|
|
||||||
|
class InsuranceApproval extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
_InsuranceApprovalState createState() => _InsuranceApprovalState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _InsuranceApprovalState extends State<InsuranceApproval> {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return BaseView<InsuranceViewModel>(
|
||||||
|
onModelReady: (model) => model.getInsuranceApproval(),
|
||||||
|
builder: (BuildContext context, InsuranceViewModel model, Widget child) =>
|
||||||
|
AppScaffold(
|
||||||
|
isShowAppBar: true,
|
||||||
|
baseViewModel: model,
|
||||||
|
appBarTitle: 'Approvals',
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(
|
||||||
|
left: SizeConfig.screenWidth * 0.004,
|
||||||
|
right: SizeConfig.screenWidth * 0.004,
|
||||||
|
top: SizeConfig.screenWidth * 0.04,
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
height: SizeConfig.screenHeight * 0.09,
|
||||||
|
color: Color(0xffEEEEEE),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
children: <Widget>[
|
||||||
|
Text(
|
||||||
|
'Total approval unused',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Color(0xff60688B),
|
||||||
|
fontSize: 19.5,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (model.insuranceApproval.length > 0)
|
||||||
|
Container(
|
||||||
|
width: SizeConfig.widthMultiplier * 18.0,
|
||||||
|
height: SizeConfig.heightMultiplier * 2.8,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Color(0xffC5272D),
|
||||||
|
borderRadius: BorderRadius.circular(19.0)),
|
||||||
|
child: Center(
|
||||||
|
child: Text(
|
||||||
|
model.insuranceApproval[0].unUsedCount
|
||||||
|
.toString(),
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white, fontSize: 19.0),
|
||||||
|
),
|
||||||
|
))
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
...List.generate(
|
||||||
|
model.insuranceApproval.length,
|
||||||
|
(index) => RoundedContainer(
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
ExpansionTile(
|
||||||
|
title: Container(
|
||||||
|
height: 85.0,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
model.insuranceApproval[index]
|
||||||
|
.patientDescription ==
|
||||||
|
"In Patient"
|
||||||
|
? Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Color(0xffB8372C),
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.circular(
|
||||||
|
16.0)),
|
||||||
|
width: 95.0,
|
||||||
|
padding:
|
||||||
|
EdgeInsets.only(left: 11.5),
|
||||||
|
child: Text(
|
||||||
|
model.insuranceApproval[index]
|
||||||
|
.patientDescription ==
|
||||||
|
null
|
||||||
|
? ''
|
||||||
|
: model
|
||||||
|
.insuranceApproval[
|
||||||
|
index]
|
||||||
|
.patientDescription,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Color(0xff505A5D),
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.circular(
|
||||||
|
16.0)),
|
||||||
|
width: 95.0,
|
||||||
|
padding:
|
||||||
|
EdgeInsets.only(left: 11.5),
|
||||||
|
child: Text(
|
||||||
|
model.insuranceApproval[index]
|
||||||
|
.patientDescription ==
|
||||||
|
null
|
||||||
|
? ''
|
||||||
|
: model
|
||||||
|
.insuranceApproval[
|
||||||
|
index]
|
||||||
|
.patientDescription,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.symmetric(
|
||||||
|
vertical: 10.0),
|
||||||
|
child: Text(
|
||||||
|
model.insuranceApproval[index]
|
||||||
|
.clinicName,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 20.0,
|
||||||
|
color: Color(0xff60686B),
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
model.insuranceApproval[index]
|
||||||
|
.doctorName,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 15.0,
|
||||||
|
fontStyle: FontStyle.italic),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
children: <Widget>[
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.symmetric(
|
||||||
|
vertical: 12.0, horizontal: 12.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Text(
|
||||||
|
'Approval No.: ' +
|
||||||
|
model.insuranceApproval[index]
|
||||||
|
.approvalNo
|
||||||
|
.toString(),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 18.0,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
color: Colors.black,
|
||||||
|
height: 25.0,
|
||||||
|
thickness: 1.0,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Procedure Status: ' +
|
||||||
|
model.insuranceApproval[index]
|
||||||
|
.approvalStatusDescption,
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 17.5),
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
color: Colors.black,
|
||||||
|
height: 25.0,
|
||||||
|
thickness: 1.0,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Unused Count: ' +
|
||||||
|
model.insuranceApproval[index]
|
||||||
|
.unUsedCount
|
||||||
|
.toString(),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 17.5,
|
||||||
|
fontWeight: FontWeight.w600),
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
color: Colors.black,
|
||||||
|
height: 25.0,
|
||||||
|
thickness: 1.0,
|
||||||
|
),
|
||||||
|
// Text(
|
||||||
|
// 'Company Name: ' +
|
||||||
|
// model.insuranceApproval[index]
|
||||||
|
// .companyName ==
|
||||||
|
// null
|
||||||
|
// ? '000'
|
||||||
|
// : model
|
||||||
|
// .insuranceApproval[index].companyName,
|
||||||
|
// style: TextStyle(
|
||||||
|
// fontSize: 17.5,
|
||||||
|
// fontWeight: FontWeight.w600),
|
||||||
|
// ),
|
||||||
|
Text(
|
||||||
|
'Company Name',
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 17.5,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
Divider(
|
||||||
|
color: Colors.black,
|
||||||
|
height: 25.0,
|
||||||
|
thickness: 1.0,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Receipt on: ' +
|
||||||
|
convertDateFormat(model
|
||||||
|
.insuranceApproval[index]
|
||||||
|
.rceiptOn),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 17.5,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
color: Colors.black,
|
||||||
|
height: 25.0,
|
||||||
|
thickness: 1.0,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'expiryDate: ' +
|
||||||
|
convertDateFormat(model
|
||||||
|
.insuranceApproval[index]
|
||||||
|
.expiryDate),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 17.5,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
color: Colors.black,
|
||||||
|
height: 55.0,
|
||||||
|
thickness: 1.2,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.center,
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Text('Procedure Name '),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
top: SizeConfig
|
||||||
|
.heightMultiplier *
|
||||||
|
3.0),
|
||||||
|
child: Text(
|
||||||
|
model
|
||||||
|
.insuranceApproval[
|
||||||
|
index]
|
||||||
|
.approvalDetails ==
|
||||||
|
null
|
||||||
|
? ''
|
||||||
|
: model
|
||||||
|
.insuranceApproval[
|
||||||
|
index]
|
||||||
|
.approvalDetails
|
||||||
|
.procedureName,
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight:
|
||||||
|
FontWeight.w600,
|
||||||
|
fontSize: 15.5),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
VerticalDivider(
|
||||||
|
width: 10.0,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Text('Procedure Status '),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
top: SizeConfig
|
||||||
|
.heightMultiplier *
|
||||||
|
3.0),
|
||||||
|
child: Text(
|
||||||
|
model
|
||||||
|
.insuranceApproval[
|
||||||
|
index]
|
||||||
|
.approvalDetails ==
|
||||||
|
null
|
||||||
|
? ''
|
||||||
|
: model
|
||||||
|
.insuranceApproval[
|
||||||
|
index]
|
||||||
|
.approvalDetails
|
||||||
|
.status,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 17.5,
|
||||||
|
fontWeight:
|
||||||
|
FontWeight.w600),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Text('Usage Status '),
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
top: SizeConfig
|
||||||
|
.heightMultiplier *
|
||||||
|
3.0),
|
||||||
|
child: Text(
|
||||||
|
model
|
||||||
|
.insuranceApproval[
|
||||||
|
index]
|
||||||
|
.approvalDetails ==
|
||||||
|
null
|
||||||
|
? ''
|
||||||
|
: model
|
||||||
|
.insuranceApproval[
|
||||||
|
index]
|
||||||
|
.approvalDetails
|
||||||
|
.isInvoicedDesc,
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight:
|
||||||
|
FontWeight.w600,
|
||||||
|
fontSize: 17.5),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
color: Colors.black,
|
||||||
|
height: 25.0,
|
||||||
|
thickness: 1.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
convertDateFormat(String Date) {
|
||||||
|
const start = "/Date(";
|
||||||
|
const end = "+0300)";
|
||||||
|
|
||||||
|
final startIndex = Date.indexOf(start);
|
||||||
|
final endIndex = Date.indexOf(end, startIndex + start.length);
|
||||||
|
|
||||||
|
var date = new DateTime.fromMillisecondsSinceEpoch(
|
||||||
|
int.parse(Date.substring(startIndex + start.length, endIndex)));
|
||||||
|
String newDate = date.year.toString() +
|
||||||
|
"-" +
|
||||||
|
date.month.toString().padLeft(2, '0') +
|
||||||
|
"-" +
|
||||||
|
date.day.toString().padLeft(2, '0');
|
||||||
|
|
||||||
|
return newDate.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,151 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:diplomaticquarterapp/config/size_config.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import '../base/base_view.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/insurance/insurance_card.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/rounded_container.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
|
||||||
|
|
||||||
|
class InsuranceCard extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
_InsuranceCardState createState() => _InsuranceCardState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _InsuranceCardState extends State<InsuranceCard> {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return BaseView<InsuranceViewModel>(
|
||||||
|
onModelReady: (model) => model.getInsurance(),
|
||||||
|
builder: (BuildContext context, InsuranceViewModel model, Widget child) =>
|
||||||
|
AppScaffold(
|
||||||
|
isShowAppBar: true,
|
||||||
|
baseViewModel: model,
|
||||||
|
appBarTitle: 'Insurance Cards',
|
||||||
|
body: Container(
|
||||||
|
margin: EdgeInsets.only(
|
||||||
|
left: SizeConfig.screenWidth * 0.004,
|
||||||
|
right: SizeConfig.screenWidth * 0.004,
|
||||||
|
top: SizeConfig.screenWidth * 0.04),
|
||||||
|
child: ListView.builder(
|
||||||
|
itemCount: model.insurance == null ? 0 : model.insurance.length,
|
||||||
|
itemBuilder: (BuildContext context, int index) {
|
||||||
|
return RoundedContainer(
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
ExpansionTile(
|
||||||
|
title: Container(
|
||||||
|
height: 65.0,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 15.0),
|
||||||
|
child: Texts(
|
||||||
|
model.insurance[index].groupName,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
children: <Widget>[
|
||||||
|
Divider(
|
||||||
|
color: Colors.black,
|
||||||
|
height: 25.0,
|
||||||
|
thickness: 0.5,
|
||||||
|
),
|
||||||
|
Texts(
|
||||||
|
'Company Name: ' +
|
||||||
|
model.insurance[index].companyName,
|
||||||
|
fontSize: 20.0,
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
color: Colors.black,
|
||||||
|
height: 25.0,
|
||||||
|
thickness: 0.5,
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
|
children: <Widget>[
|
||||||
|
Text(
|
||||||
|
'Category: ' +
|
||||||
|
model.insurance[index].subCategoryDesc,
|
||||||
|
style: TextStyle(fontSize: 18.5),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Expiration Date: ' +
|
||||||
|
convertDateFormat(
|
||||||
|
model.insurance[index].cardValidTo),
|
||||||
|
style: TextStyle(fontSize: 18.5),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Patient Card ID : ' +
|
||||||
|
model.insurance[index].patientCardID,
|
||||||
|
style: TextStyle(fontSize: 18.5),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Policy Number : ' +
|
||||||
|
model
|
||||||
|
.insurance[index].insurancePolicyNumber,
|
||||||
|
style: TextStyle(fontSize: 18.5),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
children: <Widget>[
|
||||||
|
model.insurance[index].isActive == true
|
||||||
|
? Text('Active',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.green,
|
||||||
|
fontWeight: FontWeight.w900,
|
||||||
|
fontSize: 17.9))
|
||||||
|
: Text('Not Active',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.red,
|
||||||
|
fontWeight: FontWeight.w900,
|
||||||
|
fontSize: 17.9))
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 14.5,
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
child: Button(
|
||||||
|
label: 'SEE DETAILS',
|
||||||
|
),
|
||||||
|
width: 400.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
convertDateFormat(String exDate) {
|
||||||
|
const start = "/Date(";
|
||||||
|
const end = "+0300)";
|
||||||
|
|
||||||
|
final startIndex = exDate.indexOf(start);
|
||||||
|
final endIndex = exDate.indexOf(end, startIndex + start.length);
|
||||||
|
|
||||||
|
var date = new DateTime.fromMillisecondsSinceEpoch(
|
||||||
|
int.parse(exDate.substring(startIndex + start.length, endIndex)));
|
||||||
|
String newDate = date.year.toString() +
|
||||||
|
"-" +
|
||||||
|
date.month.toString().padLeft(2, '0') +
|
||||||
|
"-" +
|
||||||
|
date.day.toString().padLeft(2, '0');
|
||||||
|
|
||||||
|
return newDate.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,311 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:diplomaticquarterapp/config/size_config.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import '../base/base_view.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/rounded_container.dart';
|
||||||
|
import 'package:rating_bar/rating_bar.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
|
||||||
|
|
||||||
|
class InsuranceUpdate extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
_InsuranceUpdateState createState() => _InsuranceUpdateState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _InsuranceUpdateState extends State<InsuranceUpdate>
|
||||||
|
with SingleTickerProviderStateMixin {
|
||||||
|
TabController _tabController;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_tabController = TabController(length: 2, vsync: this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
_tabController.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return BaseView<InsuranceViewModel>(
|
||||||
|
onModelReady: (model) => model.getInsuranceUpdated(),
|
||||||
|
builder: (BuildContext context, InsuranceViewModel model, Widget child) =>
|
||||||
|
AppScaffold(
|
||||||
|
appBarTitle: 'Insurance Cards',
|
||||||
|
isShowAppBar: true,
|
||||||
|
baseViewModel: model,
|
||||||
|
body: Scaffold(
|
||||||
|
extendBodyBehindAppBar: true,
|
||||||
|
appBar: PreferredSize(
|
||||||
|
preferredSize: Size.fromHeight(70.0),
|
||||||
|
child: Stack(
|
||||||
|
children: <Widget>[
|
||||||
|
Center(
|
||||||
|
child: Container(
|
||||||
|
height: 60.0,
|
||||||
|
margin: EdgeInsets.only(top: 10.0),
|
||||||
|
width: MediaQuery.of(context).size.width * 1.9,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border(
|
||||||
|
bottom: BorderSide(
|
||||||
|
color: Theme.of(context).dividerColor,
|
||||||
|
width: 5.7,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
child: Center(
|
||||||
|
child: TabBar(
|
||||||
|
controller: _tabController,
|
||||||
|
isScrollable: true,
|
||||||
|
indicatorWeight: 4.0,
|
||||||
|
indicatorColor: Colors.red,
|
||||||
|
labelColor: Theme.of(context).primaryColor,
|
||||||
|
labelPadding: EdgeInsets.symmetric(
|
||||||
|
horizontal: 13.0, vertical: 2.0),
|
||||||
|
unselectedLabelColor: Colors.grey,
|
||||||
|
tabs: <Widget>[
|
||||||
|
Container(
|
||||||
|
width: MediaQuery.of(context).size.width * 0.35,
|
||||||
|
child: Center(
|
||||||
|
child: Texts('Card'),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: MediaQuery.of(context).size.width * 0.35,
|
||||||
|
child: Center(
|
||||||
|
child: Texts('History'),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
body: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
child: TabBarView(
|
||||||
|
physics: BouncingScrollPhysics(),
|
||||||
|
controller: _tabController,
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
child: ListView.builder(
|
||||||
|
itemCount: model.insuranceUpdate == null
|
||||||
|
? 0
|
||||||
|
: model.insuranceUpdate.length,
|
||||||
|
itemBuilder: (BuildContext context, int index) {
|
||||||
|
return Container(
|
||||||
|
margin: EdgeInsets.all(10.0),
|
||||||
|
child: Card(
|
||||||
|
margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0),
|
||||||
|
color: Colors.white,
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(10),
|
||||||
|
),
|
||||||
|
child: Container(
|
||||||
|
width: MediaQuery.of(context).size.width,
|
||||||
|
padding: EdgeInsets.all(10.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
children: <Widget>[
|
||||||
|
Flex(
|
||||||
|
direction: Axis.horizontal,
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
flex: 3,
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(
|
||||||
|
top: 2.0,
|
||||||
|
left: 10.0,
|
||||||
|
right: 20.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Text("TAMER FANASHEH ",
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
color: Colors.black,
|
||||||
|
fontWeight:
|
||||||
|
FontWeight.w500,
|
||||||
|
letterSpacing: 1.0)),
|
||||||
|
Text(
|
||||||
|
'File No.' +
|
||||||
|
model
|
||||||
|
.insuranceUpdate[
|
||||||
|
index]
|
||||||
|
.patientID
|
||||||
|
.toString(),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
color: Colors.black,
|
||||||
|
fontWeight:
|
||||||
|
FontWeight.w500,
|
||||||
|
letterSpacing: 1.0)),
|
||||||
|
Text(
|
||||||
|
model.insuranceUpdate[index]
|
||||||
|
.createdOn,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
color: Colors.black,
|
||||||
|
fontWeight:
|
||||||
|
FontWeight.w500,
|
||||||
|
letterSpacing: 1.0)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: Container(
|
||||||
|
// height: MediaQuery.of(context).size.height * 0.12,
|
||||||
|
margin: EdgeInsets.only(top: 20.0),
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
child: Button(
|
||||||
|
label: 'Fetch',
|
||||||
|
),
|
||||||
|
height: SizeConfig
|
||||||
|
.heightMultiplier *
|
||||||
|
3.8,
|
||||||
|
width:
|
||||||
|
SizeConfig.screenWidth *
|
||||||
|
4.2,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
child: ListView.builder(
|
||||||
|
itemCount: model.insuranceUpdate == null
|
||||||
|
? 0
|
||||||
|
: model.insuranceUpdate.length,
|
||||||
|
itemBuilder: (BuildContext context, int index) {
|
||||||
|
return Container(
|
||||||
|
margin: EdgeInsets.all(10.0),
|
||||||
|
child: Card(
|
||||||
|
margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0),
|
||||||
|
color: Colors.white,
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(10),
|
||||||
|
),
|
||||||
|
child: Container(
|
||||||
|
width: MediaQuery.of(context).size.width,
|
||||||
|
padding: EdgeInsets.all(10.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
children: <Widget>[
|
||||||
|
Flex(
|
||||||
|
direction: Axis.horizontal,
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
flex: 3,
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(
|
||||||
|
top: 2.0,
|
||||||
|
left: 10.0,
|
||||||
|
right: 20.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Text("TAMER FANASHEH ",
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
color: Colors.black,
|
||||||
|
fontWeight:
|
||||||
|
FontWeight.w500,
|
||||||
|
letterSpacing: 1.0)),
|
||||||
|
Text(
|
||||||
|
'File No.' +
|
||||||
|
model
|
||||||
|
.insuranceUpdate[
|
||||||
|
index]
|
||||||
|
.patientID
|
||||||
|
.toString(),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
color: Colors.black,
|
||||||
|
fontWeight:
|
||||||
|
FontWeight.w500,
|
||||||
|
letterSpacing: 1.0)),
|
||||||
|
Text(
|
||||||
|
model.insuranceUpdate[index]
|
||||||
|
.createdOn,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.0,
|
||||||
|
color: Colors.black,
|
||||||
|
fontWeight:
|
||||||
|
FontWeight.w500,
|
||||||
|
letterSpacing: 1.0)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: Container(
|
||||||
|
// height: MediaQuery.of(context).size.height * 0.12,
|
||||||
|
margin: EdgeInsets.only(top: 20.0),
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Image.asset(
|
||||||
|
"assets/images/new-design/confirm_button.png",
|
||||||
|
width: 30.0,
|
||||||
|
height: 30.0),
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(
|
||||||
|
top: 13.5, left: 2.0),
|
||||||
|
child: Text(
|
||||||
|
model
|
||||||
|
.insuranceUpdate[
|
||||||
|
index]
|
||||||
|
.statusDescription,
|
||||||
|
textAlign:
|
||||||
|
TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12.0)),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
////////////////
|
||||||
|
],
|
||||||
|
))
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue