From ff9cb5102c302c53b8c814c0079a49d007941169 Mon Sep 17 00:00:00 2001 From: zaid_daoud Date: Wed, 2 Aug 2023 10:34:08 +0300 Subject: [PATCH] Solution #2 : View the site and department of picked asset --- .../request_device_transfer.dart | 80 ++++++++----------- 1 file changed, 32 insertions(+), 48 deletions(-) diff --git a/lib/views/pages/device_transfer/request_device_transfer.dart b/lib/views/pages/device_transfer/request_device_transfer.dart index 61918a0c..20adb9ec 100644 --- a/lib/views/pages/device_transfer/request_device_transfer.dart +++ b/lib/views/pages/device_transfer/request_device_transfer.dart @@ -1,3 +1,5 @@ +import 'dart:developer'; + import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; @@ -15,8 +17,9 @@ 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 '../../app_style/colors.dart'; +import '../../../models/hospital.dart'; import '../../widgets/app_text_form_field.dart'; import '../../widgets/gas_refill/building_type_menu.dart'; import '../../widgets/gas_refill/department_type_menu.dart'; @@ -42,6 +45,7 @@ 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(() {}); @@ -145,50 +149,26 @@ class _RequestDeviceTransferState extends State { 6.height, DeviceButton( device: _formModel.device, - onDevicePick: (device) { + onDevicePick: (device) async { _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("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("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) @@ -246,11 +226,7 @@ class _RequestDeviceTransferState extends State { // _search.hospital = value; // }, onSearch: (value) { - _deviceTransferProvider.hospital = value; - _deviceTransferProvider.building = null; - _deviceTransferProvider.floor = null; - _deviceTransferProvider.department = null; - _formModel.receiver.client = value; + _setHospital(value); setState(() {}); }, ), @@ -285,8 +261,8 @@ class _RequestDeviceTransferState extends State { }, ), const SizedBox(height: 8), - const ASubTitle("Room"), - const SizedBox( + ASubTitle("Room"), + SizedBox( height: 4, ), ATextFormField( @@ -315,4 +291,12 @@ class _RequestDeviceTransferState extends State { ), ); } + + void _setHospital(Hospital hospital) { + _deviceTransferProvider.hospital = hospital; + _deviceTransferProvider.building = null; + _deviceTransferProvider.floor = null; + _deviceTransferProvider.department = null; + _formModel.receiver.client = hospital; + } }