From e3531d471d666d2927a9a9a63f9907b1a0ca3353 Mon Sep 17 00:00:00 2001 From: WaseemAbbasi22 Date: Sun, 4 May 2025 17:26:16 +0300 Subject: [PATCH] ATOMS-783 fixed --- .../api/device_transfer_provider.dart | 36 +++++- lib/models/device/device_transfer.dart | 40 +++---- .../create__device_transfer_request.dart | 112 ++++++++---------- .../device_transfer_details.dart | 3 - 4 files changed, 106 insertions(+), 85 deletions(-) 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 2ee23b24..b850cd53 100644 --- a/lib/models/device/device_transfer.dart +++ b/lib/models/device/device_transfer.dart @@ -699,26 +699,26 @@ class DeviceTransfer { 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 ef0c80e7..858c4b93 100644 --- a/lib/views/pages/device_transfer/device_transfer_details.dart +++ b/lib/views/pages/device_transfer/device_transfer_details.dart @@ -204,10 +204,7 @@ class _DeviceTransferDetailsState extends State { _internalRequestDetailsCard({StatusLabel? statusLabel}) { bool isCurrentEngineerEligibleForEdit = _model?.senderAssignedEmployeeId == _userProvider!.user?.userID; - - // bool isCurrentRequestEditAble = ((_model?.senderMachineStatusName?.toLowerCase().contains("close") ?? false)); bool isCurrentRequestEditAble = (!(_model?.senderMachineStatusValue==3)); - return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [