diff --git a/lib/controllers/providers/api/device_transfer_provider.dart b/lib/controllers/providers/api/device_transfer_provider.dart index 3ccf6851..30a0ed12 100644 --- a/lib/controllers/providers/api/device_transfer_provider.dart +++ b/lib/controllers/providers/api/device_transfer_provider.dart @@ -9,6 +9,7 @@ import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/device/device_transfer.dart'; +import 'package:test_sa/models/new_models/site.dart'; import 'package:test_sa/models/service_request/pending_service_request_model.dart'; import 'package:test_sa/models/user.dart'; @@ -20,10 +21,18 @@ class DeviceTransferProvider extends ChangeNotifier { final pageItemNumber = 12; DeviceTransfer transferModel = DeviceTransfer(); + bool isSiteLoading = false; + Asset ?_internalAssetDestination = Asset(); - //reset provider data + Asset ?get internalAssetDestination => _internalAssetDestination; + + set internalAssetDestination(Asset? value) { + _internalAssetDestination = value; + notifyListeners(); + } //reset provider data void reset() { items = null; + isSiteLoading = false; nextPage = true; stateCode = null; hospital = null; @@ -185,6 +194,31 @@ class DeviceTransferProvider extends ChangeNotifier { return -1; } } + Future getSiteData({required int? siteId}) async { + isSiteLoading = true; + notifyListeners(); + try { + Response response = await ApiManager.instance.get(URLs.getSiteAutoCompleteWithoutConditionSites + "?id=$siteId"); + stateCode = response.statusCode; + if (response.statusCode >= 200 && response.statusCode < 300) { + List? siteData = json.decode(response.body)["data"]; + if (siteData != null && siteData.isNotEmpty) { + internalAssetDestination?.site = Site.fromJson(siteData.first); + } + // internalAssetDestination?.building = internalAssetDestination?.site?.buildings?.firstWhere((element) => element.value == internalAssetDestination?.installationBuilding?.value, orElse: () => Building()); + // taskRequestModel?.floor = taskRequestModel?.building?.floors?.firstWhere((element) => element.value == taskRequestModel?.installationFloor?.value, orElse: () => Floor()); + // taskRequestModel?.department = taskRequestModel?.floor?.departments?.firstWhere((element) => element.name == taskRequestModel?.installationDepartment?.name, orElse: () => Department()); + } + isSiteLoading = false; + notifyListeners(); + return response.statusCode; + } catch (error) { + isSiteLoading = false; + stateCode = -1; + notifyListeners(); + return -1; + } + } } diff --git a/lib/models/device/device_transfer.dart b/lib/models/device/device_transfer.dart index ce8ed217..b850cd53 100644 --- a/lib/models/device/device_transfer.dart +++ b/lib/models/device/device_transfer.dart @@ -40,6 +40,7 @@ class DeviceTransfer { this.senderAttachments, this.receiverAssignedEmployeeId, this.receiverMachineStatusId, + this.senderMachineStatusValue, this.receiverComment, this.receiverStartDate, this.receiverEndDate, @@ -70,6 +71,7 @@ class DeviceTransfer { this.modifiedOn, this.receiverAssignedEmployeeName, this.receiverEngSignatureUrl, + this.receiverMachineStatusValue, this.receiverMachineStatusName, this.senderAssignedEmployeeName, this.senderBuildingName, @@ -110,6 +112,7 @@ class DeviceTransfer { senderRoom = json['senderRoom']; senderAssignedEmployeeId = json['senderAssignedEmployeeId']; senderMachineStatusId = json['senderMachineStatusId']; + senderMachineStatusValue = json['senderMachineStatusValue']; senderComment = json['senderComment']; comment = json['comment']; receiverEndUserId = json['receiverEndUserId']; @@ -133,6 +136,7 @@ class DeviceTransfer { } receiverAssignedEmployeeId = json['receiverAssignedEmployeeId']; receiverMachineStatusId = json['receiverMachineStatusId']; + receiverMachineStatusValue = json['receiverMachineStatusValue']; receiverComment = json['receiverComment']; receiverStartDate = json['receiverStartDate']; receiverEndDate = json['receiverEndDate']; @@ -242,6 +246,7 @@ class DeviceTransfer { String? senderRoom; String? senderAssignedEmployeeId; num? senderMachineStatusId; + int? senderMachineStatusValue; String? senderComment; String? comment; String? receiverEndUserId; @@ -256,6 +261,7 @@ class DeviceTransfer { List? assetTransferAttachments; String? receiverAssignedEmployeeId; num? receiverMachineStatusId; + int? receiverMachineStatusValue; String? receiverComment; String? receiverStartDate; String? receiverEndDate; @@ -351,6 +357,8 @@ class DeviceTransfer { String? senderEngSignatureUrl, String? receiverAssignedEmployeeName, String? receiverMachineStatusName, + int? receiverMachineStatusValue, + int? senderMachineStatusValue, String? receiverEngSignatureUrl, bool? applied, dynamic extensionNo, @@ -419,10 +427,12 @@ class DeviceTransfer { senderDepartmentName: senderDepartmentName ?? this.senderDepartmentName, senderAssignedEmployeeName: senderAssignedEmployeeName ?? this.senderAssignedEmployeeName, senderMachineStatusName: senderMachineStatusName ?? this.senderMachineStatusName, + senderMachineStatusValue: senderMachineStatusValue ?? this.senderMachineStatusValue, senderEngSignatureUrl: senderEngSignatureUrl ?? this.senderEngSignatureUrl, receiverAssignedEmployeeName: receiverAssignedEmployeeName ?? this.receiverAssignedEmployeeName, receiverMachineStatusName: receiverMachineStatusName ?? this.receiverMachineStatusName, receiverEngSignatureUrl: receiverEngSignatureUrl ?? this.receiverEngSignatureUrl, + receiverMachineStatusValue: receiverMachineStatusValue ?? this.receiverMachineStatusValue, applied: applied ?? this.applied, extensionNo: extensionNo ?? this.extensionNo, employeeId: employeeId ?? this.employeeId, @@ -683,29 +693,32 @@ class DeviceTransfer { manufacturerName = assetTransfer.manufacturerName; senderVisitTimers = assetTransfer.senderVisitTimers; receiverVisitTimers = assetTransfer.receiverVisitTimers; + assetTransferAttachments=assetTransfer.assetTransferAttachments; assetTransferAssistantEmployeesReceiver = assetTransfer.assetTransferAssistantEmployeesReceiver; assetTransferAssistantEmployeesSender = assetTransfer.assetTransferAssistantEmployeesSender; + senderMachineStatusValue = assetTransfer.senderMachineStatusValue; + receiverMachineStatusValue = assetTransfer.receiverMachineStatusValue; } - - Future validate(BuildContext context) async { - if (assetId == null) { - await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.device}"); - return false; - } else if (destSiteId == null) { - await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.destinationSite}"); - return false; - } else if (destBuildingId == null) { - await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.building}"); - return false; - } else if (destFloorId == null) { - await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.floor}"); - return false; - } else if (destDepartmentId == null) { - await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.department}"); - return false; - } - return true; - } + // + // Future validate(BuildContext context) async { + // if (assetId == null) { + // await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.device}"); + // return false; + // } else if (destSiteId == null) { + // await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.destinationSite}"); + // return false; + // } else if (destBuildingId == null) { + // await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.building}"); + // return false; + // } else if (destFloorId == null) { + // await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.floor}"); + // return false; + // } else if (destDepartmentId == null) { + // await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.department}"); + // return false; + // } + // return true; + // } } class AssetTransferAssistantEmployees { diff --git a/lib/views/pages/device_transfer/create__device_transfer_request.dart b/lib/views/pages/device_transfer/create__device_transfer_request.dart index df6840ba..f2bcadeb 100644 --- a/lib/views/pages/device_transfer/create__device_transfer_request.dart +++ b/lib/views/pages/device_transfer/create__device_transfer_request.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'dart:io'; import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; import 'package:test_sa/dashboard_latest/dashboard_provider.dart'; @@ -12,6 +13,7 @@ import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/device/device_transfer.dart'; import 'package:test_sa/models/device/asset_transfer_attachment.dart'; import 'package:test_sa/models/enums/user_types.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/department.dart'; import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/service_request/pending_service_request_model.dart'; @@ -42,14 +44,13 @@ class CreateDeviceTransferRequest extends StatefulWidget { class _CreateDeviceTransferRequestState extends State { late DeviceTransferProvider _deviceTransferProvider; - final TextEditingController _requestedQuantityController = TextEditingController(); final DeviceTransfer _transferModel = DeviceTransfer(id: 0); final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); - final TextEditingController _receiverNameController = TextEditingController(), _commentsController = TextEditingController(); - final Asset _assetDestination = Asset(); + Asset _assetDestination = Asset(); Asset? _pickedAsset; final List _deviceImages = []; + bool isInternal = true; PendingAssetServiceRequest? pendingAssetServiceRequest; @override @@ -71,13 +72,15 @@ class _CreateDeviceTransferRequestState extends State attachement = []; for (var item in _deviceImages) { - attachement.add(AssetTransferAttachment(id: 0, attachmentName: "${item.path.split("/").last}|${base64Encode(item.readAsBytesSync())}")); + attachement.add(AssetTransferAttachment(id: 0, attachmentName: "${item.path + .split("/") + .last}|${base64Encode(item.readAsBytesSync())}")); } _transferModel.attachments = attachement; @@ -85,16 +88,17 @@ class _CreateDeviceTransferRequestState extends State(context,listen: false); - dashBoardProvider.refreshDashboard(context: context,userType: UsersTypes.nurse); + if (_deviceTransferProvider.stateCode == 200) { + DashBoardProvider dashBoardProvider = Provider.of(context, listen: false); + dashBoardProvider.refreshDashboard(context: context, userType: UsersTypes.nurse); } } @override void initState() { WidgetsBinding.instance.addPostFrameCallback((_) async { - Provider.of(context, listen: false).getDate(); + //need to get internal and external request type data.. + await Provider.of(context, listen: false).getDate(); }); super.initState(); } @@ -102,10 +106,7 @@ class _CreateDeviceTransferRequestState extends State checkAssetForPendingServiceRequest(int assetId) async { - checkPendingRequest = true; - setState(() {}); - - pendingAssetServiceRequest = await _deviceTransferProvider.checkAssetPendingRequest(assetId); - await Future.delayed(const Duration(milliseconds: 250)); - - checkPendingRequest = false; - setState(() {}); - } - - void showPendingRequestBottomSheet() async { - bool view = (await showModalBottomSheet( - context: context, - isDismissible: false, - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.vertical( - top: Radius.circular(20), - ), - ), - clipBehavior: Clip.antiAliasWithSaveLayer, - builder: (BuildContext context) => PendingRequestBottomSheet(pendingAssetServiceRequest!, _pickedAsset!), - )) as bool; - if (view) { - showPendingRequests(); - } - } Widget requestTypeWidget(BuildContext context) { return Consumer(builder: (cxt, snapshot, _) { try { _transferModel.transferType ??= snapshot.items.first; } catch (ex) { - print("snapshot.items:${snapshot.items.length}"); + print(ex); } return Column( @@ -333,6 +296,9 @@ class _CreateDeviceTransferRequestState extends State validateRequest() async { + if (_pickedAsset == null) { + await Fluttertoast.showToast(msg: "Please Select Asset"); + return false; + } + if (_assetDestination.site == null) { + await Fluttertoast.showToast(msg: "Please Select Site"); + return false; + } + if (_assetDestination.building == null) { + await Fluttertoast.showToast(msg: "Please Select Building"); + return false; + } + if (_assetDestination.floor == null) { + await Fluttertoast.showToast(msg: "Please Select Floor"); + return false; + } + if (_assetDestination.department == null) { + await Fluttertoast.showToast(msg: "Please Select Department"); + return false; + } + return true; + } +} \ No newline at end of file diff --git a/lib/views/pages/device_transfer/device_transfer_details.dart b/lib/views/pages/device_transfer/device_transfer_details.dart index 88cee662..858c4b93 100644 --- a/lib/views/pages/device_transfer/device_transfer_details.dart +++ b/lib/views/pages/device_transfer/device_transfer_details.dart @@ -138,40 +138,53 @@ class _DeviceTransferDetailsState extends State { ], ).toShadowContainer(context), 8.height, - // sender card - _buildCard( - isSender: true, - site: _model?.senderSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - dept: _model?.senderDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - building: _model?.senderBuildingName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - floor: _model?.senderFloorName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - comment: _model?.senderComment ?? "", - statusLabel: _model?.senderMachineStatusName != null - ? StatusLabel( - label: _model!.senderMachineStatusName!, - id: _model!.senderMachineStatusId!.toInt(), - textColor: AppColor.getRequestStatusTextColorByName(context, _model!.senderMachineStatusName!), - backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.senderMachineStatusName!), - ) - : null, - ), - 8.height, - // receiver card - _buildCard( - isSender: false, - site: _model?.destSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - dept: _model?.destDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - building: _model?.destBuildingName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - floor: _model?.destFloorName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - comment: _model?.receiverComment ?? "", - statusLabel: _model?.receiverMachineStatusName != null - ? StatusLabel( - label: _model!.receiverMachineStatusName ?? "", - id: _model!.receiverMachineStatusId!.toInt(), - textColor: AppColor.getRequestStatusTextColorByName(context, _model!.receiverMachineStatusName!), - backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.receiverMachineStatusName!)) - : null, - ), + if (_model?.transferType?.value == 1) ...[ + _internalRequestDetailsCard( + statusLabel: _model?.senderMachineStatusName != null + ? StatusLabel( + label: _model!.senderMachineStatusName!, + id: _model!.senderMachineStatusId!.toInt(), + textColor: AppColor.getRequestStatusTextColorByName(context, _model!.senderMachineStatusName!), + backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.senderMachineStatusName!), + ) + : null, + ) + ] else ...[ + // sender card + _buildCard( + isSender: true, + site: _model?.senderSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", + dept: _model?.senderDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", + building: _model?.senderBuildingName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", + floor: _model?.senderFloorName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", + comment: _model?.senderComment ?? "", + statusLabel: _model?.senderMachineStatusName != null + ? StatusLabel( + label: _model!.senderMachineStatusName!, + id: _model!.senderMachineStatusId!.toInt(), + textColor: AppColor.getRequestStatusTextColorByName(context, _model!.senderMachineStatusName!), + backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.senderMachineStatusName!), + ) + : null, + ), + 8.height, + // receiver card + _buildCard( + isSender: false, + site: _model?.destSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", + dept: _model?.destDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", + building: _model?.destBuildingName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", + floor: _model?.destFloorName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", + comment: _model?.receiverComment ?? "", + statusLabel: _model?.receiverMachineStatusName != null + ? StatusLabel( + label: _model!.receiverMachineStatusName ?? "", + id: _model!.receiverMachineStatusId!.toInt(), + textColor: AppColor.getRequestStatusTextColorByName(context, _model!.receiverMachineStatusName!), + backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.receiverMachineStatusName!)) + : null, + ), + ], ], ).paddingAll(16), ), @@ -184,39 +197,64 @@ class _DeviceTransferDetailsState extends State { ); } - // Widget attachmentWidget() { - // _attachments.forEach((abc) { - // print(abc); - // }); - // - // return Column( - // crossAxisAlignment: CrossAxisAlignment.start, - // children: [ - // 8.height, - // if (_attachments.isNotEmpty) ...[ - // const Divider().defaultStyle(context), - // context.translation.attachments.bodyText(context), - // 8.height, - // MultiFilesPicker( - // label: context.translation.attachments, - // files: _attachments, - // enabled: false, - // onlyImages: false, - // ), - // ], - // ], - // ); - // } _buildTextWidget(String text) { return text.bodyText(context); } + _internalRequestDetailsCard({StatusLabel? statusLabel}) { + bool isCurrentEngineerEligibleForEdit = _model?.senderAssignedEmployeeId == _userProvider!.user?.userID; + bool isCurrentRequestEditAble = (!(_model?.senderMachineStatusValue==3)); + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + statusLabel ?? Container(), + if (statusLabel != null) 8.height, + + ], + ), + if ((_userProvider!.user?.type == UsersTypes.engineer)) + if (isCurrentEngineerEligibleForEdit && isCurrentRequestEditAble) + "edit".toSvgAsset(height: 40, width: 40).onPress(() async { + bool isReload = (await Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model!, isSender: true)))) as bool; + if (isReload ?? false) { + setState(() {}); + } + }), + ], + ), + context.translation.details.heading5(context), + infoText(label: context.translation.site, value: _model?.senderSiteName), + infoText(label: "Sender Building".addTranslation, value: _model?.senderBuildingName), + infoText(label: "Sender Floor".addTranslation, value: _model?.senderFloorName), + infoText(label: "Sender Department".addTranslation, value: _model?.senderDepartmentName), + infoText(label: "Receiver Building".addTranslation, value: _model?.destBuildingName), + infoText(label: "Receiver Floor".addTranslation, value: _model?.destFloorName), + infoText(label: "Receiver Department".addTranslation, value: _model?.destDepartmentName), + if (_model!.comment != null && _model!.comment!.isNotEmpty) ...[ + 8.height, + const Divider().defaultStyle(context), + Text( + "Technical Comments".addTranslation, + style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), + ), + _buildTextWidget(_model?.comment ?? ''), + ] + ], + ).toShadowContainer(context); + } + _buildCard({required String site, String? building, String? dept, String? floor, required String comment, required bool isSender, StatusLabel? statusLabel}) { bool isCurrentEngineerEligibleForEdit = isSender ? _model?.senderAssignedEmployeeId == _userProvider!.user?.userID : _model?.receiverAssignedEmployeeId == _userProvider!.user?.userID; bool isCurrentRequestClosed = - isSender ? ((_model?.senderMachineStatusName?.toLowerCase().contains("close") ?? false)) : ((_model?.receiverMachineStatusName?.toLowerCase().contains("close") ?? false)); + isSender ? ((_model?.senderMachineStatusValue==3)) : ((_model?.receiverMachineStatusValue==3)); return Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -239,7 +277,6 @@ class _DeviceTransferDetailsState extends State { // ? (!(_model?.senderMachineStatusName?.toLowerCase()?.contains("close") ?? false) && !(_model?.senderMachineStatusName?.toLowerCase()?.contains("complete") ?? false)) // : (!(_model?.receiverMachineStatusName?.toLowerCase()?.contains("close") ?? false) && !(_model?.receiverMachineStatusName?.toLowerCase()?.contains("complete") ?? false))) // - "edit".toSvgAsset(height: 48, width: 48).onPress(() async { bool isReload = (await Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model!, isSender: isSender)))) as bool; if (isReload ?? false) { diff --git a/lib/views/pages/device_transfer/update_device_transfer.dart b/lib/views/pages/device_transfer/update_device_transfer.dart index 6e9a88d7..89427ae1 100644 --- a/lib/views/pages/device_transfer/update_device_transfer.dart +++ b/lib/views/pages/device_transfer/update_device_transfer.dart @@ -401,9 +401,9 @@ class _UpdateDeviceTransferState extends State { _formModel.statusValue = status; _formModel.isSender = widget.isSender; + _formModel.assetTransferAttachments = []; if (widget.isSender) { - _formModel.senderAttachments = []; _formModel.senderVisitTimers?.add( VisitTimers( id: 0, @@ -414,7 +414,6 @@ class _UpdateDeviceTransferState extends State { ); _formModel.assetTransferEngineerTimers = _formModel.senderVisitTimers; } else { - _formModel.receiverAttachments = []; _formModel.receiverVisitTimers?.add( VisitTimers( id: 0, @@ -432,13 +431,14 @@ class _UpdateDeviceTransferState extends State { attachmentName = file.path.split("/").last; attachmentName = "$attachmentName|${base64Encode(file.readAsBytesSync())}"; } - if (widget.isSender) { - _formModel.senderAttachments!.add(AssetTransferAttachment(id: 0, attachmentName: attachmentName)); - _formModel.attachments = _formModel.senderAttachments; - } else { - _formModel.receiverAttachments!.add(AssetTransferAttachment(id: 0, attachmentName: attachmentName)); - _formModel.attachments = _formModel.receiverAttachments; - } + // if (widget.isSender) { + _formModel.assetTransferAttachments!.add(AssetTransferAttachment(id: 0, attachmentName: attachmentName)); + _formModel.attachments = _formModel.assetTransferAttachments; + // } + // else { + // _formModel.receiverAttachments!.add(AssetTransferAttachment(id: 0, attachmentName: attachmentName)); + // _formModel.attachments = _formModel.receiverAttachments; + // } } } catch (error) { print(error); @@ -450,12 +450,7 @@ class _UpdateDeviceTransferState extends State { @override void initState() { _formModel.fromDetails(widget.model); - - if (widget.isSender) { - _files = widget.model.senderAttachments?.map((e) => File(e.attachmentName!)).toList() ?? []; - } else { - _files = widget.model.receiverAttachments?.map((e) => File(e.attachmentName!)).toList() ?? []; - } + _files = widget.model.assetTransferAttachments?.map((e) => File(e.attachmentName!)).toList() ?? []; super.initState(); } @@ -474,10 +469,7 @@ class _UpdateDeviceTransferState extends State { double totalWorkingHours = widget.isSender ? (widget.model.senderVisitTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endDateTime!).difference(DateTime.parse(item.startDateTime!)).inSeconds) ?? 0) : (widget.model.receiverVisitTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endDateTime!).difference(DateTime.parse(item.startDateTime!)).inSeconds) ?? 0); - bool isTimerEnable = widget.isSender - ? (!(_formModel.senderMachineStatusName?.toLowerCase().contains("close") ?? false) || !(_formModel.senderMachineStatusName?.toLowerCase().contains("complete") ?? false)) - : (!(_formModel.receiverMachineStatusName?.toLowerCase().contains("close") ?? false) || !(_formModel.receiverMachineStatusName?.toLowerCase().contains("complete") ?? false)); - + bool isTimerEnable = widget.isSender ? (!(_formModel.senderMachineStatusValue == 3)) : (!(_formModel.receiverMachineStatusValue == 3)); return Scaffold( appBar: DefaultAppBar(title: context.translation.transferAsset, onWillPopScope: () { @@ -545,11 +537,19 @@ class _UpdateDeviceTransferState extends State { onPressed: () => _update(status: 0), ).expanded, 12.width, - AppFilledButton( - label: context.translation.complete, - buttonColor: AppColor.primary10, - onPressed: () => _update(status: 1), - ).expanded, + if (!widget.isSender && _formModel.senderMachineStatusValue == 3) ...[ + AppFilledButton( + label: context.translation.complete, + buttonColor: AppColor.primary10, + onPressed: () => _update(status: 1), + ).expanded, + ] else if (widget.isSender) ...[ + AppFilledButton( + label: context.translation.complete, + buttonColor: AppColor.primary10, + onPressed: () => _update(status: 1), + ).expanded, + ], ], ), ),