First step from CMC
parent
0b9a834673
commit
31b217aa19
@ -0,0 +1,44 @@
|
|||||||
|
class GetCMCServicesResponseModel {
|
||||||
|
String description;
|
||||||
|
String descriptionN;
|
||||||
|
int iD;
|
||||||
|
bool isActive;
|
||||||
|
int price;
|
||||||
|
int serviceID;
|
||||||
|
int totalPrice;
|
||||||
|
int vAT;
|
||||||
|
|
||||||
|
GetCMCServicesResponseModel(
|
||||||
|
{this.description,
|
||||||
|
this.descriptionN,
|
||||||
|
this.iD,
|
||||||
|
this.isActive,
|
||||||
|
this.price,
|
||||||
|
this.serviceID,
|
||||||
|
this.totalPrice,
|
||||||
|
this.vAT});
|
||||||
|
|
||||||
|
GetCMCServicesResponseModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
description = json['Description'];
|
||||||
|
descriptionN = json['DescriptionN'];
|
||||||
|
iD = json['ID'];
|
||||||
|
isActive = json['IsActive'];
|
||||||
|
price = json['Price'];
|
||||||
|
serviceID = json['ServiceID'];
|
||||||
|
totalPrice = json['TotalPrice'];
|
||||||
|
vAT = json['VAT'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['Description'] = this.description;
|
||||||
|
data['DescriptionN'] = this.descriptionN;
|
||||||
|
data['ID'] = this.iD;
|
||||||
|
data['IsActive'] = this.isActive;
|
||||||
|
data['Price'] = this.price;
|
||||||
|
data['ServiceID'] = this.serviceID;
|
||||||
|
data['TotalPrice'] = this.totalPrice;
|
||||||
|
data['VAT'] = this.vAT;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,68 @@
|
|||||||
|
class GetOrderDetailByOrderIDRequestModel {
|
||||||
|
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 presOrderID;
|
||||||
|
|
||||||
|
GetOrderDetailByOrderIDRequestModel(
|
||||||
|
{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.presOrderID});
|
||||||
|
|
||||||
|
GetOrderDetailByOrderIDRequestModel.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'];
|
||||||
|
presOrderID = json['PresOrderID'];
|
||||||
|
}
|
||||||
|
|
||||||
|
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['PresOrderID'] = this.presOrderID;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,52 @@
|
|||||||
|
class GetOrderDetailByOrderIDResponseModel {
|
||||||
|
int iD;
|
||||||
|
int presOrderID;
|
||||||
|
int hHCServiceID;
|
||||||
|
int createdBy;
|
||||||
|
String createdOn;
|
||||||
|
int editedBy;
|
||||||
|
String editedOn;
|
||||||
|
bool isActive;
|
||||||
|
String description;
|
||||||
|
String descriptionN;
|
||||||
|
|
||||||
|
GetOrderDetailByOrderIDResponseModel(
|
||||||
|
{this.iD,
|
||||||
|
this.presOrderID,
|
||||||
|
this.hHCServiceID,
|
||||||
|
this.createdBy,
|
||||||
|
this.createdOn,
|
||||||
|
this.editedBy,
|
||||||
|
this.editedOn,
|
||||||
|
this.isActive,
|
||||||
|
this.description,
|
||||||
|
this.descriptionN});
|
||||||
|
|
||||||
|
GetOrderDetailByOrderIDResponseModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
iD = json['ID'];
|
||||||
|
presOrderID = json['PresOrderID'];
|
||||||
|
hHCServiceID = json['HHC_ServiceID'];
|
||||||
|
createdBy = json['CreatedBy'];
|
||||||
|
createdOn = json['CreatedOn'];
|
||||||
|
editedBy = json['EditedBy'];
|
||||||
|
editedOn = json['EditedOn'];
|
||||||
|
isActive = json['IsActive'];
|
||||||
|
description = json['Description'];
|
||||||
|
descriptionN = json['DescriptionN'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['ID'] = this.iD;
|
||||||
|
data['PresOrderID'] = this.presOrderID;
|
||||||
|
data['HHC_ServiceID'] = this.hHCServiceID;
|
||||||
|
data['CreatedBy'] = this.createdBy;
|
||||||
|
data['CreatedOn'] = this.createdOn;
|
||||||
|
data['EditedBy'] = this.editedBy;
|
||||||
|
data['EditedOn'] = this.editedOn;
|
||||||
|
data['IsActive'] = this.isActive;
|
||||||
|
data['Description'] = this.description;
|
||||||
|
data['DescriptionN'] = this.descriptionN;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,79 @@
|
|||||||
|
import 'package:diplomaticquarterapp/config/config.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/HHC_get_all_services_request_modle.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/HHC_get_all_services_response_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_hHC_all_pres_orders_request_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_hhc_all_pres_orders_response_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_request_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_response_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/update_pres_oreder_request_model.dart';
|
||||||
|
|
||||||
|
import '../base_service.dart';
|
||||||
|
|
||||||
|
class CMCService extends BaseService {
|
||||||
|
List<HHCGetAllServicesResponseModel> hhcAllServicesList = List();
|
||||||
|
List<GetHHCAllPresOrdersResponseModel> hhcAllPresOrdersList = List();
|
||||||
|
|
||||||
|
List<GetOrderDetailByOrderIDResponseModel> hhcAllOrderDetail = List();
|
||||||
|
|
||||||
|
bool isOrderUpdated;
|
||||||
|
|
||||||
|
Future getHHCAllServices(
|
||||||
|
HHCGetAllServicesRequestModel hHCGetAllServicesRequestModel) async {
|
||||||
|
hasError = false;
|
||||||
|
await baseAppClient.post(HHC_GET_ALL_SERVICES,
|
||||||
|
onSuccess: (dynamic response, int statusCode) {
|
||||||
|
hhcAllServicesList.clear();
|
||||||
|
response['PatientER_HHC_GetAllServicesList'].forEach((data) {
|
||||||
|
hhcAllServicesList.add(HHCGetAllServicesResponseModel.fromJson(data));
|
||||||
|
});
|
||||||
|
}, onFailure: (String error, int statusCode) {
|
||||||
|
hasError = true;
|
||||||
|
super.error = error;
|
||||||
|
}, body: hHCGetAllServicesRequestModel.toJson());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Future getHHCAllPresOrders() async {
|
||||||
|
|
||||||
|
GetHHCAllPresOrdersRequestModel getHHCAllPresOrdersRequestModel= GetHHCAllPresOrdersRequestModel();
|
||||||
|
hasError = false;
|
||||||
|
await baseAppClient.post(GET_PATIENT_ALL_PRES_ORDERS,
|
||||||
|
onSuccess: (dynamic response, int statusCode) {
|
||||||
|
hhcAllPresOrdersList.clear();
|
||||||
|
response['PatientER_GetPatientAllPresOrdersList'].forEach((data) {
|
||||||
|
hhcAllPresOrdersList.add(GetHHCAllPresOrdersResponseModel.fromJson(data));
|
||||||
|
});
|
||||||
|
}, onFailure: (String error, int statusCode) {
|
||||||
|
hasError = true;
|
||||||
|
super.error = error;
|
||||||
|
}, body: getHHCAllPresOrdersRequestModel.toJson());
|
||||||
|
}
|
||||||
|
|
||||||
|
Future getOrderDetailByOrderID(GetOrderDetailByOrderIDRequestModel getOrderDetailByOrderIDRequestModel) async {
|
||||||
|
|
||||||
|
hasError = false;
|
||||||
|
await baseAppClient.post(GET_ORDER_DETAIL_BY_ID,
|
||||||
|
onSuccess: (dynamic response, int statusCode) {
|
||||||
|
hhcAllOrderDetail.clear();
|
||||||
|
response['PatientER_HHC_GetTransactionsForOrderList'].forEach((data) {
|
||||||
|
hhcAllOrderDetail.add(GetOrderDetailByOrderIDResponseModel.fromJson(data));
|
||||||
|
});
|
||||||
|
}, onFailure: (String error, int statusCode) {
|
||||||
|
hasError = true;
|
||||||
|
super.error = error;
|
||||||
|
}, body: getOrderDetailByOrderIDRequestModel.toJson());
|
||||||
|
}
|
||||||
|
|
||||||
|
Future updateHHCPresOrder(UpdatePresOrderRequestModel updatePresOrderRequestModel) async {
|
||||||
|
|
||||||
|
hasError = false;
|
||||||
|
await baseAppClient.post(PATIENT_ER_UPDATE_PRES_ORDER,
|
||||||
|
onSuccess: (dynamic response, int statusCode) {
|
||||||
|
isOrderUpdated = true;
|
||||||
|
}, onFailure: (String error, int statusCode) {
|
||||||
|
hasError = true;
|
||||||
|
super.error = error;
|
||||||
|
}, body: updatePresOrderRequestModel.toJson());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,86 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/HHC_get_all_services_request_modle.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/HHC_get_all_services_response_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_hhc_all_pres_orders_response_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_request_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_response_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/update_pres_oreder_request_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/cmc_service.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart';
|
||||||
|
|
||||||
|
import '../../../locator.dart';
|
||||||
|
|
||||||
|
class CMCViewModel extends BaseViewModel {
|
||||||
|
CMCService _homeHealthCareService =
|
||||||
|
locator<CMCService>();
|
||||||
|
|
||||||
|
List<HHCGetAllServicesResponseModel> get hhcAllServicesList =>
|
||||||
|
_homeHealthCareService.hhcAllServicesList;
|
||||||
|
|
||||||
|
List<GetHHCAllPresOrdersResponseModel> get hhcAllPresOrders =>
|
||||||
|
_homeHealthCareService.hhcAllPresOrdersList;
|
||||||
|
|
||||||
|
List<GetOrderDetailByOrderIDResponseModel> get hhcAllOrderDetail =>
|
||||||
|
_homeHealthCareService.hhcAllOrderDetail;
|
||||||
|
|
||||||
|
bool get isOrderUpdated => _homeHealthCareService.isOrderUpdated;
|
||||||
|
|
||||||
|
Future getHHCAllServices() async {
|
||||||
|
HHCGetAllServicesRequestModel hHCGetAllServicesRequestModel =
|
||||||
|
new HHCGetAllServicesRequestModel();
|
||||||
|
setState(ViewState.Busy);
|
||||||
|
await _homeHealthCareService
|
||||||
|
.getHHCAllServices(hHCGetAllServicesRequestModel);
|
||||||
|
if (_homeHealthCareService.hasError) {
|
||||||
|
error = _homeHealthCareService.error;
|
||||||
|
setState(ViewState.Error);
|
||||||
|
} else {
|
||||||
|
setState(ViewState.Idle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future getHHCAllPresOrders() async {
|
||||||
|
setState(ViewState.Busy);
|
||||||
|
await _homeHealthCareService.getHHCAllPresOrders();
|
||||||
|
if (_homeHealthCareService.hasError) {
|
||||||
|
error = _homeHealthCareService.error;
|
||||||
|
setState(ViewState.Error);
|
||||||
|
} else {
|
||||||
|
var pendingOrder = _homeHealthCareService.hhcAllPresOrdersList
|
||||||
|
.firstWhere((element) => element.status == 1 || element.status == 2,
|
||||||
|
orElse: () => null);
|
||||||
|
if (pendingOrder != null)
|
||||||
|
await getOrderDetailByOrderID(pendingOrder);
|
||||||
|
setState(ViewState.Idle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future updateHHCPresOrder(
|
||||||
|
UpdatePresOrderRequestModel updatePresOrderRequestModel) async {
|
||||||
|
setState(ViewState.BusyLocal);
|
||||||
|
await _homeHealthCareService.updateHHCPresOrder(
|
||||||
|
updatePresOrderRequestModel);
|
||||||
|
if (_homeHealthCareService.hasError) {
|
||||||
|
error = _homeHealthCareService.error;
|
||||||
|
setState(ViewState.ErrorLocal);
|
||||||
|
} else {
|
||||||
|
setState(ViewState.Idle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future getOrderDetailByOrderID(GetHHCAllPresOrdersResponseModel order) async {
|
||||||
|
GetOrderDetailByOrderIDRequestModel getOrderDetailByOrderIDRequestModel = GetOrderDetailByOrderIDRequestModel(
|
||||||
|
presOrderID: order.iD);
|
||||||
|
setState(ViewState.Busy);
|
||||||
|
await _homeHealthCareService.getOrderDetailByOrderID(
|
||||||
|
getOrderDetailByOrderIDRequestModel);
|
||||||
|
if (_homeHealthCareService.hasError) {
|
||||||
|
error = _homeHealthCareService.error;
|
||||||
|
setState(ViewState.Error);
|
||||||
|
} else {
|
||||||
|
setState(ViewState.Idle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,104 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/cmc_view_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/home_health_care_view_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
// ignore: must_be_immutable
|
||||||
|
class ConfirmCancelOrderDialog extends StatefulWidget {
|
||||||
|
final CMCViewModel model;
|
||||||
|
final Function onTap;
|
||||||
|
|
||||||
|
|
||||||
|
ConfirmCancelOrderDialog(
|
||||||
|
{Key key, this.model, this.onTap});
|
||||||
|
|
||||||
|
@override
|
||||||
|
_ConfirmCancelOrderDialogState createState() => _ConfirmCancelOrderDialogState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _ConfirmCancelOrderDialogState extends State<ConfirmCancelOrderDialog> {
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return SimpleDialog(
|
||||||
|
contentPadding: EdgeInsets.fromLTRB(28.0, 24.0, 28.0, 0.0),
|
||||||
|
title: Center(
|
||||||
|
child: Texts(
|
||||||
|
"Confirm",
|
||||||
|
color: Colors.black,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
children: [
|
||||||
|
Column(
|
||||||
|
children: [
|
||||||
|
Divider(),
|
||||||
|
Center(
|
||||||
|
child: Texts(
|
||||||
|
"Are you sure!! want to cancel this order",
|
||||||
|
color: Colors.grey,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 5.0,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: InkWell(
|
||||||
|
onTap: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Container(
|
||||||
|
child: Center(
|
||||||
|
child: Texts(
|
||||||
|
TranslationBase.of(context).cancel.toUpperCase(),
|
||||||
|
color: Colors.red,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: 1,
|
||||||
|
height: 30,
|
||||||
|
color: Colors.grey[500],
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: InkWell(
|
||||||
|
onTap: () async{
|
||||||
|
widget.onTap();
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Center(
|
||||||
|
child: Texts(
|
||||||
|
TranslationBase.of(context).ok,
|
||||||
|
fontWeight: FontWeight.w400,
|
||||||
|
)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,296 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_response_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/patient_er_insert_pres_order_request_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/update_pres_oreder_request_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/cmc_view_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/Dialog/confirm_cancel_order_dialog.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/utils.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'new_cmc_step_one_page.dart';
|
||||||
|
|
||||||
|
class NewCMCPage extends StatefulWidget {
|
||||||
|
NewCMCPage({this.model});
|
||||||
|
|
||||||
|
final CMCViewModel model;
|
||||||
|
|
||||||
|
@override
|
||||||
|
_NewCMCPageState createState() =>
|
||||||
|
_NewCMCPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _NewCMCPageState extends State<NewCMCPage>
|
||||||
|
with TickerProviderStateMixin {
|
||||||
|
PageController _controller;
|
||||||
|
int _currentIndex = 1;
|
||||||
|
int pageSelected = 2;
|
||||||
|
|
||||||
|
|
||||||
|
PatientERInsertPresOrderRequestModel patientERInsertPresOrderRequestModel = new PatientERInsertPresOrderRequestModel();
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_controller = new PageController();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
changePageViewIndex(pageIndex) {
|
||||||
|
_controller.jumpToPage(pageIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
void showConfirmMessage(
|
||||||
|
CMCViewModel model, GetOrderDetailByOrderIDResponseModel order) {
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
child: ConfirmCancelOrderDialog(
|
||||||
|
model: model,
|
||||||
|
onTap: () async {
|
||||||
|
UpdatePresOrderRequestModel updatePresOrderRequestModel =
|
||||||
|
UpdatePresOrderRequestModel(
|
||||||
|
presOrderID: order.presOrderID,
|
||||||
|
rejectionReason: "",
|
||||||
|
presOrderStatus: 4, editedBy: 3);
|
||||||
|
await model.updateHHCPresOrder(updatePresOrderRequestModel);
|
||||||
|
if(model.state == ViewState.ErrorLocal) {
|
||||||
|
Utils.showErrorToast(model.error);
|
||||||
|
} else {
|
||||||
|
AppToast.showSuccessToast(message: "Done Successfully");
|
||||||
|
await model.getHHCAllPresOrders();
|
||||||
|
await model.getHHCAllServices();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
));
|
||||||
|
}
|
||||||
|
return Scaffold(
|
||||||
|
body: SafeArea(
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
child: Container(
|
||||||
|
height: MediaQuery.of(context).size.height * 0.8,
|
||||||
|
child: PageView(
|
||||||
|
physics: NeverScrollableScrollPhysics(),
|
||||||
|
controller: _controller,
|
||||||
|
onPageChanged: (index) {
|
||||||
|
setState(() {
|
||||||
|
_currentIndex = index;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
scrollDirection: Axis.horizontal,
|
||||||
|
children: <Widget>[
|
||||||
|
widget.model.hhcAllOrderDetail.length != 0
|
||||||
|
? FractionallySizedBox(
|
||||||
|
heightFactor: 0.8,
|
||||||
|
widthFactor: 0.9,
|
||||||
|
child: Container(
|
||||||
|
width: double.infinity,
|
||||||
|
margin: EdgeInsets.only(top: 15),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border:
|
||||||
|
Border.all(color: Colors.grey, width: 1),
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
color: Colors.white),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
left: 15, bottom: 15, top: 15),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border(
|
||||||
|
bottom: BorderSide(
|
||||||
|
color: Colors.grey,
|
||||||
|
width: 1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// borderRadius: BorderRadius.circular(12),
|
||||||
|
color: Colors.white),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Texts(
|
||||||
|
"Request ID",
|
||||||
|
bold: false,
|
||||||
|
fontSize: 13,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 4,
|
||||||
|
),
|
||||||
|
Texts(
|
||||||
|
widget.model.hhcAllOrderDetail[0].iD.toString(),
|
||||||
|
fontSize: 22,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
left: 15, bottom: 15, top: 15),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border(
|
||||||
|
bottom: BorderSide(
|
||||||
|
color: Colors.grey,
|
||||||
|
width: 1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// borderRadius: BorderRadius.circular(12),
|
||||||
|
color: Colors.white),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Texts(
|
||||||
|
"Status",
|
||||||
|
bold: false,
|
||||||
|
fontSize: 13,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 4,
|
||||||
|
),
|
||||||
|
Texts(
|
||||||
|
"Pending",
|
||||||
|
fontSize: 22,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
left: 15, bottom: 15, top: 15),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border(
|
||||||
|
bottom: BorderSide(
|
||||||
|
color: Colors.grey,
|
||||||
|
width: 1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// borderRadius: BorderRadius.circular(12),
|
||||||
|
color: Colors.white),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Texts(
|
||||||
|
"Pickup Date",
|
||||||
|
bold: false,
|
||||||
|
fontSize: 13,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 4,
|
||||||
|
),
|
||||||
|
Texts(
|
||||||
|
DateUtil.getDayMonthYearDateFormatted(
|
||||||
|
DateUtil.convertStringToDate(
|
||||||
|
widget.model.hhcAllOrderDetail[0]
|
||||||
|
.createdOn)),
|
||||||
|
fontSize: 22,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
left: 15, bottom: 15, top: 15),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border(
|
||||||
|
bottom: BorderSide(
|
||||||
|
color: Colors.grey,
|
||||||
|
width: 1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// borderRadius: BorderRadius.circular(12),
|
||||||
|
color: Colors.white),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Texts(
|
||||||
|
"Service Name",
|
||||||
|
bold: false,
|
||||||
|
fontSize: 13,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 4,
|
||||||
|
),
|
||||||
|
Texts(
|
||||||
|
widget.model.hhcAllOrderDetail[0].description
|
||||||
|
.toString() ??
|
||||||
|
widget.model.hhcAllOrderDetail[0]
|
||||||
|
.descriptionN
|
||||||
|
.toString(),
|
||||||
|
fontSize: 22,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
Center(
|
||||||
|
child: Container(
|
||||||
|
width: MediaQuery
|
||||||
|
.of(context)
|
||||||
|
.size
|
||||||
|
.width *
|
||||||
|
0.85,
|
||||||
|
child: SecondaryButton(
|
||||||
|
label: "Cancel".toUpperCase(),
|
||||||
|
onTap: () {
|
||||||
|
showConfirmMessage(widget.model, widget.model.hhcAllOrderDetail[0]);
|
||||||
|
}
|
||||||
|
,
|
||||||
|
color: Colors.red[800],
|
||||||
|
disabled: false,
|
||||||
|
textColor: Theme
|
||||||
|
.of(context)
|
||||||
|
.backgroundColor),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: NewCMCStepOnePage(
|
||||||
|
changePageViewIndex: changePageViewIndex,
|
||||||
|
patientERInsertPresOrderRequestModel:
|
||||||
|
patientERInsertPresOrderRequestModel,
|
||||||
|
model: widget.model,
|
||||||
|
),
|
||||||
|
// NewEReferralStepTowPage(
|
||||||
|
// changePageViewIndex: changePageViewIndex,
|
||||||
|
// patientERInsertPresOrderRequestModel: patientERInsertPresOrderRequestModel,
|
||||||
|
//
|
||||||
|
// ),
|
||||||
|
// NewEReferralStepThreePage(
|
||||||
|
// changePageViewIndex: changePageViewIndex,
|
||||||
|
// patientERInsertPresOrderRequestModel: patientERInsertPresOrderRequestModel,
|
||||||
|
//
|
||||||
|
// ),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,151 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/PatientERHHCInsertServicesList.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/patient_er_insert_pres_order_request_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/cmc_view_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class NewCMCStepOnePage extends StatefulWidget {
|
||||||
|
final PatientERInsertPresOrderRequestModel
|
||||||
|
patientERInsertPresOrderRequestModel;
|
||||||
|
final Function changePageViewIndex;
|
||||||
|
final CMCViewModel model;
|
||||||
|
const NewCMCStepOnePage(
|
||||||
|
{Key key,
|
||||||
|
this.patientERInsertPresOrderRequestModel,
|
||||||
|
this.model,
|
||||||
|
this.changePageViewIndex})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
_NewCMCStepOnePageState createState() =>
|
||||||
|
_NewCMCStepOnePageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _NewCMCStepOnePageState
|
||||||
|
extends State<NewCMCStepOnePage> {
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
|
||||||
|
widget
|
||||||
|
.patientERInsertPresOrderRequestModel
|
||||||
|
.patientERHHCInsertServicesList =[];
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return AppScaffold(
|
||||||
|
isShowAppBar: false,
|
||||||
|
baseViewModel: widget.model,
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
physics: ScrollPhysics(),
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.all(12),
|
||||||
|
child: Center(
|
||||||
|
child: FractionallySizedBox(
|
||||||
|
widthFactor: 0.94,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
Texts(
|
||||||
|
// TranslationBase.of(context).advancePaymentLabel,
|
||||||
|
"Select Home Health Care Services",
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
children: widget.model.hhcAllServicesList.map((service) {
|
||||||
|
return Container(
|
||||||
|
margin: EdgeInsets.only(top: 15),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border:
|
||||||
|
Border.all(color: Colors.grey, width: 1),
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
color: Colors.white),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Checkbox(
|
||||||
|
value: isServiceSelected(
|
||||||
|
service.serviceID),
|
||||||
|
activeColor: Colors.black38,
|
||||||
|
onChanged: (bool newValue) {
|
||||||
|
setState(() {
|
||||||
|
this
|
||||||
|
.widget
|
||||||
|
.patientERInsertPresOrderRequestModel
|
||||||
|
.patientERHHCInsertServicesList
|
||||||
|
.add(new PatientERHHCInsertServicesList(
|
||||||
|
recordID: this
|
||||||
|
.widget
|
||||||
|
.patientERInsertPresOrderRequestModel
|
||||||
|
.patientERHHCInsertServicesList
|
||||||
|
.length,
|
||||||
|
serviceID:
|
||||||
|
service.serviceID,
|
||||||
|
serviceName:
|
||||||
|
service.description));
|
||||||
|
// widget.patientERInsertPresOrderRequestModel
|
||||||
|
// isPatientInsured = newValue;
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
Expanded(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(20.0),
|
||||||
|
child: Texts(
|
||||||
|
service.description,
|
||||||
|
fontSize: 15,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
bottomSheet:Container(
|
||||||
|
height: MediaQuery.of(context).size.height * 0.10,
|
||||||
|
width: double.infinity,
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
width: MediaQuery
|
||||||
|
.of(context)
|
||||||
|
.size
|
||||||
|
.width * 0.9,
|
||||||
|
child: SecondaryButton(
|
||||||
|
label: "Next",
|
||||||
|
disabled: this.widget.patientERInsertPresOrderRequestModel.patientERHHCInsertServicesList.length ==0,
|
||||||
|
textColor: Theme
|
||||||
|
.of(context)
|
||||||
|
.backgroundColor),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
isServiceSelected(int serviceId) {
|
||||||
|
Iterable <PatientERHHCInsertServicesList> patientERHHCInsertServicesList = widget
|
||||||
|
.patientERInsertPresOrderRequestModel.patientERHHCInsertServicesList
|
||||||
|
.where((element) => serviceId == element.serviceID);
|
||||||
|
if(patientERHHCInsertServicesList.length > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,67 @@
|
|||||||
|
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:hexcolor/hexcolor.dart';
|
||||||
|
import 'cmc_page.dart';
|
||||||
|
|
||||||
|
class CMCIndexPage extends StatelessWidget {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return AppScaffold(
|
||||||
|
isShowAppBar: true,
|
||||||
|
appBarTitle: "Service Information",
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
padding: EdgeInsets.all(12),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Texts(
|
||||||
|
"CMC",
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
|
fontSize: 25,
|
||||||
|
color: Hexcolor("#60686b"),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
Texts(
|
||||||
|
"This service is designed to help you to set drinking water goals and track the volume of water you are drinking on a daily basis. This service allows for schedule reminders and offers a basic statistical analysis of the amount of what you have consumed over the course of a day, week or month.",
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
|
fontSize: 17,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 22,
|
||||||
|
),
|
||||||
|
Center(
|
||||||
|
child: Image.asset(
|
||||||
|
'assets/images/AlHabibMedicalService/Wifi-AR.png')),
|
||||||
|
SizedBox(
|
||||||
|
height: 77,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
bottomSheet: Container(
|
||||||
|
height: MediaQuery.of(context).size.height * 0.10,
|
||||||
|
width: double.infinity,
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
width: MediaQuery.of(context).size.width * 0.9,
|
||||||
|
child: SecondaryButton(
|
||||||
|
onTap: () => Navigator.push(
|
||||||
|
context,
|
||||||
|
FadePage(
|
||||||
|
page: CMCPage(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
label: "CMC",
|
||||||
|
textColor: Theme.of(context).backgroundColor),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,131 @@
|
|||||||
|
import 'dart:ui';
|
||||||
|
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/cmc_view_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/home_health_care_view_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'NewCMC/new_cmc_page.dart';
|
||||||
|
import 'orders_log_details_page.dart';
|
||||||
|
|
||||||
|
class CMCPage extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
_CMCPageState createState() => _CMCPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _CMCPageState extends State<CMCPage>
|
||||||
|
with SingleTickerProviderStateMixin {
|
||||||
|
TabController _tabController;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_tabController = TabController(length: 2, vsync: this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
_tabController.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return BaseView<CMCViewModel>(
|
||||||
|
onModelReady: (model){
|
||||||
|
model.getHHCAllServices();
|
||||||
|
model.getHHCAllPresOrders();
|
||||||
|
},
|
||||||
|
builder: (_, model, widget) => AppScaffold(
|
||||||
|
isShowAppBar: true,
|
||||||
|
appBarTitle: "Home Health Care",
|
||||||
|
body: Scaffold(
|
||||||
|
extendBodyBehindAppBar: true,
|
||||||
|
appBar: PreferredSize(
|
||||||
|
preferredSize: Size.fromHeight(65.0),
|
||||||
|
child: Stack(
|
||||||
|
children: <Widget>[
|
||||||
|
Positioned(
|
||||||
|
bottom: 1,
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
child: BackdropFilter(
|
||||||
|
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
|
||||||
|
child: Container(
|
||||||
|
color: Theme.of(context)
|
||||||
|
.scaffoldBackgroundColor
|
||||||
|
.withOpacity(0.8),
|
||||||
|
height: 70.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Center(
|
||||||
|
child: Container(
|
||||||
|
height: 60.0,
|
||||||
|
margin: EdgeInsets.only(top: 10.0),
|
||||||
|
width: MediaQuery.of(context).size.width * 0.9,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border(
|
||||||
|
bottom: BorderSide(
|
||||||
|
color: Theme.of(context).dividerColor,
|
||||||
|
width: 0.7),
|
||||||
|
),
|
||||||
|
color: Colors.white),
|
||||||
|
child: Center(
|
||||||
|
child: TabBar(
|
||||||
|
isScrollable: true,
|
||||||
|
controller: _tabController,
|
||||||
|
indicatorWeight: 5.0,
|
||||||
|
indicatorSize: TabBarIndicatorSize.label,
|
||||||
|
indicatorColor: Colors.red[800],
|
||||||
|
labelColor: Theme.of(context).primaryColor,
|
||||||
|
labelPadding:
|
||||||
|
EdgeInsets.only(top: 4.0, left: 18.0, right: 18.0),
|
||||||
|
unselectedLabelColor: Colors.grey[800],
|
||||||
|
tabs: [
|
||||||
|
Container(
|
||||||
|
width: MediaQuery.of(context).size.width * 0.37,
|
||||||
|
child: Center(
|
||||||
|
child: Texts("CMC Service"),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: MediaQuery.of(context).size.width * 0.37,
|
||||||
|
child: Center(
|
||||||
|
child: Texts("Order Log"),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
body: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
child: TabBarView(
|
||||||
|
physics: BouncingScrollPhysics(),
|
||||||
|
controller: _tabController,
|
||||||
|
children: <Widget>[
|
||||||
|
NewCMCPage(
|
||||||
|
model: model,
|
||||||
|
),
|
||||||
|
OrdersLogDetailsPage(
|
||||||
|
model: model,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,252 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_hhc_all_pres_orders_response_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/update_pres_oreder_request_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/cmc_view_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/home_health_care_view_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/utils.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'Dialog/confirm_cancel_order_dialog.dart';
|
||||||
|
|
||||||
|
class OrdersLogDetailsPage extends StatelessWidget {
|
||||||
|
final CMCViewModel model;
|
||||||
|
|
||||||
|
const OrdersLogDetailsPage({Key key, this.model}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
void showConfirmMessage(
|
||||||
|
CMCViewModel model, GetHHCAllPresOrdersResponseModel order) {
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
child: ConfirmCancelOrderDialog(
|
||||||
|
model: model,
|
||||||
|
onTap: () async {
|
||||||
|
UpdatePresOrderRequestModel updatePresOrderRequestModel =
|
||||||
|
UpdatePresOrderRequestModel(
|
||||||
|
presOrderID: order.iD,
|
||||||
|
rejectionReason: "",
|
||||||
|
presOrderStatus: 4, editedBy: 3);
|
||||||
|
await model.updateHHCPresOrder(updatePresOrderRequestModel);
|
||||||
|
if(model.state == ViewState.ErrorLocal) {
|
||||||
|
Utils.showErrorToast(model.error);
|
||||||
|
} else {
|
||||||
|
AppToast.showSuccessToast(message: "Done Successfully");
|
||||||
|
await model.getHHCAllPresOrders();
|
||||||
|
await model.getHHCAllServices();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
return AppScaffold(
|
||||||
|
isShowAppBar: false,
|
||||||
|
baseViewModel: model,
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
physics: ScrollPhysics(),
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.all(12),
|
||||||
|
child: Center(
|
||||||
|
child: FractionallySizedBox(
|
||||||
|
widthFactor: 0.94,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 50,
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: model.hhcAllPresOrders.map((order) {
|
||||||
|
return Container(
|
||||||
|
width: double.infinity,
|
||||||
|
margin: EdgeInsets.only(top: 15),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border:
|
||||||
|
Border.all(color: Colors.grey, width: 1),
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
color: Colors.white),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
left: 15, bottom: 15, top: 15),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border(
|
||||||
|
bottom: BorderSide(
|
||||||
|
color: Colors.grey,
|
||||||
|
width: 1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// borderRadius: BorderRadius.circular(12),
|
||||||
|
color: Colors.white),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Texts(
|
||||||
|
"Request ID",
|
||||||
|
bold: false,
|
||||||
|
fontSize: 13,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 4,
|
||||||
|
),
|
||||||
|
Texts(
|
||||||
|
order.iD.toString(),
|
||||||
|
fontSize: 22,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
left: 15, bottom: 15, top: 15),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border(
|
||||||
|
bottom: BorderSide(
|
||||||
|
color: Colors.grey,
|
||||||
|
width: 1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// borderRadius: BorderRadius.circular(12),
|
||||||
|
color: Colors.white),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Texts(
|
||||||
|
"Status",
|
||||||
|
bold: false,
|
||||||
|
fontSize: 13,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 4,
|
||||||
|
),
|
||||||
|
Texts(
|
||||||
|
order.description,
|
||||||
|
fontSize: 22,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
left: 15, bottom: 15, top: 15),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border(
|
||||||
|
bottom: BorderSide(
|
||||||
|
color: Colors.grey,
|
||||||
|
width: 1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// borderRadius: BorderRadius.circular(12),
|
||||||
|
color: Colors.white),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Texts(
|
||||||
|
"Pickup Date",
|
||||||
|
bold: false,
|
||||||
|
fontSize: 13,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 4,
|
||||||
|
),
|
||||||
|
Texts(
|
||||||
|
DateUtil.getDayMonthYearDateFormatted(
|
||||||
|
DateUtil.convertStringToDate(
|
||||||
|
order.createdOn)),
|
||||||
|
fontSize: 22,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
left: 15, bottom: 15, top: 15),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border(
|
||||||
|
bottom: BorderSide(
|
||||||
|
color: Colors.grey,
|
||||||
|
width: 1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// borderRadius: BorderRadius.circular(12),
|
||||||
|
color: Colors.white),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Texts(
|
||||||
|
"Location",
|
||||||
|
bold: false,
|
||||||
|
fontSize: 13,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 4,
|
||||||
|
),
|
||||||
|
Texts(
|
||||||
|
order.nearestProjectDescription
|
||||||
|
.toString() ??
|
||||||
|
order.nearestProjectDescriptionN
|
||||||
|
.toString(),
|
||||||
|
fontSize: 22,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
if (order.status == 1 ||order.status == 2 )
|
||||||
|
Center(
|
||||||
|
child: Container(
|
||||||
|
width: MediaQuery
|
||||||
|
.of(context)
|
||||||
|
.size
|
||||||
|
.width *
|
||||||
|
0.85,
|
||||||
|
child: SecondaryButton(
|
||||||
|
label: "Cancel".toUpperCase(),
|
||||||
|
onTap: () {
|
||||||
|
showConfirmMessage(model, order);
|
||||||
|
}
|
||||||
|
,
|
||||||
|
color: Colors.red[800],
|
||||||
|
disabled: false,
|
||||||
|
textColor: Theme
|
||||||
|
.of(context)
|
||||||
|
.backgroundColor),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}).toList())
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue