From 4d548e1048739890ef5c29002a77d0192928cb2f Mon Sep 17 00:00:00 2001 From: zaid_daoud Date: Wed, 2 Aug 2023 11:20:33 +0300 Subject: [PATCH] In Asset Transfer request add Destination label under pick asset --- lib/models/device/device.dart | 8 +- .../request_device_transfer.dart | 82 +++++++++++-------- .../equipment/single_device_picker.dart | 1 - .../gas_refill/building_type_menu.dart | 2 +- .../widgets/gas_refill/floor_type_menu.dart | 2 +- 5 files changed, 56 insertions(+), 39 deletions(-) diff --git a/lib/models/device/device.dart b/lib/models/device/device.dart index 40d2f92b..6c1f5cfe 100644 --- a/lib/models/device/device.dart +++ b/lib/models/device/device.dart @@ -43,10 +43,10 @@ class Device { assetName: parsedJson["assetName"], modelDefinition: ModelDefinition.fromJson(parsedJson["modelDefinition"]), hospital: Hospital.fromJson(parsedJson["site"]), - destBuildingName: parsedJson["destBuildingName"], - destDepartmentName: parsedJson["destDepartmentName"], - destRoom: parsedJson["destRoom"], - destFloor: parsedJson["destFloor"], + destBuildingName: parsedJson["destBuildingName"] ?? parsedJson['building']['name'], + destDepartmentName: parsedJson["destDepartmentName"] ?? parsedJson['department']['departmentName'], + destRoom: parsedJson["destRoom"] ?? parsedJson['room'], + destFloor: parsedJson["destFloor"] ?? parsedJson['floor']['name'], destSiteName: parsedJson['destSiteName'] // parsedJson["modelDefinition"] == null ? "" : // parsedJson["modelDefinition"]["manufacturerName"], diff --git a/lib/views/pages/device_transfer/request_device_transfer.dart b/lib/views/pages/device_transfer/request_device_transfer.dart index 20adb9ec..8d6dbab0 100644 --- a/lib/views/pages/device_transfer/request_device_transfer.dart +++ b/lib/views/pages/device_transfer/request_device_transfer.dart @@ -1,5 +1,3 @@ -import 'dart:developer'; - import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; @@ -17,9 +15,8 @@ import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; import '../../../../controllers/localization/localization.dart'; -import '../../../controllers/providers/api/hospitals_provider.dart'; import '../../../controllers/validator/validator.dart'; -import '../../../models/hospital.dart'; +import '../../app_style/colors.dart'; import '../../widgets/app_text_form_field.dart'; import '../../widgets/gas_refill/building_type_menu.dart'; import '../../widgets/gas_refill/department_type_menu.dart'; @@ -45,7 +42,6 @@ class _RequestDeviceTransferState extends State { final DeviceTransfer _formModel = DeviceTransfer(receiver: DeviceTransferInfo(), sender: DeviceTransferInfo()); final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); - @override void setState(VoidCallback fn) { if (mounted) super.setState(() {}); @@ -149,26 +145,50 @@ class _RequestDeviceTransferState extends State { 6.height, DeviceButton( device: _formModel.device, - onDevicePick: (device) async { + onDevicePick: (device) { _formModel.device = device; - log(device?.hospital?.toMap().toString()); - // _deviceTransferProvider.building.name = device.destDepartmentName; - // _deviceTransferProvider.building?.name = device.destBuildingName; - _isLoading = true; setState(() {}); - HospitalsProvider().getHospitalsListByVal(searchVal: device.hospital.name).then((hos) { - _isLoading = false; - _setHospital(hos.firstWhere((element) => element.name == device.hospital.name)); - _deviceTransferProvider.department = _deviceTransferProvider.hospital.buildings - ?.firstWhere((element) => element.name == device.destBuildingName, orElse: () => null) - ?.floors - ?.firstWhere((element) => element.name == device.destFloor, orElse: () => null) - ?.departments - ?.firstWhere((element) => element.name == device.destDepartmentName, orElse: () => null); - setState(() {}); - }); }, ), + if (_formModel.device != null) 8.height, + if (_formModel.device != null) const ASubTitle("Asset Site"), + if (_formModel.device != null) + Container( + width: double.infinity, + alignment: Alignment.center, + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 16), + decoration: BoxDecoration( + color: AColors.inputFieldBackgroundColor, + border: Border.all( + color: const Color(0xffefefef), + ), + borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), + // boxShadow: const [ + // AppStyle.boxShadow + // ] + ), + child: ASubTitle(_formModel.device?.hospital?.name), + ), + if (_formModel.device != null) 4.height, + if (_formModel.device != null && _formModel.device.destDepartmentName != null) const ASubTitle("Asset Department"), + if (_formModel.device != null && _formModel.device.destDepartmentName != null) + Container( + width: double.infinity, + alignment: Alignment.center, + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 16), + decoration: BoxDecoration( + color: AColors.inputFieldBackgroundColor, + border: Border.all( + color: const Color(0xffefefef), + ), + borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), + // boxShadow: const [ + // AppStyle.boxShadow + // ] + ), + child: ASubTitle(_formModel.device.destDepartmentName.toString()), + ), + if (_formModel.device != null) 8.height, // const SizedBox(height: 8,), // const ASubTitle("Sender Department"), // if(_validate && _formModel.senderDepartment == null) @@ -217,6 +237,8 @@ class _RequestDeviceTransferState extends State { Divider( color: Theme.of(context).colorScheme.primary, ), + const SizedBox(height: 8), + const ASubTitle("Destination"), const SizedBox( height: 4, ), @@ -226,7 +248,11 @@ class _RequestDeviceTransferState extends State { // _search.hospital = value; // }, onSearch: (value) { - _setHospital(value); + _deviceTransferProvider.hospital = value; + _deviceTransferProvider.building = null; + _deviceTransferProvider.floor = null; + _deviceTransferProvider.department = null; + _formModel.receiver.client = value; setState(() {}); }, ), @@ -261,8 +287,8 @@ class _RequestDeviceTransferState extends State { }, ), const SizedBox(height: 8), - ASubTitle("Room"), - SizedBox( + const ASubTitle("Room"), + const SizedBox( height: 4, ), ATextFormField( @@ -291,12 +317,4 @@ class _RequestDeviceTransferState extends State { ), ); } - - void _setHospital(Hospital hospital) { - _deviceTransferProvider.hospital = hospital; - _deviceTransferProvider.building = null; - _deviceTransferProvider.floor = null; - _deviceTransferProvider.department = null; - _formModel.receiver.client = hospital; - } } diff --git a/lib/views/widgets/equipment/single_device_picker.dart b/lib/views/widgets/equipment/single_device_picker.dart index 508601bd..3ae33b7d 100644 --- a/lib/views/widgets/equipment/single_device_picker.dart +++ b/lib/views/widgets/equipment/single_device_picker.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/devices_provider.dart'; diff --git a/lib/views/widgets/gas_refill/building_type_menu.dart b/lib/views/widgets/gas_refill/building_type_menu.dart index 2043f157..afccd900 100644 --- a/lib/views/widgets/gas_refill/building_type_menu.dart +++ b/lib/views/widgets/gas_refill/building_type_menu.dart @@ -80,7 +80,7 @@ class _BuildingTypeMenuState extends State { return DropdownMenuItem( value: value, child: Text( - value.name, + value.name ?? "", style: Theme.of(context).textTheme.subtitle1.copyWith( color: Theme.of(context).primaryColor, fontSize: 11, diff --git a/lib/views/widgets/gas_refill/floor_type_menu.dart b/lib/views/widgets/gas_refill/floor_type_menu.dart index e8fe78f7..df5d3325 100644 --- a/lib/views/widgets/gas_refill/floor_type_menu.dart +++ b/lib/views/widgets/gas_refill/floor_type_menu.dart @@ -80,7 +80,7 @@ class _FloorTypeMenuState extends State { return DropdownMenuItem( value: value, child: Text( - value.name, + value.name ?? "", style: Theme.of(context).textTheme.subtitle1.copyWith( color: Theme.of(context).primaryColor, fontSize: 11,