added nurse signature for device transfer request and tested on uat

design_3.0_task_module_new
WaseemAbbasi22 5 months ago
parent 56c70671d8
commit 8ae51480f9

@ -7,9 +7,9 @@ class URLs {
// static const host1 = "https://atomsmdev.hmg.com"; // local DEV url // static const host1 = "https://atomsmdev.hmg.com"; // local DEV url
static const host1 = "https://atomsmuat.hmg.com"; // local UAT url static const host1 = "https://atomsmuat.hmg.com"; // local UAT url
static String _baseUrl = "$_host/mobile"; // static String _baseUrl = "$_host/mobile";
// static final String _baseUrl = "$_host/v2/mobile"; // new V2 apis // static final String _baseUrl = "$_host/v2/mobile"; // new V2 apis
// static final String _baseUrl = "$_host/mobile"; // host local UAT static final String _baseUrl = "$_host/mobile"; // host local UAT
// static final String _baseUrl = "$_host/v3/mobile"; // new V3 apis // static final String _baseUrl = "$_host/v3/mobile"; // new V3 apis
static String _host = host1; static String _host = host1;

@ -1,4 +1,5 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:developer';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
@ -22,14 +23,15 @@ class DeviceTransferProvider extends ChangeNotifier {
DeviceTransfer transferModel = DeviceTransfer(); DeviceTransfer transferModel = DeviceTransfer();
bool isSiteLoading = false; bool isSiteLoading = false;
Asset ?_internalAssetDestination = Asset(); Asset? _internalAssetDestination = Asset();
Asset ?get internalAssetDestination => _internalAssetDestination; Asset? get internalAssetDestination => _internalAssetDestination;
set internalAssetDestination(Asset? value) { set internalAssetDestination(Asset? value) {
_internalAssetDestination = value; _internalAssetDestination = value;
notifyListeners(); notifyListeners();
} //reset provider data } //reset provider data
void reset() { void reset() {
items = null; items = null;
isSiteLoading = false; isSiteLoading = false;
@ -134,7 +136,7 @@ class DeviceTransferProvider extends ChangeNotifier {
Future<PendingAssetServiceRequest?> checkAssetPendingRequest(int assetId) async { Future<PendingAssetServiceRequest?> checkAssetPendingRequest(int assetId) async {
Response response; Response response;
try { try {
response = await ApiManager.instance.post(URLs.CheckIfAssetHasAnotherServiceRequest + "?assetId=$assetId",body: {}); response = await ApiManager.instance.post(URLs.CheckIfAssetHasAnotherServiceRequest + "?assetId=$assetId", body: {});
stateCode = response.statusCode; stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {} if (response.statusCode >= 200 && response.statusCode < 300) {}
return PendingAssetServiceRequest.fromJson(json.decode(response.body)["data"]); return PendingAssetServiceRequest.fromJson(json.decode(response.body)["data"]);
@ -190,11 +192,12 @@ class DeviceTransferProvider extends ChangeNotifier {
return response.statusCode; return response.statusCode;
} catch (error) { } catch (error) {
Navigator.pop(context); Navigator.pop(context);
print(error); log('error $error');
return -1; return -1;
} }
} }
Future getSiteData({required int? siteId}) async {
Future getSiteData({required int? siteId}) async {
isSiteLoading = true; isSiteLoading = true;
notifyListeners(); notifyListeners();
try { try {
@ -219,6 +222,4 @@ class DeviceTransferProvider extends ChangeNotifier {
return -1; return -1;
} }
} }
} }

@ -26,6 +26,7 @@ class DeviceTransfer {
this.senderAssignedEmployeeId, this.senderAssignedEmployeeId,
this.senderMachineStatusId, this.senderMachineStatusId,
this.senderComment, this.senderComment,
this.nurseSignature,
this.comment, this.comment,
this.receiverEndUserId, this.receiverEndUserId,
this.receiverEndUserName, this.receiverEndUserName,
@ -229,6 +230,7 @@ class DeviceTransfer {
num? transferNo; num? transferNo;
String? transferCode; String? transferCode;
int? statusValue; int? statusValue;
String? nurseSignature;
Lookup? transferType; Lookup? transferType;
String? assetSerialNo; String? assetSerialNo;
num? assetId; num? assetId;
@ -558,6 +560,7 @@ class DeviceTransfer {
map['statusValue'] = statusValue; map['statusValue'] = statusValue;
map['isSender'] = isSender; map['isSender'] = isSender;
map['techComment'] = isSender! ? senderComment : receiverComment; map['techComment'] = isSender! ? senderComment : receiverComment;
map['nurseSignature'] = nurseSignature;
map['assetTransferAssistantEmployees'] = modelAssistantEmployees; map['assetTransferAssistantEmployees'] = modelAssistantEmployees;
map['assetTransferEngineerTimers'] = assetTransferEngineerTimers; map['assetTransferEngineerTimers'] = assetTransferEngineerTimers;
if (attachments != null) { if (attachments != null) {

@ -705,7 +705,7 @@ class ServiceRequestBottomSheet {
); );
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
MaterialPageRoute(builder: (context) => MaintenanceRequestForm()), MaterialPageRoute(builder: (context) => MaintenanceRequestForm()),
); );
break; break;
} }
@ -850,7 +850,6 @@ class ServiceRequestBottomSheet {
} }
static Future feedBackBottomSheet({required BuildContext context}) { static Future feedBackBottomSheet({required BuildContext context}) {
String feedback = ''; String feedback = '';
TextEditingController _commentController = TextEditingController(); TextEditingController _commentController = TextEditingController();
return buildBottomSheetParent( return buildBottomSheetParent(
@ -1185,122 +1184,133 @@ class ServiceRequestBottomSheet {
})); }));
} }
//TODO need to modify this accroding to FM requirements.... static Future nurseVerifyAssetTransferBottomSheet({required BuildContext context, required Function(String? value) onAckhnowledgePress}) {
bool acknowledge = false;
// static Future nurseVerifyAssetTransferBottomSheet({required BuildContext context}) { Uint8List? newSignature;
// bool acknowledge = false; String? nurseSignature;
// Uint8List? newSignature; return buildBottomSheetParent(
// String? nurseSignature; context: context,
// return buildBottomSheetParent( childWidget: Consumer<ServiceRequestDetailProvider>(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) {
// context: context, return Column(
// childWidget: Consumer<ServiceRequestDetailProvider>(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) { crossAxisAlignment: CrossAxisAlignment.center,
// return Column( children: [
// crossAxisAlignment: CrossAxisAlignment.center, const SizedBox().indicatorWidget(),
// children: [ 8.height,
// const SizedBox().indicatorWidget(), Align(
// 8.height, alignment: AlignmentDirectional.centerStart,
// Align( child: context.translation.nurseSignature.bottomSheetHeadingTextStyle(context),
// alignment: AlignmentDirectional.centerStart, ),
// child: context.translation.pleaseConfirmTheIssueHasBeenResolved.bottomSheetHeadingTextStyle(context), 10.height,
// ), StatefulBuilder(
// 10.height, builder: (context, setState) {
// StatefulBuilder( return Column(
// builder: (context, setState) { children: [
// return Column( // Row(
// children: [ // children: [
// Row( // InkWell(
// children: [ // child: acknowledge
// InkWell( // ? const Icon(
// child: acknowledge // Icons.check_box,
// ? const Icon( // color: AppColor.primary10,
// Icons.check_box, // )
// color: AppColor.primary10, // : const Icon(
// ) // Icons.check_box_outline_blank,
// : const Icon( // color: AppColor.neutral120,
// Icons.check_box_outline_blank, // ),
// color: AppColor.neutral120, // onTap: () {
// ), // setState(() {
// onTap: () { // acknowledge = !acknowledge;
// setState(() { // });
// acknowledge = !acknowledge; // },
// }); // ),
// }, // 6.width,
// ), // Flexible(
// 6.width, // child: context.translation.nurseAcknowledge.bodyText(context).custom(color: context.isDark ? AppColor.primary50 : AppColor.neutral120),
// Flexible( // ),
// child: context.translation.nurseAcknowledge.bodyText(context).custom(color: context.isDark ? AppColor.primary50 : AppColor.neutral120), // ],
// ), // ),
// ], // 17.height,
// ), ESignature(
// 17.height, title: '',
// ESignature( oldSignature: '',
// title: '', newSignature: newSignature,
// oldSignature: '', backgroundColor: AppColor.neutral100,
// newSignature: newSignature, showShadow: false,
// backgroundColor: AppColor.neutral100, onChange: (signature) {
// showShadow: false, if (signature.isEmpty) return;
// onChange: (signature) { setState(() {
// if (signature == null || signature.isEmpty) return; newSignature = signature;
// setState(() { nurseSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
// newSignature = signature; });
// nurseSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; },
// }); onSaved: (signature) {
// }, if (signature == null || signature.isEmpty) return;
// onSaved: (signature) { setState(() {
// if (signature == null || signature.isEmpty) return; newSignature = signature;
// setState(() { nurseSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
// newSignature = signature; });
// nurseSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; },
// }); ),
// }, ],
// ), );
// ], },
// ); ),
// }, 36.height,
// ), AppFilledButton(
// 36.height, label: context.translation.confirm,
// Row( maxWidth: true,
// mainAxisAlignment: MainAxisAlignment.spaceBetween, loading: requestDetailProvider.isLoading,
// mainAxisSize: MainAxisSize.min, buttonColor: AppColor.green70,
// children: [ onPressed: () async {
// AppFilledButton( if (newSignature != null) {
// label: context.translation.reject, Navigator.pop(context);
// maxWidth: true, onAckhnowledgePress(nurseSignature);
// buttonColor: Colors.white54, } else {
// textColor: AppColor.red30, context.translation.signaturesAreRequired.showToast;
// showBorder: true, }
// onPressed: () async { },
// Navigator.pop(context); )
// nurseRejectBackBottomSheet(context: context); // Row(
// }, // mainAxisAlignment: MainAxisAlignment.spaceBetween,
// ).expanded, // mainAxisSize: MainAxisSize.min,
// const SizedBox( // children: [
// width: 20, // // AppFilledButton(
// ), // // label: context.translation.cancel,
// AppFilledButton( // // maxWidth: true,
// label: context.translation.confirm, // // buttonColor: AppColor.white60,
// maxWidth: true, // // textColor: AppColor.black10,
// loading: requestDetailProvider.isLoading, // // showBorder: true,
// buttonColor: AppColor.green70, // // onPressed: () async {
// onPressed: () async { // // Navigator.pop(context);
// if (newSignature != null) { // // },
// requestDetailProvider.nurseActionHelperModel = NurseActionHelperModel(workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, signatureNurse: nurseSignature); // // ).expanded,
// WorkOrderDetail? data = await requestDetailProvider.nurseConfirm(); // // const SizedBox(
// if (data != null) { // // width: 20,
// if (requestDetailProvider.currentWorkOrder!.data!.requestId != null) { // // ),
// requestDetailProvider.updateCurrentWorkOrder(data); // AppFilledButton(
// } // label: context.translation.confirm,
// Navigator.pop(context); // maxWidth: true,
// } // loading: requestDetailProvider.isLoading,
// } else { // buttonColor: AppColor.green70,
// context.translation.signaturesAreRequired.showToast; // onPressed: () async {
// } // if (newSignature != null) {
// }, // requestDetailProvider.nurseActionHelperModel = NurseActionHelperModel(workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, signatureNurse: nurseSignature);
// ).expanded, // WorkOrderDetail? data = await requestDetailProvider.nurseConfirm();
// ], // if (data != null) {
// ) // if (requestDetailProvider.currentWorkOrder!.data!.requestId != null) {
// ], // requestDetailProvider.updateCurrentWorkOrder(data);
// ); // }
// })); // Navigator.pop(context);
// } // }
// } else {
// context.translation.signaturesAreRequired.showToast;
// }
// },
// ).expanded,
// ],
// )
],
);
}));
}
} }

