From 42028f14fd0d38274f88457b5172e716b664b6bc Mon Sep 17 00:00:00 2001 From: nextwo <1234> Date: Sun, 9 Apr 2023 10:48:29 +0300 Subject: [PATCH] changed to new apis --- lib/api/device_transfer_api_client.dart | 23 ++++---- lib/api/gas_refill_api_client.dart | 46 +++++++++------- lib/api/gas_types_api_client.dart | 25 +++++++++ lib/api/service_request_api_client.dart | 2 +- lib/controllers/api_routes/urls.dart | 18 +++---- .../gas_refill/gas_types_provider.dart | 54 +++++-------------- lib/models/department.dart | 2 +- lib/models/device/device_transfer.dart | 6 +-- lib/models/device/device_transfer_info.dart | 32 +++++------ lib/models/gas_refill/gas_refill_details.dart | 8 +-- lib/models/gas_refill/gas_refill_model.dart | 8 +-- lib/models/lookup.dart | 4 +- .../update_device_transfer.dart | 2 +- .../user/gas_refill/gas_refill_details.dart | 2 +- .../widgets/status/gas_refill/gas_type.dart | 7 ++- 15 files changed, 123 insertions(+), 116 deletions(-) create mode 100644 lib/api/gas_types_api_client.dart diff --git a/lib/api/device_transfer_api_client.dart b/lib/api/device_transfer_api_client.dart index 9cb7cbe7..da6008c2 100644 --- a/lib/api/device_transfer_api_client.dart +++ b/lib/api/device_transfer_api_client.dart @@ -15,16 +15,21 @@ class DeviceTransferApiClient { factory DeviceTransferApiClient() => _instance; Future> getRequests({required List items, required int pageItemNumber}) async { - final response = await ApiClient().getJsonForResponse("${URLs.host1}${URLs.getDeviceTransfer}", queryParameters: { - "uid": "${UserApiClient().user?.id}", - "token": "${UserApiClient().user?.token}", - "page": "${(items.length) ~/ pageItemNumber}", - }, headers: { - "Content-Type": "application/json; charset=utf-8" - }); + Map body= { + "uid": "${UserApiClient().user?.id}", + "token": "${UserApiClient().user?.token}", + "page": "${(items.length) ~/ pageItemNumber}", + }; + + final response = await ApiClient().postJsonForResponse( + "${URLs.host1}${URLs.getDeviceTransfer}", + body, + isFormData: false + ); - List listJson = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", "")); - return listJson.map((request) => DeviceTransfer.fromJson(request)).toList(); + Map listJson = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", "")); + print(listJson); + return listJson['data'].map((request) => DeviceTransfer.fromJson(request)).toList(); } Future createRequest({ diff --git a/lib/api/gas_refill_api_client.dart b/lib/api/gas_refill_api_client.dart index 2f84f8f8..d3e27343 100644 --- a/lib/api/gas_refill_api_client.dart +++ b/lib/api/gas_refill_api_client.dart @@ -14,19 +14,24 @@ class GasRefillApiClient { factory GasRefillApiClient() => _instance; Future> getRequestPages({required List items, required int pageItemNumber}) async { - final response = await ApiClient().getJsonForResponse("${URLs.host1}${URLs.getGasRefill}", //body - headers: { - "Content-Type": "application/json; charset=utf-8" - }, - queryParameters: { - "uid": "${UserApiClient().user?.id}", - "token": "${UserApiClient().user?.token}", - "page": "${(items.length) ~/ pageItemNumber}", - }); + + Map body = { + "uid": "${UserApiClient().user?.id}", + "token": "${UserApiClient().user?.token}", + "pageSize": "${(items.length) ~/ pageItemNumber}", + }; + + + final response = await ApiClient().postJsonForResponse( + "${URLs.host1}${URLs.getGasRefill}", + body, + isFormData: false, + ); // client's request was successfully received - List requestsListJson = json.decode(utf8.decode(response.bodyBytes)); - return requestsListJson.map((request) => GasRefillModel.fromJson(request)).toList(); + var requestsListJson = json.decode(utf8.decode(response.bodyBytes)); + print(requestsListJson); + return requestsListJson['data'].map((request) => GasRefillModel.fromJson(request)).toList(); } Future createModel({ @@ -39,17 +44,18 @@ class GasRefillApiClient { "status": "0", //model.status.value.toString(), }; - body["details"] = jsonEncode(model.details + body["gazRefillDetails"] = jsonEncode(model.details ?.map((model) => { - "type": model.type?.id.toString(), - "size": model.cylinderSize?.id.toString(), - "requsted_qty": model.requestedQuantity.toString(), + "gasType": model.type?.id.toString(), + "cylinderSize": model.cylinderSize?.id.toString(), + "requestedQty": model.requestedQuantity.toString(), }) .toList()); final response = await ApiClient().postJsonForResponse( "${URLs.host1}${URLs.requestGasRefill}", body, + isFormData: false ); return GasRefillModel.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]); @@ -66,12 +72,12 @@ class GasRefillApiClient { "status": newModel.status?.id.toString(), }; - body["details"] = jsonEncode(newModel.details + body["gazRefillDetails"] = jsonEncode(newModel.details ?.map((model) => { - "type": model.type?.id.toString(), - "size": model.cylinderSize?.id.toString(), - "requsted_qty": model.requestedQuantity.toString(), - "deliverd_qty": model.deliveredQuantity.toString(), + "gasType": model.type?.id.toString(), + "cylinderSize": model.cylinderSize?.id.toString(), + "requestedQty": model.requestedQuantity.toString(), + "deliverdQty": model.deliveredQuantity.toString(), }) .toList()); diff --git a/lib/api/gas_types_api_client.dart b/lib/api/gas_types_api_client.dart new file mode 100644 index 00000000..1d8ce3e3 --- /dev/null +++ b/lib/api/gas_types_api_client.dart @@ -0,0 +1,25 @@ +import 'dart:convert'; + +import 'package:http/http.dart'; +import 'package:test_sa/api/api_client.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; + +import '../models/lookup.dart'; + +class GasTypesApiClient{ + + static final GasTypesApiClient _instance = GasTypesApiClient._internal(); + + GasTypesApiClient._internal(); + + factory GasTypesApiClient() => _instance; + + Future > getData() async { + Response response; + response = await ApiClient().getJsonForResponse("${URLs.host1}${URLs.getGasTypes}"); + Map categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); + return categoriesListJson["data"].map((item) => Lookup.fromJson(item)).toList(); + + } + +} \ No newline at end of file diff --git a/lib/api/service_request_api_client.dart b/lib/api/service_request_api_client.dart index a702319a..f34e0190 100644 --- a/lib/api/service_request_api_client.dart +++ b/lib/api/service_request_api_client.dart @@ -92,7 +92,7 @@ class ServiceRequestApiClient { body["date"] = newDate ?? ''; body["ass_emp"] = employee?.id?.toString() ?? ''; await ApiClient().postJsonForResponse('${URLs.host1}${URLs.updateRequestDate}', body); - request?.engineerName = employee?.label; + request?.engineerName = employee?.label.toString(); } Future createServiceReport({required ServiceReport? report, required ServiceRequest? request}) async { diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index ec450674..bbc9e484 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -41,17 +41,17 @@ class URLs { static const getServiceReportDefectTypes = "/return/call/defect/type/list"; // get //gas refill - static const getGasTypes = "/return/gas/refill/types"; // get - static const getGasCylinderSize = "/return/gas/refill/size/cylinder"; // get - static const getGasStatus = "/return/gas/refill/status"; // get - static const requestGasRefill = "/create/gas/refill"; // get - static const updateGasRefill = "/update/gas/refill/"; // get - static const getGasRefill = "/search/gas/refill"; // get + static const getGasTypes = "/mobile/Lookups/GetLookup?lookupEnum=606"; // get + static const getGasCylinderSize = "/mobile/Lookups/GetLookup?lookupEnum=608"; // get + static const getGasStatus = "/mobile/Lookups/GetLookup?lookupEnum=609"; // get + static const requestGasRefill = "/mobile/GazRefill/AddGazRefill"; // get + static const updateGasRefill = "/mobile/GazRefill/UpdateGazRefill"; // get + static const getGasRefill = "/mobile/GazRefill/GetGazRefills"; // get //device transfer - static const requestDeviceTransfer = "/create/transfer/asset"; // get - static const updateDeviceTransfer = "/update/transfer/asset"; // get - static const getDeviceTransfer = "/search/transfer/asset"; // get + static const requestDeviceTransfer = "/mobile/AssetTransfer/AddAssetTransfer"; // get + static const updateDeviceTransfer = "/mobile/AssetTransfer/UpdateAssetTransfer"; // get + static const getDeviceTransfer = "/mobile/AssetTransfer/GetAssetTransfers"; // get // employee static const getEmployees = "/return/assigned/employee"; // get diff --git a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart index 03ab6b24..55a677f3 100644 --- a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart @@ -4,16 +4,18 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; +import '../../../../../api/gas_types_api_client.dart'; import '../../../../../models/lookup.dart'; import '../../../../../models/user.dart'; import '../../../../api_routes/urls.dart'; +import '../../../loading_notifier.dart'; -class GasTypesProvider extends ChangeNotifier { +class GasTypesProvider extends LoadingNotifier { //reset provider data void reset() { - _items = null; - _loading = null; + _items?.clear(); _stateCode = null; + stopLoading(); } // state code of current request to defied error message @@ -29,44 +31,14 @@ class GasTypesProvider extends ChangeNotifier { 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.getGasTypes)); - _stateCode = response.statusCode; - if (response.statusCode >= 200 && response.statusCode < 300) { - // client's request was successfully received - List categoriesListJson = json.decode(utf8.decode(response.bodyBytes)); - _items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList(); - } - _loading = false; - notifyListeners(); - return response.statusCode; - } catch (error) { - _loading = false; - _stateCode = -1; + Future getData() async { + waitApiRequest(() async { + _items = await GasTypesApiClient().getData(); notifyListeners(); - return -1; - } + }, + onSuccess: () { + _stateCode = 200; + notifyListeners(); + }); } } diff --git a/lib/models/department.dart b/lib/models/department.dart index da54c314..9b1bde5c 100644 --- a/lib/models/department.dart +++ b/lib/models/department.dart @@ -1,5 +1,5 @@ class Department { - String? id; + int? id; String? name; Department({ diff --git a/lib/models/device/device_transfer.dart b/lib/models/device/device_transfer.dart index bb6d6d21..0b7a0b1b 100644 --- a/lib/models/device/device_transfer.dart +++ b/lib/models/device/device_transfer.dart @@ -2,7 +2,7 @@ import 'device.dart'; import 'device_transfer_info.dart'; class DeviceTransfer { - String? id; + int? id; String? userId; String? title; Device? device; @@ -46,8 +46,8 @@ class DeviceTransfer { title: parsedJson["title"], userId: parsedJson["uid"], device: Device.fromJson(parsedJson["eq_sn"]), - sender: DeviceTransferInfo.fromJson(parsedJson, "sender_"), - receiver: DeviceTransferInfo.fromJson(parsedJson, "receiver_"), + sender: DeviceTransferInfo.fromJson(parsedJson, "sender"), + receiver: DeviceTransferInfo.fromJson(parsedJson, "receiver"), ); } } diff --git a/lib/models/device/device_transfer_info.dart b/lib/models/device/device_transfer_info.dart index 4c18df0f..6a6fa24f 100644 --- a/lib/models/device/device_transfer_info.dart +++ b/lib/models/device/device_transfer_info.dart @@ -3,7 +3,7 @@ import '../hospital.dart'; import '../lookup.dart'; class DeviceTransferInfo { - String? userId; + int? userId; String? comment; Hospital? client; Department? department; @@ -27,18 +27,18 @@ class DeviceTransferInfo { Map toJson(bool isSender) { Map body = {}; - final baseKey = isSender ? "sender_" : "receiver_"; + final baseKey = isSender ? "sender" : "receiver"; - if (comment?.isNotEmpty ?? false) body["${baseKey}comment"] = comment!; + if (comment?.isNotEmpty ?? false) body["${baseKey}Comment"] = comment!; if (workingHours?.isNotEmpty ?? false) { - body["${baseKey}working_hours"] = workingHours!; + body["${baseKey}WorkingHours"] = workingHours!; } if (travelingHours?.isNotEmpty ?? false) { - body["${baseKey}travel_hours"] = comment!; + body["${baseKey}TravelingHours"] = travelingHours!; } final status = this.status; - if (status != null) body["${baseKey}status"] = status.id.toString(); - if (signature?.isNotEmpty ?? false) body["${baseKey}image"] = signature!; + if (status != null) body["${baseKey}MachineStatusId"] = status.id.toString(); + if (signature?.isNotEmpty ?? false) body["${baseKey}AttachmentUrl"] = signature!; return body; } @@ -62,15 +62,15 @@ class DeviceTransferInfo { factory DeviceTransferInfo.fromJson(Map parsedJson, String key) { return DeviceTransferInfo( - workingHours: parsedJson["${key}working_hours"], - travelingHours: parsedJson["${key}travel_hours"], - name: parsedJson["${key}name"], - signature: parsedJson["${key}image"], - userId: parsedJson["${key}id"], - comment: parsedJson["${key}comment"], - client: Hospital.fromJson(parsedJson["${key}client"]), - department: Department.fromJson(parsedJson["${key}department"]), - status: Lookup.fromJson(parsedJson["${key}status"]), + workingHours: parsedJson["${key}WorkingHours"], + travelingHours: parsedJson["${key}TravelingHours"], + name: parsedJson["${key}SiteName"], + signature: parsedJson["${key}AttachmentUrl"], + userId: parsedJson["${key}SiteId"], + comment: parsedJson["${key}Comment"], + client: Hospital(id: parsedJson["${key}senderAssignedEmployeeId"], name: parsedJson["${key}senderAssignedEmployeeName"]), + department: Department(id: parsedJson["${key}DepartmentId"], name: parsedJson["${key}DepartmentName"]), + status: Lookup(id: parsedJson["${key}senderMachineStatusId"], label: parsedJson["${key}senderMachineStatusName"]), ); } } diff --git a/lib/models/gas_refill/gas_refill_details.dart b/lib/models/gas_refill/gas_refill_details.dart index 077e4c3a..f9effc4c 100644 --- a/lib/models/gas_refill/gas_refill_details.dart +++ b/lib/models/gas_refill/gas_refill_details.dart @@ -23,10 +23,10 @@ class GasRefillDetails { factory GasRefillDetails.fromJson(Map parsedJson) { return GasRefillDetails( - type: Lookup.fromJson(parsedJson["type"]), - cylinderSize: Lookup.fromJson(parsedJson["size"]), - requestedQuantity: parsedJson["requsted_qty"] == null ? 0 : int.tryParse(parsedJson["requsted_qty"].toString()) ?? 0, - deliveredQuantity: parsedJson["deliverd_qty"] == null ? 0 : int.tryParse(parsedJson["deliverd_qty"].toString()) ?? 0, + type: Lookup.fromJson(parsedJson["gasType"]), + cylinderSize: Lookup.fromJson(parsedJson["cylinderSize"]), + requestedQuantity: parsedJson["requestedQty"] == null ? 0 : int.tryParse(parsedJson["requestedQty"].toString()) ?? 0, + deliveredQuantity: parsedJson["deliverdQty"] == null ? 0 : int.tryParse(parsedJson["deliverdQty"].toString()) ?? 0, model: null, ); } diff --git a/lib/models/gas_refill/gas_refill_model.dart b/lib/models/gas_refill/gas_refill_model.dart index 0ce33a99..0feef819 100644 --- a/lib/models/gas_refill/gas_refill_model.dart +++ b/lib/models/gas_refill/gas_refill_model.dart @@ -2,7 +2,7 @@ import '../lookup.dart'; import 'gas_refill_details.dart'; class GasRefillModel { - String? id; + int? id; String? userId; String? clientName; String? title; @@ -36,15 +36,15 @@ class GasRefillModel { factory GasRefillModel.fromJson(Map parsedJson) { List details = []; - if (parsedJson["details"] != null) { - List list = parsedJson["details"]; + if (parsedJson["gazRefillDetails"] != null) { + List list = parsedJson["gazRefillDetails"]; details = list.map((e) => GasRefillDetails.fromJson(e)).toList(); } return GasRefillModel( id: parsedJson["id"], userId: parsedJson["uid"], title: parsedJson["title"], - clientName: parsedJson["client"], + clientName: parsedJson["site"]['custName'], status: Lookup.fromJson(parsedJson["status"]), details: details, ); diff --git a/lib/models/lookup.dart b/lib/models/lookup.dart index d0d14a34..9afaf7b7 100644 --- a/lib/models/lookup.dart +++ b/lib/models/lookup.dart @@ -25,14 +25,14 @@ class Lookup { factory Lookup.fromJson(Map parsedJson) { return Lookup( - label: parsedJson["value"], + label: parsedJson["name"], id: parsedJson["id"] is int? ? parsedJson["id"] : int.tryParse(parsedJson["id"] ?? parsedJson["uid"]), ); } factory Lookup.fromIntIdJson(Map parsedJson) { return Lookup( - label: parsedJson["value"], + label: parsedJson["name"], id: parsedJson["id"], ); } diff --git a/lib/views/pages/device_transfer/update_device_transfer.dart b/lib/views/pages/device_transfer/update_device_transfer.dart index e0286a28..a4836599 100644 --- a/lib/views/pages/device_transfer/update_device_transfer.dart +++ b/lib/views/pages/device_transfer/update_device_transfer.dart @@ -56,7 +56,7 @@ class _UpdateDeviceTransferState extends State { _isLoading = true; setState(() {}); int? status = await _deviceTransferProvider?.updateRequest( - user: UserApiClient().user ?? User(), host: _settingProvider?.host ?? "", requestId: widget.model?.id ?? "", isSender: widget.isSender ?? false, newModel: _formModel, oldModel: widget.model); + user: UserApiClient().user ?? User(), host: _settingProvider?.host ?? "", requestId: widget.model?.id.toString() ?? "", isSender: widget.isSender ?? false, newModel: _formModel, oldModel: widget.model); _isLoading = false; setState(() {}); if (status != null && status >= 200 && status < 300) { diff --git a/lib/views/pages/user/gas_refill/gas_refill_details.dart b/lib/views/pages/user/gas_refill/gas_refill_details.dart index a20ab9a2..97e77702 100644 --- a/lib/views/pages/user/gas_refill/gas_refill_details.dart +++ b/lib/views/pages/user/gas_refill/gas_refill_details.dart @@ -167,7 +167,7 @@ class _GasRefillDetailsState extends State { textScaleFactor: AppStyle.getScaleFactor(context), ), ), - StatusLabel(label: _model.status?.label ?? "", color: AColors.getGasStatusColor(_model.status?.id ?? 0)), + StatusLabel(label: _model.status?.label.toString() ?? "", color: AColors.getGasStatusColor(_model.status?.id ?? 0)), ], ), const SizedBox( diff --git a/lib/views/widgets/status/gas_refill/gas_type.dart b/lib/views/widgets/status/gas_refill/gas_type.dart index 666cb9ec..caeff6a9 100644 --- a/lib/views/widgets/status/gas_refill/gas_type.dart +++ b/lib/views/widgets/status/gas_refill/gas_type.dart @@ -3,6 +3,7 @@ import 'package:provider/provider.dart'; import '../../../../api/user_api_client.dart'; import '../../../../controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart'; +import '../../../../controllers/providers/loading_notifier.dart'; import '../../../../controllers/providers/settings/setting_provider.dart'; import '../../../../controllers/providers/user_provider.dart'; import '../../../../models/lookup.dart'; @@ -21,16 +22,14 @@ class GasTypeMenu extends StatelessWidget { @override Widget build(BuildContext context) { - final settingProvider = Provider.of(context); - final userProvider = Provider.of(context); final menuProvider = Provider.of(context); return LoadingManager( - isLoading: menuProvider.isLoading, + isLoading: GasTypesProvider().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,