diff --git a/lib/api/device_transfer_api_client.dart b/lib/api/device_transfer_api_client.dart index 1b2bfd2..34cf2b9 100644 --- a/lib/api/device_transfer_api_client.dart +++ b/lib/api/device_transfer_api_client.dart @@ -34,14 +34,16 @@ class DeviceTransferApiClient { required DeviceTransfer model, }) async { Map body = { - "uid": UserApiClient().user?.id.toString() ?? "", - "token": UserApiClient().user?.token ?? "", - "serial_id": model.device?.id ?? "", - "destination_client": model.receiver?.client?.id ?? "", - "destination_department": model.receiver?.department?.id ?? "", + "id": model.id??0, + "assetId": model.device?.id, + "destSiteId":model.receiver?.client?.id, + "senderSiteId":model.sender?.userId, + "receiverAssignedEmployeeId": model.receiver?.userId }; - final response = await ApiClient().postJsonForResponse("${URLs.host1}${URLs.requestDeviceTransfer}", body, isFormData: true); + print(body); + + final response = await ApiClient().postJsonForResponse("${URLs.host1}${URLs.requestDeviceTransfer}", body, isFormData: false); return DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]); } @@ -49,18 +51,20 @@ class DeviceTransferApiClient { Future updateRequest({ required bool isSender, required String requestId, - required DeviceTransfer? oldModel, + required DeviceTransfer oldModel, required DeviceTransferInfo newModel, }) async { Map body = { - "uid": UserApiClient().user?.id.toString(), - "token": UserApiClient().user?.token, - "current_user": UserApiClient().user?.id, + "id": oldModel.id??0, + "assetId": oldModel.device?.id, + "destSiteId":oldModel.receiver?.client?.id, + "senderSiteId":oldModel.sender?.userId, + "receiverAssignedEmployeeId": oldModel.receiver?.userId }; body.addAll(newModel.toJson(isSender)); - final response = await ApiClient().postJsonForResponse("${URLs.host1}${URLs.updateDeviceTransfer}/$requestId", body); + final response = await ApiClient().putJsonForResponse("${URLs.host1}${URLs.updateDeviceTransfer}", body); return DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]); } diff --git a/lib/api/gaz_cylinder_size_api_client.dart b/lib/api/gaz_cylinder_size_api_client.dart new file mode 100644 index 0000000..4b57b8d --- /dev/null +++ b/lib/api/gaz_cylinder_size_api_client.dart @@ -0,0 +1,22 @@ +import 'dart:convert'; + +import 'package:http/http.dart'; + +import '../controllers/api_routes/urls.dart'; +import '../models/lookup.dart'; +import 'api_client.dart'; + +class GazCylinderSizeApiClient{ + + static final GazCylinderSizeApiClient _instance = GazCylinderSizeApiClient._internal(); + + GazCylinderSizeApiClient._internal(); + + factory GazCylinderSizeApiClient() => _instance; + + Future getData() async { + Response response= await ApiClient().getJsonForResponse("${URLs.host1}${URLs.getGasCylinderSize}"); + var categoriesListJson = json.decode(response.body); + return categoriesListJson['data'].map((item) => Lookup.fromJson(item)).toList(); + } +} \ No newline at end of file diff --git a/lib/controllers/providers/api/device_transfer_provider.dart b/lib/controllers/providers/api/device_transfer_provider.dart index 330d207..066b12d 100644 --- a/lib/controllers/providers/api/device_transfer_provider.dart +++ b/lib/controllers/providers/api/device_transfer_provider.dart @@ -71,7 +71,7 @@ class DeviceTransferProvider extends LoadingNotifier { required User user, required bool isSender, required String requestId, - required DeviceTransfer? oldModel, + required DeviceTransfer oldModel, required DeviceTransferInfo newModel, }) async { reset(); diff --git a/lib/controllers/providers/api/hospitals_provider.dart b/lib/controllers/providers/api/hospitals_provider.dart index db9abfe..9c0225d 100644 --- a/lib/controllers/providers/api/hospitals_provider.dart +++ b/lib/controllers/providers/api/hospitals_provider.dart @@ -16,7 +16,6 @@ class HospitalsProvider extends LoadingNotifier { //reset provider data void reset() { - _hospitals.clear(); _stateCode = null; } @@ -36,13 +35,16 @@ class HospitalsProvider extends LoadingNotifier { required String? title, }) async { waitApiRequest(() async { - _hospitals = []; + _hospitals.clear(); _hospitals.addAll(await HospitalsApiClient().getHospitals(title: title ?? "", pageSize: _hospitals.length ~/ pageItemNumber)); notifyListeners(); }, onSuccess: (){ _stateCode = 200; - } + }, + onError: (error) { + _stateCode = error.error?.errorCode; + }, ); } diff --git a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart index cc767b8..a43bb38 100644 --- a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart @@ -4,15 +4,16 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import '../../../../../api/gaz_cylinder_size_api_client.dart'; import '../../../../../models/lookup.dart'; import '../../../../../models/user.dart'; import '../../../../api_routes/urls.dart'; +import '../../../loading_notifier.dart'; -class GasCylinderSizesProvider extends ChangeNotifier { +class GasCylinderSizesProvider extends LoadingNotifier { //reset provider data void reset() { - _items = null; - _loading = null; + _items.clear(); _stateCode = null; } @@ -25,57 +26,20 @@ class GasCylinderSizesProvider extends ChangeNotifier { // contain user data // when user not login or register _user = null - List? _items; + List _items=[]; - List? get items => _items; + List get items => _items; - // when categories in-process _loading = true - // done _loading = true - // failed _loading = false - bool? _loading; - - bool? get isLoading => _loading; - - set isLoading(bool? isLoading) { - _loading = isLoading; - notifyListeners(); - } - - /// return -2 if request in progress - /// return -1 if error happen when sending request - /// return state code if request complete may be 200, 404 or 403 - /// for more details check http state manager - /// lib\controllers\http_status_manger\http_status_manger.dart - Future getData({ - required String? host, - required User? user, - }) async { - if (_loading == true) { - return -2; - } - _loading = true; - notifyListeners(); - Response response; - try { - - response = await get( - Uri.parse((host ?? '') + URLs.getGasCylinderSize), - ); - _stateCode = response.statusCode; - if (response.statusCode >= 200 && response.statusCode < 300) { - // client's request was successfully received - - var categoriesListJson = json.decode(response.body); - _items = categoriesListJson['data'].map((item) => Lookup.fromJson(item)).toList(); - } - _loading = false; + Future getData() async { + waitApiRequest(() async { + _items = await GazCylinderSizeApiClient().getData(); notifyListeners(); - return response.statusCode; - } catch (error) { - _loading = false; - _stateCode = -1; + }, + onSuccess: (){ + _stateCode = 200; notifyListeners(); - return -1; } + ); + } } diff --git a/lib/models/device/device.dart b/lib/models/device/device.dart index db628c7..dd85398 100644 --- a/lib/models/device/device.dart +++ b/lib/models/device/device.dart @@ -25,19 +25,19 @@ class Device { this.warrantyDate, }); - factory Device.fromJson(Map parsedJson) { + factory Device.fromJson(Map? parsedJson) { return Device( - id: parsedJson["nid"] ?? parsedJson["id"].toString(), - serialNumber: parsedJson["sn"] ?? parsedJson["value"], - number: parsedJson["asset_no"], - brand: parsedJson["brand"] as String?, - model: parsedJson["model"] as String?, - productionDate: getDateFromString(parsedJson["production_date"]), - supplyDate: getDateFromString(parsedJson["supply_date "]), - installDate: getDateFromString(parsedJson["install_date "]), - receivingDate: getDateFromString(parsedJson["receving_date "]), - operationDate: getDateFromString(parsedJson["operation_date "]), - warrantyDate: getDateFromString(parsedJson["warranty_date "]), + id: parsedJson?["nid"] ?? parsedJson?["id"]?.toString(), + serialNumber: parsedJson?["sn"] ?? parsedJson?["assetSerialNo"], + number: parsedJson?["asset_no"], + brand: parsedJson?["modelDefinition"]["manufacturerName"] as String?, + model: parsedJson?["modelDefinition"]["modelName"] as String?, + productionDate: getDateFromString(parsedJson?["production_date"]), + supplyDate: getDateFromString(parsedJson?["supply_date "]), + installDate: getDateFromString(parsedJson?["install_date "]), + receivingDate: getDateFromString(parsedJson?["receving_date "]), + operationDate: getDateFromString(parsedJson?["operation_date "]), + warrantyDate: getDateFromString(parsedJson?["warranty_date "]), ); } diff --git a/lib/models/hospital.dart b/lib/models/hospital.dart index bf1ecfe..2b38c93 100644 --- a/lib/models/hospital.dart +++ b/lib/models/hospital.dart @@ -9,8 +9,8 @@ class Hospital { factory Hospital.fromJson(Map parsedJson) { return Hospital( - id: parsedJson["nid"] ?? parsedJson["id"], - name: parsedJson["client_name"] ?? parsedJson["value"], + id: parsedJson["id"], + name:parsedJson["custName"], ); } diff --git a/lib/views/pages/device_transfer/update_device_transfer.dart b/lib/views/pages/device_transfer/update_device_transfer.dart index a483659..7259e5c 100644 --- a/lib/views/pages/device_transfer/update_device_transfer.dart +++ b/lib/views/pages/device_transfer/update_device_transfer.dart @@ -24,9 +24,9 @@ import '../../widgets/status/gas_refill/gas_status.dart'; import '../../widgets/titles/app_sub_title.dart'; class UpdateDeviceTransfer extends StatefulWidget { - final DeviceTransfer? model; + final DeviceTransfer model; final bool? isSender; - const UpdateDeviceTransfer({Key? key, this.model, this.isSender}) : super(key: key); + const UpdateDeviceTransfer({Key? key, required this.model, this.isSender}) : super(key: key); @override State createState() => _UpdateDeviceTransferState(); diff --git a/lib/views/widgets/hospitals/single_hospital_picker.dart b/lib/views/widgets/hospitals/single_hospital_picker.dart index ed2ecc0..0fdd64b 100644 --- a/lib/views/widgets/hospitals/single_hospital_picker.dart +++ b/lib/views/widgets/hospitals/single_hospital_picker.dart @@ -20,28 +20,31 @@ class SingleHospitalPicker extends StatefulWidget { } class _SingleHospitalPickerState extends State { - HospitalsProvider? _hospitalsProvider; + late HospitalsProvider _hospitalsProvider; SettingProvider? _settingProvider; List _searchableList = []; bool _firstTime = true; + + + @override Widget build(BuildContext context) { - _hospitalsProvider = Provider.of(context); + _hospitalsProvider = Provider.of(context, listen: true); _settingProvider = Provider.of(context); - if (_firstTime && _hospitalsProvider?.hospitals != null) { - _searchableList.addAll(_hospitalsProvider?.hospitals ?? []); - _firstTime = false; + if (_firstTime) { + _searchableList.addAll(_hospitalsProvider.hospitals); + setState(() {}); } Subtitle? _subtitle = AppLocalization.of(context)?.subtitle; return Scaffold( resizeToAvoidBottomInset: false, body: LoadingManager( - isLoading: _hospitalsProvider?.loading, - stateCode: _hospitalsProvider?.stateCode, - isFailedLoading: _hospitalsProvider?.hospitals == null, + isLoading: _hospitalsProvider.loading, + stateCode: _hospitalsProvider.stateCode, onRefresh: () async { - _hospitalsProvider?.reset(); - await _hospitalsProvider?.getHospitals(title: ''); + _hospitalsProvider.reset(); + await _hospitalsProvider.getHospitals(title: ''); + _searchableList.addAll(_hospitalsProvider.hospitals); }, child: Column( children: [ @@ -56,7 +59,7 @@ class _SingleHospitalPickerState extends State { suffixIcon: Icon(Icons.search_rounded), onChange: (value) { _searchableList.clear(); - _searchableList.addAll(_hospitalsProvider!.hospitals!.where((element) => element.name!.toLowerCase().contains(value.toLowerCase())).toList()); + _searchableList.addAll(_hospitalsProvider.hospitals.where((element) => element.name!.toLowerCase().contains(value.toLowerCase())).toList()); setState(() {}); }, ), diff --git a/lib/views/widgets/status/gas_refill/gas_cylinder_size.dart b/lib/views/widgets/status/gas_refill/gas_cylinder_size.dart index 8cae04d..742143a 100644 --- a/lib/views/widgets/status/gas_refill/gas_cylinder_size.dart +++ b/lib/views/widgets/status/gas_refill/gas_cylinder_size.dart @@ -25,15 +25,12 @@ class GasCylinderSizeMenu extends StatelessWidget { final userProvider = Provider.of(context); final menuProvider = Provider.of(context); return LoadingManager( - isLoading: menuProvider.isLoading, + isLoading: menuProvider.loading, isFailedLoading: menuProvider.items == null, stateCode: menuProvider.stateCode, onRefresh: () async { menuProvider.reset(); - await menuProvider.getData( - user: UserApiClient().user, - host: settingProvider.host, - ); + await menuProvider.getData(); }, child: SingleStatusMenu( initialStatus: initialValue,