@ -59,7 +59,6 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
_formModel.isSender = widget.isSender; _formModel.isSender = widget.isSender;
_formModel.assetTransferAttachments = []; _formModel.assetTransferAttachments = [];
int workingHours = _formModel.tbsTimer?.endAt!.difference(_formModel.tbsTimer!.startAt!).inSeconds ?? 0; int workingHours = _formModel.tbsTimer?.endAt!.difference(_formModel.tbsTimer!.startAt!).inSeconds ?? 0;
if (widget.isSender) { if (widget.isSender) {
_formModel.senderVisitTimers?.add( _formModel.senderVisitTimers?.add(
VisitTimers( VisitTimers(
@ -94,7 +93,17 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
} catch (error) { } catch (error) {
print(error); print(error);
} }
await _deviceTransferProvider.updateRequest(context, model: _formModel); if(status ==1){
ServiceRequestBottomSheet.nurseVerifyAssetTransferBottomSheet(context: context,onAckhnowledgePress: (signature) async {
//TODO NEED TO CALL API HERE WITH ADDED PARAMETER FOR SIGNATURE FROM BACKEND..
if(signature!=null){
_formModel.nurseSignature = signature;
await _deviceTransferProvider.updateRequest(context, model: _formModel);
}
});
}else {
await _deviceTransferProvider.updateRequest(context, model: _formModel);
}
} }
} }
@ -217,7 +226,6 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
label: context.translation.complete, label: context.translation.complete,
buttonColor: AppColor.primary10, buttonColor: AppColor.primary10,
onPressed: (){ onPressed: (){
// ServiceRequestBottomSheet.nurseVerifyAssetTransferBottomSheet(context: context);
_update(status: 1); _update(status: 1);
} }
).expanded, ).expanded,
@ -226,7 +234,6 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
label: context.translation.complete, label: context.translation.complete,
buttonColor: AppColor.primary10, buttonColor: AppColor.primary10,
onPressed: () { onPressed: () {
// ServiceRequestBottomSheet.nurseVerifyAssetTransferBottomSheet(context: context);
_update(status: 1); _update(status: 1);
}, },
).expanded, ).expanded,

Loading…
Cancel
Save