import 'dart:convert'; import 'package:test_sa/api/api_client.dart'; import 'package:test_sa/api/user_api_client.dart'; import '../controllers/api_routes/urls.dart'; import '../models/device/device_transfer.dart'; import '../models/device/device_transfer_info.dart'; class DeviceTransferApiClient { static final DeviceTransferApiClient _instance = DeviceTransferApiClient._internal(); DeviceTransferApiClient._internal(); factory DeviceTransferApiClient() => _instance; Future> getRequests({required List items, required int pageItemNumber}) async { 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 ); Map listJson = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", "")); print(listJson); return listJson['data'].map((request) => DeviceTransfer.fromJson(request)).toList(); } Future createRequest({ 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 ?? "", }; final response = await ApiClient().postJsonForResponse("${URLs.host1}${URLs.requestDeviceTransfer}", body, isFormData: true); return DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]); } Future updateRequest({ required bool isSender, required String requestId, required DeviceTransfer? oldModel, required DeviceTransferInfo newModel, }) async { Map body = { "uid": UserApiClient().user?.id.toString(), "token": UserApiClient().user?.token, "current_user": UserApiClient().user?.id, }; body.addAll(newModel.toJson(isSender)); final response = await ApiClient().postJsonForResponse("${URLs.host1}${URLs.updateDeviceTransfer}/$requestId", body); return DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]); } }