diff --git a/assets/images/qr.svg b/assets/images/qr.svg new file mode 100644 index 00000000..d3d3e11f --- /dev/null +++ b/assets/images/qr.svg @@ -0,0 +1,3 @@ + + + diff --git a/lib/controllers/providers/api/device_transfer_provider.dart b/lib/controllers/providers/api/asset_transfer_provider.dart similarity index 51% rename from lib/controllers/providers/api/device_transfer_provider.dart rename to lib/controllers/providers/api/asset_transfer_provider.dart index 52434818..9b92436b 100644 --- a/lib/controllers/providers/api/device_transfer_provider.dart +++ b/lib/controllers/providers/api/asset_transfer_provider.dart @@ -5,18 +5,16 @@ import 'package:flutter/cupertino.dart'; import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/device/device_transfer.dart'; -import 'package:test_sa/models/device/device_transfer_info.dart'; -import 'package:test_sa/models/device/device_transfer_search.dart'; +import 'package:test_sa/models/asset/asset_transfer.dart'; import 'package:test_sa/models/user.dart'; import '../../../models/hospital.dart'; -class DeviceTransferProvider extends ChangeNotifier { +class AssetTransferProvider extends ChangeNotifier { // number of items call in each request final pageItemNumber = 12; - DeviceTransferSearch deviceTransferSearch = DeviceTransferSearch(); + AssetTransfer transferModel = AssetTransfer(); //reset provider data void reset() { @@ -41,7 +39,7 @@ class DeviceTransferProvider extends ChangeNotifier { bool nextPage = true; // list of user requests - List items; + List items; // when requests in-process _loading = true // done _loading = true @@ -73,7 +71,7 @@ class DeviceTransferProvider extends ChangeNotifier { Map body = {}; body["pageNumber"] = (items?.length ?? 0) ~/ pageItemNumber + 1; body["pageSize"] = pageItemNumber; - body.addAll(deviceTransferSearch.toMap()); + body.addAll(transferModel.toJson()); response = await ApiManager.instance.post(URLs.getDeviceTransfer, body: body); @@ -81,7 +79,7 @@ class DeviceTransferProvider extends ChangeNotifier { if (stateCode >= 200 && stateCode < 300) { // client's request was successfully received List listJson = json.decode(response.body)["data"]; - List itemsPage = listJson.map((request) => DeviceTransfer.fromJson(request)).toList(); + List itemsPage = listJson.map((request) => AssetTransfer.fromJson(request)).toList(); items ??= []; items.addAll(itemsPage.toSet().toList()); notifyListeners(); @@ -102,7 +100,7 @@ class DeviceTransferProvider extends ChangeNotifier { } } - Future getRequestById({int assetTransferId}) async { + Future getRequestById({int assetTransferId}) async { Response response; try { response = await ApiManager.instance.get( @@ -110,7 +108,7 @@ class DeviceTransferProvider extends ChangeNotifier { enableToastMessage: false, ); if (response.statusCode >= 200 && response.statusCode < 300) { - return DeviceTransfer.fromJson(json.decode(response.body)["data"]); + return AssetTransfer.fromJson(json.decode(response.body)["data"]); } return null; } catch (error) { @@ -122,27 +120,27 @@ class DeviceTransferProvider extends ChangeNotifier { Future createRequest({ @required String host, @required User user, - @required DeviceTransfer model, + @required AssetTransfer model, }) async { Map body = { "id": 0, - "assetId": model.device.id ?? "", + // "assetId": model.device.id ?? "", "destSiteId": hospital.id ?? "", "destDepartmentId": department.id ?? "", - "senderSiteId": model.sender.client.id ?? "", + // "senderSiteId": model.sender.client.id ?? "", // "transferNo": 0, // "transferCode": "string", "destBuildingId": building?.id, "destFloorId": floor.id, "destRoom": room, ///// - "senderBuildingId": model.device.destBuildingId, - "senderFloorId": model.device.destFloorId, - "senderDepartmentId": model.device.destDepartmentId, - "senderRoom": model.device.destRoom, - if (model?.sender?.attachments?.isNotEmpty ?? false) - "senderAttachments": - model?.sender?.attachments?.map((file) => {"attachmentName": _isLocalUrl(file.path) ? ("${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}") : file.path})?.toList(), + // "senderBuildingId": model.device.destBuildingId, + // "senderFloorId": model.device.destFloorId, + // "senderDepartmentId": model.device.destDepartmentId, + // "senderRoom": model.device.destRoom, + // if (model?.sender?.attachments?.isNotEmpty ?? false) + // "senderAttachments": + // model?.sender?.attachments?.map((file) => {"attachmentName": _isLocalUrl(file.path) ? ("${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}") : file.path})?.toList(), // "senderAssignedEmployeeId": "string", // "senderMachineStatusId": 0, // "senderComment": "string", @@ -167,7 +165,7 @@ class DeviceTransferProvider extends ChangeNotifier { stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { if (items != null) { - items.insert(0, DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0])); + items.insert(0, AssetTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0])); reset(); notifyListeners(); } @@ -183,81 +181,81 @@ class DeviceTransferProvider extends ChangeNotifier { @required User user, @required bool isSender, @required int requestId, - @required DeviceTransfer oldModel, - @required DeviceTransferInfo newModel, + @required AssetTransfer oldModel, + @required AssetTransfer newModel, }) async { Map body = { "id": oldModel.id, - "assetId": oldModel.device.id ?? "", - "senderSiteId": oldModel.sender.client.id, - "destSiteId": oldModel.receiver.client.id, - "destDepartmentId": oldModel.receiver.department.id, + // "assetId": oldModel.device.id ?? "", + // "senderSiteId": oldModel.sender.client.id, + // "destSiteId": oldModel.receiver.client.id, + // "destDepartmentId": oldModel.receiver.department.id, }; if (isSender) { body.addAll({ - "senderSiteId": newModel.client.id, - "senderDepartmentId": newModel.department.id, - "senderAssignedEmployeeId": newModel.userId, - "senderMachineStatusId": newModel.status.id, - "senderComment": newModel.comment, - "senderWorkingHours": newModel.workingHours, - "senderStartDate": newModel.timer?.startAt?.toIso8601String(), - "senderEndDate": newModel.timer?.endAt?.toIso8601String(), - "senderTravelingHours": newModel.travelingHours, - "senderEngSignature": newModel.engSignature, - if (newModel?.attachments?.isNotEmpty ?? false) - "senderAttachments": - newModel?.attachments?.map((file) => {"attachmentName": _isLocalUrl(file.path) ? ("${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}") : file.path})?.toList(), - "destSiteId": oldModel.receiver.client?.id, - "destDepartmentId": oldModel.receiver.department?.id, - "destBuildingId": oldModel.device?.destBuildingId, - "destFloorId": oldModel.device?.destFloorId, - "destRoom": oldModel.device?.destRoom, - "receiverAssignedEmployeeId": oldModel.receiver.userId, - "receiverMachineStatusId": oldModel.receiver.status.id ?? "", - "receiverComment": oldModel.receiver.comment, - "receiverWorkingHours": oldModel.receiver.workingHours, - "receiverStartDate": oldModel.receiver.timer?.startAt?.toIso8601String(), - "receiverEndDate": oldModel.receiver.timer?.endAt?.toIso8601String(), - "receiverTravelingHours": oldModel.receiver?.travelingHours, - "receiverEngSignature": oldModel.receiver?.engSignature, - if (oldModel.receiver?.attachments?.isNotEmpty ?? false) - "receiverAttachments": oldModel.receiver?.attachments - ?.map((file) => {"attachmentName": _isLocalUrl(file.path) ? ("${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}") : file.path}) - ?.toList(), + // "senderSiteId": newModel.client.id, + // "senderDepartmentId": newModel.department.id, + // "senderAssignedEmployeeId": newModel.userId, + // "senderMachineStatusId": newModel.status.id, + // "senderComment": newModel.comment, + // "senderWorkingHours": newModel.workingHours, + // "senderStartDate": newModel.timer?.startAt?.toIso8601String(), + // "senderEndDate": newModel.timer?.endAt?.toIso8601String(), + // "senderTravelingHours": newModel.travelingHours, + // "senderEngSignature": newModel.engSignature, + // if (newModel?.attachments?.isNotEmpty ?? false) + // "senderAttachments": + // newModel?.attachments?.map((file) => {"attachmentName": _isLocalUrl(file.path) ? ("${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}") : file.path})?.toList(), + // "destSiteId": oldModel.receiver.client?.id, + // "destDepartmentId": oldModel.receiver.department?.id, + // "destBuildingId": oldModel.device?.destBuildingId, + // "destFloorId": oldModel.device?.destFloorId, + // "destRoom": oldModel.device?.destRoom, + // "receiverAssignedEmployeeId": oldModel.receiver.userId, + // "receiverMachineStatusId": oldModel.receiver.status.id ?? "", + // "receiverComment": oldModel.receiver.comment, + // "receiverWorkingHours": oldModel.receiver.workingHours, + // "receiverStartDate": oldModel.receiver.timer?.startAt?.toIso8601String(), + // "receiverEndDate": oldModel.receiver.timer?.endAt?.toIso8601String(), + // "receiverTravelingHours": oldModel.receiver?.travelingHours, + // "receiverEngSignature": oldModel.receiver?.engSignature, + // if (oldModel.receiver?.attachments?.isNotEmpty ?? false) + // "receiverAttachments": oldModel.receiver?.attachments + // ?.map((file) => {"attachmentName": _isLocalUrl(file.path) ? ("${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}") : file.path}) + // ?.toList(), }); } else { body.addAll({ - "senderSiteId": oldModel.sender.client.id, - "senderDepartmentId": oldModel.sender.department.id, - "senderAssignedEmployeeId": oldModel.sender.userId, - "senderMachineStatusId": oldModel.sender.status.id, - "senderComment": oldModel.sender.comment, - "senderWorkingHours": oldModel.sender.workingHours, - "senderStartDate": oldModel.sender.timer?.startAt?.toIso8601String(), - "senderEndDate": oldModel.sender.timer?.endAt?.toIso8601String(), - "senderTravelingHours": oldModel.sender?.travelingHours, - "senderEngSignature": oldModel.sender?.engSignature, - if (oldModel.sender?.attachments?.isNotEmpty ?? false) - "senderAttachments": - oldModel.sender?.attachments?.map((file) => {"attachmentName": _isLocalUrl(file.path) ? ("${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}") : file.path})?.toList(), - "destSiteId": newModel.client?.id, - "destDepartmentId": newModel.department?.id, - "destBuildingId": oldModel.device?.destBuildingId, - "destFloorId": oldModel.device?.destFloorId, - "destRoom": oldModel.device?.destRoom, - "receiverAssignedEmployeeId": newModel.userId, - "receiverMachineStatusId": newModel.status?.id ?? "", - "receiverComment": newModel.comment, - "receiverWorkingHours": newModel.workingHours, - "receiverStartDate": newModel.timer?.startAt?.toIso8601String(), - "receiverEndDate": newModel.timer?.endAt?.toIso8601String(), - "receiverTravelingHours": newModel.travelingHours, - "receiverEngSignature": newModel.engSignature, - if (newModel?.attachments?.isNotEmpty ?? false) - "receiverAttachments": - newModel?.attachments?.map((file) => {"attachmentName": _isLocalUrl(file.path) ? ("${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}") : file.path})?.toList(), + // "senderSiteId": oldModel.sender.client.id, + // "senderDepartmentId": oldModel.sender.department.id, + // "senderAssignedEmployeeId": oldModel.sender.userId, + // "senderMachineStatusId": oldModel.sender.status.id, + // "senderComment": oldModel.sender.comment, + // "senderWorkingHours": oldModel.sender.workingHours, + // "senderStartDate": oldModel.sender.timer?.startAt?.toIso8601String(), + // "senderEndDate": oldModel.sender.timer?.endAt?.toIso8601String(), + // "senderTravelingHours": oldModel.sender?.travelingHours, + // "senderEngSignature": oldModel.sender?.engSignature, + // if (oldModel.sender?.attachments?.isNotEmpty ?? false) + // "senderAttachments": + // oldModel.sender?.attachments?.map((file) => {"attachmentName": _isLocalUrl(file.path) ? ("${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}") : file.path})?.toList(), + // "destSiteId": newModel.client?.id, + // "destDepartmentId": newModel.department?.id, + // "destBuildingId": oldModel.device?.destBuildingId, + // "destFloorId": oldModel.device?.destFloorId, + // "destRoom": oldModel.device?.destRoom, + // "receiverAssignedEmployeeId": newModel.userId, + // "receiverMachineStatusId": newModel.status?.id ?? "", + // "receiverComment": newModel.comment, + // "receiverWorkingHours": newModel.workingHours, + // "receiverStartDate": newModel.timer?.startAt?.toIso8601String(), + // "receiverEndDate": newModel.timer?.endAt?.toIso8601String(), + // "receiverTravelingHours": newModel.travelingHours, + // "receiverEngSignature": newModel.engSignature, + // if (newModel?.attachments?.isNotEmpty ?? false) + // "receiverAttachments": + // newModel?.attachments?.map((file) => {"attachmentName": _isLocalUrl(file.path) ? ("${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}") : file.path})?.toList(), }); } //body.addAll(newModel.toJson(isSender)); @@ -267,7 +265,7 @@ class DeviceTransferProvider extends ChangeNotifier { response = await ApiManager.instance.put(URLs.updateDeviceTransfer, body: body); print(response.body); - print("${newModel.engSignature}.png"); + // print("${newModel.engSignature}.png"); // response = await post( // Uri.parse("$host${URLs.updateDeviceTransfer}/$requestId"), // body: body, diff --git a/lib/controllers/providers/api/devices_provider.dart b/lib/controllers/providers/api/devices_provider.dart index 03a8228f..f30f9f8c 100644 --- a/lib/controllers/providers/api/devices_provider.dart +++ b/lib/controllers/providers/api/devices_provider.dart @@ -4,11 +4,12 @@ import 'package:flutter/cupertino.dart'; import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -class DevicesProvider extends ChangeNotifier { +import '../../../models/asset/asset.dart'; + +class AssetProvider extends ChangeNotifier { //reset provider data void reset() { _devices = []; @@ -25,9 +26,9 @@ class DevicesProvider extends ChangeNotifier { int get stateCode => _stateCode; - List _devices = []; + List _devices = []; - List get devices => _devices; + List get devices => _devices; // when categories in-process _loading = true // done _loading = true @@ -76,10 +77,10 @@ class DevicesProvider extends ChangeNotifier { if (response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List equipmentListJson = json.decode(response.body)["data"]; - var dList = equipmentListJson.map((device) => Device.fromJson(device, startKeyWithDest: false)).toList(); + var dList = equipmentListJson.map((asset) => Asset.fromJson(asset)).toList(); try { if (isQr) { - dList = dList.where((element) => number?.toLowerCase() == element?.number?.toLowerCase())?.toList() ?? []; + dList = dList.where((element) => number?.toLowerCase() == element?.assetNumber?.toLowerCase())?.toList() ?? []; } } catch (e) { print(e); @@ -99,7 +100,7 @@ class DevicesProvider extends ChangeNotifier { /// 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> getDevicesList({ + Future> getDevicesList({ @required String host, @required User user, @required int hospitalId, @@ -121,12 +122,12 @@ class DevicesProvider extends ChangeNotifier { // "${number?.isEmpty == false ? "&assetNo=$number" : ""}" // ), // ); - List page = []; + List page = []; if (response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List equipmentListJson = json.decode(response.body)["data"]; - page = equipmentListJson.map((device) => Device.fromJson(device, startKeyWithDest: false)).toList(); - _devices.addAll(equipmentListJson.map((device) => Device.fromJson(device, startKeyWithDest: false)).toList()); + page = equipmentListJson.map((asset) => Asset.fromJson(asset)).toList(); + _devices.addAll(equipmentListJson.map((asset) => Asset.fromJson(asset)).toList()); notifyListeners(); } return page; diff --git a/lib/controllers/providers/api/gas_refill_provider.dart b/lib/controllers/providers/api/gas_refill_provider.dart index 5b631d5d..f85e5cd6 100644 --- a/lib/controllers/providers/api/gas_refill_provider.dart +++ b/lib/controllers/providers/api/gas_refill_provider.dart @@ -107,13 +107,13 @@ class GasRefillProvider extends ChangeNotifier { if (timer?.endAt != null) "endTime": timer.endAt.toIso8601String(), "department": model.department?.toJson(), "GazRefillNo": "GR-${DateTime.now().toString().split(" ").first}", - "status": model.status?.toMap(), + "status": model.status?.toJson(), }; body["gazRefillDetails"] = model.gazRefillDetails .map((model) => { - "gasType": model.gasType.toMap(), - "cylinderSize": model.cylinderSize.toMap(), - "cylinderType": model.cylinderType.toMap(), + "gasType": model.gasType.toJson(), + "cylinderSize": model.cylinderSize.toJson(), + "cylinderType": model.cylinderType.toJson(), "requestedQty": model.requestedQty, }) .toList(); @@ -144,7 +144,7 @@ class GasRefillProvider extends ChangeNotifier { Map body = { "id": newModel.id, "gazRefillNo": newModel.title ?? "", - "status": newModel.status.toMap(), + "status": newModel.status.toJson(), //"expectedDate": newModel.expectedDate?.toIso8601String(), "expectedTime": newModel.expectedDate?.toIso8601String(), if (timer?.startAt != null) "startDate": timer.startAt.toIso8601String(), @@ -164,9 +164,9 @@ class GasRefillProvider extends ChangeNotifier { body["gazRefillDetails"] = newModel.details .map((model) => { - "gasType": model.type.toMap(), - "cylinderSize": model.cylinderSize.toMap(), - "cylinderType": model.cylinderType.toMap(), + "gasType": model.type.toJson(), + "cylinderSize": model.cylinderSize.toJson(), + "cylinderType": model.cylinderType.toJson(), "requestedQty": model.requestedQuantity, "deliverdQty": model.deliveredQuantity, }) diff --git a/lib/controllers/providers/api/service_requests_provider.dart b/lib/controllers/providers/api/service_requests_provider.dart index 5aee9c12..afba7fc5 100644 --- a/lib/controllers/providers/api/service_requests_provider.dart +++ b/lib/controllers/providers/api/service_requests_provider.dart @@ -146,10 +146,10 @@ class ServiceRequestsProvider extends ChangeNotifier { "client": user.clientId, "callComments": serviceRequest.callComments, if (serviceRequest.devicePhotos.isNotEmpty) "attachmentsCallRequest": serviceRequest.devicePhotos.map((e) => {"name": e}).toList(), - "priority": serviceRequest.priority?.toMap(), - "defectType": serviceRequest.defectType?.toMap(), - "typeofRequest": serviceRequest.type?.toMap(), - "requestedThrough": serviceRequest.requestedThrough?.toMap(), + "priority": serviceRequest.priority?.toJson(), + "defectType": serviceRequest.defectType?.toJson(), + "typeofRequest": serviceRequest.type?.toJson(), + "requestedThrough": serviceRequest.requestedThrough?.toJson(), "reviewComment": null, if (serviceRequest.audio != null) "voiceNote": serviceRequest.audio, "callSiteContactPerson": [ @@ -188,7 +188,7 @@ class ServiceRequestsProvider extends ChangeNotifier { serviceRequests.insert(0, ServiceRequest.fromJson(data[0])); } else { if (data["data"] != null && data["data"] == true) { - // serviceRequests.insert(0, ServiceRequest.fromJson(data[0])); + // serviceRequests.insert(0, ServiceRequest.fromJson(data[0])); } } } @@ -239,10 +239,10 @@ class ServiceRequestsProvider extends ChangeNotifier { "callCreatedBy": serviceRequest['callCreatedBy'], "requestedDate": request.date ?? "", "requestedTime": request.date ?? "", - "priority": request.priority?.toMap(), - "defectType": request.defectType?.toMap(), - "typeofRequest": request.type?.toMap(), - "requestedThrough": request.requestedThrough?.toMap(), + "priority": request.priority?.toJson(), + "defectType": request.defectType?.toJson(), + "typeofRequest": request.type?.toJson(), + "requestedThrough": request.requestedThrough?.toJson(), "voiceNote": request.audio, "assets": request.deviceId == null ? [] : [request.deviceId], "attachmentsCallRequest": request.devicePhotos?.map((e) => {"name": e})?.toList(), @@ -272,8 +272,8 @@ class ServiceRequestsProvider extends ChangeNotifier { "value": request.statusValue, }, "callLastSituation": null, - "firstAction": request.firstAction?.toMap(), - "loanAvailablity": request.loanAvailability?.toMap(), + "firstAction": request.firstAction?.toJson(), + "loanAvailablity": request.loanAvailability?.toJson(), "comments": request.reviewComment, "firstActionDate": date?.toIso8601String(), "visitDate": date?.toIso8601String() ?? "", @@ -313,7 +313,7 @@ class ServiceRequestsProvider extends ChangeNotifier { "callRequest": { "id": request.id, }, - "assetType": report.assetType?.toMap(), + "assetType": report.assetType?.toJson(), "assignedEmployee": {"id": report.engineer?.id, "name": report.engineer?.name ?? ""}, "visitDate": report.returnToService?.toIso8601String() ?? "", // "assistantEmployees": [ @@ -333,10 +333,10 @@ class ServiceRequestsProvider extends ChangeNotifier { "contactUserId": user.userID, } ], - "calllastSituation": report.callLastSituation?.toMap(), + "calllastSituation": report.callLastSituation?.toJson(), "currentSituation": null, - "repairLocation": report.repairLocation?.toMap(), - "reason": report.reason?.toMap(), + "repairLocation": report.repairLocation?.toJson(), + "reason": report.reason?.toJson(), "startofWorkTime": report.timer?.startAt?.toIso8601String() ?? "", "endofWorkTime": report.timer?.endAt?.toIso8601String() ?? "", "workingHours": report?.workingHours, @@ -355,7 +355,7 @@ class ServiceRequestsProvider extends ChangeNotifier { "reviewComment": "", "comment": report.comment, "attachmentsWorkOrder": request.devicePhotos?.map((e) => {"name": e})?.toList(), - "equipmentStatus": report.equipmentStatus?.toMap(), + "equipmentStatus": report.equipmentStatus?.toJson(), "suppEngineerWorkOrders": null, "engSignature": report.signatureEngineer, "nurseSignature": report.signatureNurse, @@ -671,14 +671,14 @@ class ServiceRequestsProvider extends ChangeNotifier { if (search.assetType != null) "assetSerialNo": search.assetType?.name, if (search.workOrderNo != null) "workOrderNo": search.workOrderNo, if (search.id != null) "workOrderNo": search.id?.toString(), - if (search.calllastSituation != null) "callslastSituationWO": search.calllastSituation.toMap(), + if (search.calllastSituation != null) "callslastSituationWO": search.calllastSituation.toJson(), if (search.assignedEmployee != null) "assignedEmployees": [ search.assignedEmployee.id, ], // "statusWO": [], if (site?.isNotEmpty ?? false) "site": site, - if (search.visitDate != null && dateOperator != null) "visitDateSymbol": dateOperator?.toMap(), + if (search.visitDate != null && dateOperator != null) "visitDateSymbol": dateOperator?.toJson(), if (search.visitDate != null && dateOperator != null) "visitDateFrom": search.visitDate, }; print(body); diff --git a/lib/extensions/widget_extensions.dart b/lib/extensions/widget_extensions.dart index 54f92475..9ba4acd3 100644 --- a/lib/extensions/widget_extensions.dart +++ b/lib/extensions/widget_extensions.dart @@ -15,8 +15,8 @@ extension WidgetExtensions on Widget { Widget paddingAll(double value) => Padding(padding: EdgeInsets.all(value), child: this); - Widget paddingOnly({int left = 0, int right = 0, int top = 0, int bottom = 0}) => - Padding(padding: EdgeInsets.only(left: left.toScreenWidth, right: right.toScreenWidth, top: top.toScreenHeight, bottom: bottom.toScreenHeight), child: this); + Widget paddingOnly({int start = 0, int end = 0, int top = 0, int bottom = 0}) => + Padding(padding: EdgeInsetsDirectional.only(start: start.toScreenWidth, end: end.toScreenWidth, top: top.toScreenHeight, bottom: bottom.toScreenHeight), child: this); Widget toExpanded({int flex = 1}) => Expanded(flex: flex, child: this); } diff --git a/lib/main.dart b/lib/main.dart index 7b023a2a..3e0be7e3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -7,8 +7,8 @@ import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:localization/localization.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; +import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/departments_provider.dart'; -import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/devices_provider.dart'; import 'package:test_sa/controllers/providers/api/gas_refill_provider.dart'; import 'package:test_sa/controllers/providers/api/hospitals_provider.dart'; @@ -47,7 +47,6 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/service_reqes import 'package:test_sa/new_views/app_style/app_themes.dart'; import 'package:test_sa/new_views/pages/land_page/land_page.dart'; import 'package:test_sa/new_views/pages/login_page.dart'; -import 'package:test_sa/new_views/pages/new_service_request_page.dart'; import 'package:test_sa/new_views/pages/new_transfer_request_page.dart'; import 'package:test_sa/new_views/pages/splash_page.dart'; import 'package:test_sa/providers/department_provider.dart'; @@ -119,10 +118,8 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider(create: (_) => CylinderSizeProvider()), ChangeNotifierProvider(create: (_) => DepartmentProvider()), ChangeNotifierProvider(create: (_) => SiteProvider()), - - ChangeNotifierProvider(create: (_) => HospitalsProvider()), - ChangeNotifierProvider(create: (_) => DevicesProvider()), + ChangeNotifierProvider(create: (_) => AssetProvider()), ChangeNotifierProvider(create: (_) => ServiceRequestsProvider()), ChangeNotifierProvider(create: (_) => DepartmentsProvider()), ChangeNotifierProvider(create: (_) => NotificationsProvider()), @@ -140,7 +137,7 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider(create: (_) => GasStatusProvider()), ChangeNotifierProvider(create: (_) => GasTypesProvider()), ChangeNotifierProvider(create: (_) => GasRefillProvider()), - ChangeNotifierProvider(create: (_) => DeviceTransferProvider()), + ChangeNotifierProvider(create: (_) => AssetTransferProvider()), ChangeNotifierProvider(create: (_) => AssignedToProvider()), ChangeNotifierProvider(create: (_) => PentryTaskStatusProvider()), ChangeNotifierProvider(create: (_) => PentryVisitStatusProvider()), @@ -159,11 +156,6 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider(create: (_) => ServiceReportMaintenanceSituationProvider()), ChangeNotifierProvider(create: (_) => ServiceReportUsersProvider()), ChangeNotifierProvider(create: (_) => ServiceReportAssistantsEmployeeProvider()), - - - - - ], child: GestureDetector( onTap: () { @@ -191,17 +183,15 @@ class MyApp extends StatelessWidget { LoginPage.routeName: (_) => const LoginPage(), old.LandPage.id: (_) => const old.LandPage(), LandPage.routeName: (_) => const LandPage(), - NewServiceRequestPage.routeName: (_) => const NewServiceRequestPage(), NewGasRefillRequestPage.routeName: (_) => const NewGasRefillRequestPage(), NewTransferRequestPage.routeName: (_) => const NewTransferRequestPage(), - + ServiceRequestsPage.id: (_) => ServiceRequestsPage(), ReportIssuesPage.id: (_) => const ReportIssuesPage(), RequestGasRefill.id: (_) => const RequestGasRefill(), CreateRequestPage.id: (_) => const CreateRequestPage(), SingleHospitalPicker.id: (_) => SingleHospitalPicker(), SingleDevicePicker.id: (_) => SingleDevicePicker(), SingleDepartmentPicker.id: (_) => SingleDepartmentPicker(), - ServiceRequestsPage.id: (_) => ServiceRequestsPage(), NotificationsPage.id: (_) => NotificationsPage(), FutureRequestServiceDetails.id: (_) => FutureRequestServiceDetails(), PreventiveMaintenanceVisitsPage.id: (_) => PreventiveMaintenanceVisitsPage(), diff --git a/lib/models/asset/asset.dart b/lib/models/asset/asset.dart new file mode 100644 index 00000000..5da88f7b --- /dev/null +++ b/lib/models/asset/asset.dart @@ -0,0 +1,411 @@ +import 'package:test_sa/models/asset/supplier.dart'; +import 'package:test_sa/models/asset/technical_guidance_book.dart'; +import 'package:test_sa/models/lookup.dart'; + +import '../new_models/building.dart'; +import '../new_models/department.dart'; +import '../new_models/floor.dart'; +import '../new_models/site.dart'; +import 'model_definition.dart'; + +class Asset { + Asset({ + this.id, + this.assetSerialNo, + this.systemID, + this.assetNumber, + this.modelDefinition, + this.supplier, + this.ipAddress, + this.macAddress, + this.portNumber, + this.assetReplace, + this.oldAsset, + this.isParent, + this.parentAsset, + this.assetType, + this.site, + this.building, + this.floor, + this.department, + this.room, + this.testsDay, + this.purchasingPrice, + this.nbv, + this.currency, + this.poNo, + this.invoiceNumber, + this.invoiceDate, + this.replacementDate, + this.originDepartment, + this.originSite, + this.budgetYear, + this.lastPOPrice, + this.commissioningStatus, + this.productionDate, + this.edd, + this.technicalInspectionDate, + this.deliveryInspectionDate, + this.endUserAcceptanceDate, + this.receivingCommittee, + this.siteWarrantyMonths, + this.extendedWarrantyMonths, + this.remainderWarrantyMonths, + this.eomWarrantyMonthsNo, + this.warrantyValue, + this.warrantyEndDate, + this.warrantyContractConditions, + this.technicalGuidanceBooks, + this.comment, + this.tagCode, + }); + + Asset.fromJson(dynamic json) { + id = json['id']; + assetSerialNo = json['assetSerialNo']; + systemID = json['systemID']; + assetNumber = json['assetNumber']; + modelDefinition = json['modelDefinition'] != null ? ModelDefinition.fromJson(json['modelDefinition']) : null; + supplier = json['supplier'] != null ? Supplier.fromJson(json['supplier']) : null; + ipAddress = json['ipAddress']; + macAddress = json['macAddress']; + portNumber = json['portNumber']; + assetReplace = json['assetReplace'] != null ? Lookup.fromJson(json['assetReplace']) : null; + oldAsset = json['oldAsset'] != null ? AssetInfo.fromJson(json['oldAsset']) : null; + isParent = json['isParent'] != null ? Lookup.fromJson(json['isParent']) : null; + parentAsset = json['parentAsset'] != null ? AssetInfo.fromJson(json['parentAsset']) : null; + assetType = json['assetType'] != null ? Lookup.fromJson(json['assetType']) : null; + site = json['site'] != null ? Site.fromJson(json['site']) : null; + building = json['building'] != null ? Building.fromJson(json['building']) : null; + floor = json['floor'] != null ? Floor.fromJson(json['floor']) : null; + department = json['department'] != null ? Department.fromJson(json['department']) : null; + room = json['room']; + testsDay = json['testsDay']; + purchasingPrice = json['purchasingPrice']; + nbv = json['nbv']; + currency = json['currency'] != null ? Lookup.fromJson(json['currency']) : null; + poNo = json['poNo']; + invoiceNumber = json['invoiceNumber']; + invoiceDate = json['invoiceDate']; + replacementDate = json['replacementDate']; + originDepartment = json['originDepartment'] != null ? Department.fromJson(json['originDepartment']) : null; + originSite = json['originSite'] != null ? Site.fromJson(json['originSite']) : null; + budgetYear = json['budgetYear']; + lastPOPrice = json['lastPOPrice']; + commissioningStatus = json['commissioningStatus'] != null ? Lookup.fromJson(json['commissioningStatus']) : null; + productionDate = json['productionDate']; + edd = json['edd']; + technicalInspectionDate = json['technicalInspectionDate']; + deliveryInspectionDate = json['deliveryInspectionDate']; + endUserAcceptanceDate = json['endUserAcceptanceDate']; + receivingCommittee = json['receivingCommittee']; + siteWarrantyMonths = json['siteWarrantyMonths'] != null ? Lookup.fromJson(json['siteWarrantyMonths']) : null; + extendedWarrantyMonths = json['extendedWarrantyMonths'] != null ? Lookup.fromJson(json['extendedWarrantyMonths']) : null; + remainderWarrantyMonths = json['remainderWarrantyMonths'] != null ? Lookup.fromJson(json['remainderWarrantyMonths']) : null; + eomWarrantyMonthsNo = json['eomWarrantyMonthsNo']; + warrantyValue = json['warrantyValue']; + warrantyEndDate = json['warrantyEndDate']; + warrantyContractConditions = json['warrantyContractConditions']; + if (json['technicalGuidanceBooks'] != null) { + technicalGuidanceBooks = []; + json['technicalGuidanceBooks'].forEach((v) { + technicalGuidanceBooks.add(TechnicalGuidanceBook.fromJson(v)); + }); + } + comment = json['comment']; + tagCode = json['tagCode']; + } + num id; + String assetSerialNo; + String systemID; + String assetNumber; + ModelDefinition modelDefinition; + Supplier supplier; + String ipAddress; + String macAddress; + String portNumber; + Lookup assetReplace; + AssetInfo oldAsset; + Lookup isParent; + AssetInfo parentAsset; + Lookup assetType; + Site site; + Building building; + Floor floor; + Department department; + String room; + num testsDay; + num purchasingPrice; + String nbv; + Lookup currency; + String poNo; + String invoiceNumber; + String invoiceDate; + String replacementDate; + Department originDepartment; + Site originSite; + num budgetYear; + num lastPOPrice; + Lookup commissioningStatus; + String productionDate; + String edd; + String technicalInspectionDate; + String deliveryInspectionDate; + String endUserAcceptanceDate; + String receivingCommittee; + Lookup siteWarrantyMonths; + Lookup extendedWarrantyMonths; + Lookup remainderWarrantyMonths; + num eomWarrantyMonthsNo; + num warrantyValue; + String warrantyEndDate; + String warrantyContractConditions; + List technicalGuidanceBooks; + String comment; + String tagCode; + Asset copyWith({ + num id, + String assetSerialNo, + String systemID, + String assetNumber, + ModelDefinition modelDefinition, + Supplier supplier, + String ipAddress, + String macAddress, + String portNumber, + Lookup assetReplace, + AssetInfo oldAsset, + Lookup isParent, + AssetInfo parentAsset, + Lookup assetType, + Site site, + Building building, + Floor floor, + Department department, + String room, + num testsDay, + num purchasingPrice, + String nbv, + Lookup currency, + String poNo, + String invoiceNumber, + String invoiceDate, + String replacementDate, + Department originDepartment, + Site originSite, + num budgetYear, + num lastPOPrice, + Lookup commissioningStatus, + String productionDate, + String edd, + String technicalInspectionDate, + String deliveryInspectionDate, + String endUserAcceptanceDate, + String receivingCommittee, + Lookup siteWarrantyMonths, + Lookup extendedWarrantyMonths, + Lookup remainderWarrantyMonths, + num eomWarrantyMonthsNo, + num warrantyValue, + String warrantyEndDate, + String warrantyContractConditions, + List technicalGuidanceBooks, + String comment, + String tagCode, + }) => + Asset( + id: id ?? this.id, + assetSerialNo: assetSerialNo ?? this.assetSerialNo, + systemID: systemID ?? this.systemID, + assetNumber: assetNumber ?? this.assetNumber, + modelDefinition: modelDefinition ?? this.modelDefinition, + supplier: supplier ?? this.supplier, + ipAddress: ipAddress ?? this.ipAddress, + macAddress: macAddress ?? this.macAddress, + portNumber: portNumber ?? this.portNumber, + assetReplace: assetReplace ?? this.assetReplace, + oldAsset: oldAsset ?? this.oldAsset, + isParent: isParent ?? this.isParent, + parentAsset: parentAsset ?? this.parentAsset, + assetType: assetType ?? this.assetType, + site: site ?? this.site, + building: building ?? this.building, + floor: floor ?? this.floor, + department: department ?? this.department, + room: room ?? this.room, + testsDay: testsDay ?? this.testsDay, + purchasingPrice: purchasingPrice ?? this.purchasingPrice, + nbv: nbv ?? this.nbv, + currency: currency ?? this.currency, + poNo: poNo ?? this.poNo, + invoiceNumber: invoiceNumber ?? this.invoiceNumber, + invoiceDate: invoiceDate ?? this.invoiceDate, + replacementDate: replacementDate ?? this.replacementDate, + originDepartment: originDepartment ?? this.originDepartment, + originSite: originSite ?? this.originSite, + budgetYear: budgetYear ?? this.budgetYear, + lastPOPrice: lastPOPrice ?? this.lastPOPrice, + commissioningStatus: commissioningStatus ?? this.commissioningStatus, + productionDate: productionDate ?? this.productionDate, + edd: edd ?? this.edd, + technicalInspectionDate: technicalInspectionDate ?? this.technicalInspectionDate, + deliveryInspectionDate: deliveryInspectionDate ?? this.deliveryInspectionDate, + endUserAcceptanceDate: endUserAcceptanceDate ?? this.endUserAcceptanceDate, + receivingCommittee: receivingCommittee ?? this.receivingCommittee, + siteWarrantyMonths: siteWarrantyMonths ?? this.siteWarrantyMonths, + extendedWarrantyMonths: extendedWarrantyMonths ?? this.extendedWarrantyMonths, + remainderWarrantyMonths: remainderWarrantyMonths ?? this.remainderWarrantyMonths, + eomWarrantyMonthsNo: eomWarrantyMonthsNo ?? this.eomWarrantyMonthsNo, + warrantyValue: warrantyValue ?? this.warrantyValue, + warrantyEndDate: warrantyEndDate ?? this.warrantyEndDate, + warrantyContractConditions: warrantyContractConditions ?? this.warrantyContractConditions, + technicalGuidanceBooks: technicalGuidanceBooks ?? this.technicalGuidanceBooks, + comment: comment ?? this.comment, + tagCode: tagCode ?? this.tagCode, + ); + Map toJson() { + final map = {}; + map['id'] = id; + map['assetSerialNo'] = assetSerialNo; + map['systemID'] = systemID; + map['assetNumber'] = assetNumber; + if (modelDefinition != null) { + map['modelDefinition'] = modelDefinition.toJson(); + } + if (supplier != null) { + map['supplier'] = supplier.toJson(); + } + map['ipAddress'] = ipAddress; + map['macAddress'] = macAddress; + map['portNumber'] = portNumber; + if (assetReplace != null) { + map['assetReplace'] = assetReplace.toJson(); + } + if (oldAsset != null) { + map['oldAsset'] = oldAsset.toJson(); + } + if (isParent != null) { + map['isParent'] = isParent.toJson(); + } + if (parentAsset != null) { + map['parentAsset'] = parentAsset.toJson(); + } + if (assetType != null) { + map['assetType'] = assetType.toJson(); + } + if (site != null) { + map['site'] = site.toJson(); + } + if (building != null) { + map['building'] = building.toJson(); + } + if (floor != null) { + map['floor'] = floor.toJson(); + } + if (department != null) { + map['department'] = department.toJson(); + } + map['room'] = room; + map['testsDay'] = testsDay; + map['purchasingPrice'] = purchasingPrice; + map['nbv'] = nbv; + if (currency != null) { + map['currency'] = currency.toJson(); + } + map['poNo'] = poNo; + map['invoiceNumber'] = invoiceNumber; + map['invoiceDate'] = invoiceDate; + map['replacementDate'] = replacementDate; + if (originDepartment != null) { + map['originDepartment'] = originDepartment.toJson(); + } + if (originSite != null) { + map['originSite'] = originSite.toJson(); + } + map['budgetYear'] = budgetYear; + map['lastPOPrice'] = lastPOPrice; + if (commissioningStatus != null) { + map['commissioningStatus'] = commissioningStatus.toJson(); + } + map['productionDate'] = productionDate; + map['edd'] = edd; + map['technicalInspectionDate'] = technicalInspectionDate; + map['deliveryInspectionDate'] = deliveryInspectionDate; + map['endUserAcceptanceDate'] = endUserAcceptanceDate; + map['receivingCommittee'] = receivingCommittee; + if (siteWarrantyMonths != null) { + map['siteWarrantyMonths'] = siteWarrantyMonths.toJson(); + } + if (extendedWarrantyMonths != null) { + map['extendedWarrantyMonths'] = extendedWarrantyMonths.toJson(); + } + if (remainderWarrantyMonths != null) { + map['remainderWarrantyMonths'] = remainderWarrantyMonths.toJson(); + } + map['eomWarrantyMonthsNo'] = eomWarrantyMonthsNo; + map['warrantyValue'] = warrantyValue; + map['warrantyEndDate'] = warrantyEndDate; + map['warrantyContractConditions'] = warrantyContractConditions; + if (technicalGuidanceBooks != null) { + map['technicalGuidanceBooks'] = technicalGuidanceBooks.map((v) => v.toJson()).toList(); + } + map['comment'] = comment; + map['tagCode'] = tagCode; + return map; + } +} + +class AssetInfo { + AssetInfo({ + this.id, + this.assetSerialNo, + this.assetNumber, + this.tagCode, + this.systemId, + this.assetName, + }); + + AssetInfo.fromJson(dynamic json) { + id = json['id']; + assetSerialNo = json['assetSerialNo']; + assetNumber = json['assetNumber']; + tagCode = json['tagCode']; + systemId = json['systemId']; + assetName = json['assetName']; + } + + num id; + String assetSerialNo; + String assetNumber; + String tagCode; + String systemId; + String assetName; + + AssetInfo copyWith({ + num id, + String assetSerialNo, + String assetNumber, + String tagCode, + String systemId, + String assetName, + }) => + AssetInfo( + id: id ?? this.id, + assetSerialNo: assetSerialNo ?? this.assetSerialNo, + assetNumber: assetNumber ?? this.assetNumber, + tagCode: tagCode ?? this.tagCode, + systemId: systemId ?? this.systemId, + assetName: assetName ?? this.assetName, + ); + + Map toJson() { + final map = {}; + map['id'] = id; + map['assetSerialNo'] = assetSerialNo; + map['assetNumber'] = assetNumber; + map['tagCode'] = tagCode; + map['systemId'] = systemId; + map['assetName'] = assetName; + return map; + } +} diff --git a/lib/models/asset/asset_transfer.dart b/lib/models/asset/asset_transfer.dart new file mode 100644 index 00000000..d44ab4fa --- /dev/null +++ b/lib/models/asset/asset_transfer.dart @@ -0,0 +1,223 @@ +import 'asset_transfer_attachment.dart'; + +class AssetTransfer { + AssetTransfer({ + this.id, + this.transferNo, + this.transferCode, + this.assetId, + this.destSiteId, + this.destBuildingId, + this.destFloorId, + this.destDepartmentId, + this.destRoom, + this.senderSiteId, + this.senderBuildingId, + this.senderFloorId, + this.senderDepartmentId, + this.senderRoom, + this.senderAssignedEmployeeId, + this.senderMachineStatusId, + this.senderComment, + this.senderStartDate, + this.senderEndDate, + this.senderWorkingHours, + this.senderTravelingHours, + this.senderEngSignature, + this.senderAttachments, + this.receiverAssignedEmployeeId, + this.receiverMachineStatusId, + this.receiverComment, + this.receiverStartDate, + this.receiverEndDate, + this.receiverWorkingHours, + this.receiverTravelingHours, + this.receiverEngSignature, + this.receiverAttachments, + }); + + AssetTransfer.fromJson(dynamic json) { + id = json['id']; + transferNo = json['transferNo']; + transferCode = json['transferCode']; + assetId = json['assetId']; + destSiteId = json['destSiteId']; + destBuildingId = json['destBuildingId']; + destFloorId = json['destFloorId']; + destDepartmentId = json['destDepartmentId']; + destRoom = json['destRoom']; + senderSiteId = json['senderSiteId']; + senderBuildingId = json['senderBuildingId']; + senderFloorId = json['senderFloorId']; + senderDepartmentId = json['senderDepartmentId']; + senderRoom = json['senderRoom']; + senderAssignedEmployeeId = json['senderAssignedEmployeeId']; + senderMachineStatusId = json['senderMachineStatusId']; + senderComment = json['senderComment']; + senderStartDate = json['senderStartDate']; + senderEndDate = json['senderEndDate']; + senderWorkingHours = json['senderWorkingHours']; + senderTravelingHours = json['senderTravelingHours']; + senderEngSignature = json['senderEngSignature']; + if (json['senderAttachments'] != null) { + senderAttachments = []; + json['senderAttachments'].forEach((v) { + senderAttachments.add(AssetTransferAttachment.fromJson(v)); + }); + } + receiverAssignedEmployeeId = json['receiverAssignedEmployeeId']; + receiverMachineStatusId = json['receiverMachineStatusId']; + receiverComment = json['receiverComment']; + receiverStartDate = json['receiverStartDate']; + receiverEndDate = json['receiverEndDate']; + receiverWorkingHours = json['receiverWorkingHours']; + receiverTravelingHours = json['receiverTravelingHours']; + receiverEngSignature = json['receiverEngSignature']; + if (json['receiverAttachments'] != null) { + receiverAttachments = []; + json['receiverAttachments'].forEach((v) { + receiverAttachments.add(AssetTransferAttachment.fromJson(v)); + }); + } + } + num id; + num transferNo; + String transferCode; + num assetId; + num destSiteId; + num destBuildingId; + num destFloorId; + num destDepartmentId; + String destRoom; + num senderSiteId; + num senderBuildingId; + num senderFloorId; + num senderDepartmentId; + String senderRoom; + String senderAssignedEmployeeId; + num senderMachineStatusId; + String senderComment; + String senderStartDate; + String senderEndDate; + String senderWorkingHours; + String senderTravelingHours; + String senderEngSignature; + List senderAttachments; + String receiverAssignedEmployeeId; + num receiverMachineStatusId; + String receiverComment; + String receiverStartDate; + String receiverEndDate; + String receiverWorkingHours; + String receiverTravelingHours; + String receiverEngSignature; + List receiverAttachments; + AssetTransfer copyWith({ + num id, + num transferNo, + String transferCode, + num assetId, + num destSiteId, + num destBuildingId, + num destFloorId, + num destDepartmentId, + String destRoom, + num senderSiteId, + num senderBuildingId, + num senderFloorId, + num senderDepartmentId, + String senderRoom, + String senderAssignedEmployeeId, + num senderMachineStatusId, + String senderComment, + String senderStartDate, + String senderEndDate, + String senderWorkingHours, + String senderTravelingHours, + String senderEngSignature, + List senderAttachments, + String receiverAssignedEmployeeId, + num receiverMachineStatusId, + String receiverComment, + String receiverStartDate, + String receiverEndDate, + String receiverWorkingHours, + String receiverTravelingHours, + String receiverEngSignature, + List receiverAttachments, + }) => + AssetTransfer( + id: id ?? this.id, + transferNo: transferNo ?? this.transferNo, + transferCode: transferCode ?? this.transferCode, + assetId: assetId ?? this.assetId, + destSiteId: destSiteId ?? this.destSiteId, + destBuildingId: destBuildingId ?? this.destBuildingId, + destFloorId: destFloorId ?? this.destFloorId, + destDepartmentId: destDepartmentId ?? this.destDepartmentId, + destRoom: destRoom ?? this.destRoom, + senderSiteId: senderSiteId ?? this.senderSiteId, + senderBuildingId: senderBuildingId ?? this.senderBuildingId, + senderFloorId: senderFloorId ?? this.senderFloorId, + senderDepartmentId: senderDepartmentId ?? this.senderDepartmentId, + senderRoom: senderRoom ?? this.senderRoom, + senderAssignedEmployeeId: senderAssignedEmployeeId ?? this.senderAssignedEmployeeId, + senderMachineStatusId: senderMachineStatusId ?? this.senderMachineStatusId, + senderComment: senderComment ?? this.senderComment, + senderStartDate: senderStartDate ?? this.senderStartDate, + senderEndDate: senderEndDate ?? this.senderEndDate, + senderWorkingHours: senderWorkingHours ?? this.senderWorkingHours, + senderTravelingHours: senderTravelingHours ?? this.senderTravelingHours, + senderEngSignature: senderEngSignature ?? this.senderEngSignature, + senderAttachments: senderAttachments ?? this.senderAttachments, + receiverAssignedEmployeeId: receiverAssignedEmployeeId ?? this.receiverAssignedEmployeeId, + receiverMachineStatusId: receiverMachineStatusId ?? this.receiverMachineStatusId, + receiverComment: receiverComment ?? this.receiverComment, + receiverStartDate: receiverStartDate ?? this.receiverStartDate, + receiverEndDate: receiverEndDate ?? this.receiverEndDate, + receiverWorkingHours: receiverWorkingHours ?? this.receiverWorkingHours, + receiverTravelingHours: receiverTravelingHours ?? this.receiverTravelingHours, + receiverEngSignature: receiverEngSignature ?? this.receiverEngSignature, + receiverAttachments: receiverAttachments ?? this.receiverAttachments, + ); + Map toJson() { + final map = {}; + map['id'] = id; + map['transferNo'] = transferNo; + map['transferCode'] = transferCode; + map['assetId'] = assetId; + map['destSiteId'] = destSiteId; + map['destBuildingId'] = destBuildingId; + map['destFloorId'] = destFloorId; + map['destDepartmentId'] = destDepartmentId; + map['destRoom'] = destRoom; + map['senderSiteId'] = senderSiteId; + map['senderBuildingId'] = senderBuildingId; + map['senderFloorId'] = senderFloorId; + map['senderDepartmentId'] = senderDepartmentId; + map['senderRoom'] = senderRoom; + map['senderAssignedEmployeeId'] = senderAssignedEmployeeId; + map['senderMachineStatusId'] = senderMachineStatusId; + map['senderComment'] = senderComment; + map['senderStartDate'] = senderStartDate; + map['senderEndDate'] = senderEndDate; + map['senderWorkingHours'] = senderWorkingHours; + map['senderTravelingHours'] = senderTravelingHours; + map['senderEngSignature'] = senderEngSignature; + if (senderAttachments != null) { + map['senderAttachments'] = senderAttachments.map((v) => v.toJson()).toList(); + } + map['receiverAssignedEmployeeId'] = receiverAssignedEmployeeId; + map['receiverMachineStatusId'] = receiverMachineStatusId; + map['receiverComment'] = receiverComment; + map['receiverStartDate'] = receiverStartDate; + map['receiverEndDate'] = receiverEndDate; + map['receiverWorkingHours'] = receiverWorkingHours; + map['receiverTravelingHours'] = receiverTravelingHours; + map['receiverEngSignature'] = receiverEngSignature; + if (receiverAttachments != null) { + map['receiverAttachments'] = receiverAttachments.map((v) => v.toJson()).toList(); + } + return map; + } +} diff --git a/lib/models/asset/asset_transfer_attachment.dart b/lib/models/asset/asset_transfer_attachment.dart new file mode 100644 index 00000000..d202d2e7 --- /dev/null +++ b/lib/models/asset/asset_transfer_attachment.dart @@ -0,0 +1,27 @@ +class AssetTransferAttachment { + AssetTransferAttachment({ + this.id, + this.attachmentName, + }); + + AssetTransferAttachment.fromJson(dynamic json) { + id = json['id']; + attachmentName = json['attachmentName']; + } + num id; + String attachmentName; + AssetTransferAttachment copyWith({ + num id, + String attachmentName, + }) => + AssetTransferAttachment( + id: id ?? this.id, + attachmentName: attachmentName ?? this.attachmentName, + ); + Map toJson() { + final map = {}; + map['id'] = id; + map['attachmentName'] = attachmentName; + return map; + } +} diff --git a/lib/models/asset/asset_transfer_search.dart b/lib/models/asset/asset_transfer_search.dart new file mode 100644 index 00000000..79a5587d --- /dev/null +++ b/lib/models/asset/asset_transfer_search.dart @@ -0,0 +1,43 @@ +import 'asset.dart'; +import 'asset_transfer.dart'; + +class AssetTransferSearch extends AssetTransfer { + Asset asset; + int pageNumber = 10, pageSize; + bool mostRecent; + + Map toSearch() { + final map = {}; + map['pageSize'] = pageSize; + map['pageNumber'] = pageNumber; + map['id'] = id; + map['transferNo'] = transferNo; + map['transferCode'] = transferCode; + map['assetId'] = assetId; + map['destSiteId'] = destSiteId; + map['destBuildingId'] = destBuildingId; + map['destFloorId'] = destFloorId; + map['destDepartmentId'] = destDepartmentId; + map['destRoom'] = destRoom; + map['senderSiteId'] = senderSiteId; + map['senderBuildingId'] = senderBuildingId; + map['senderFloorId'] = senderFloorId; + map['senderDepartmentId'] = senderDepartmentId; + map['senderRoom'] = senderRoom; + map['senderAssignedEmployeeId'] = senderAssignedEmployeeId; + map['receiverAssignedEmployeeId'] = receiverAssignedEmployeeId; + map['mostRecent'] = mostRecent; + map['assetNumber'] = asset?.assetNumber; + map['assetSerialNo'] = asset?.assetSerialNo; + map['siteName'] = asset?.site?.custName; + + /// TODO : the below parameters need to be discussed + // map['relatedToEmployeeId'] = ""; + // map['assetGroup'] = { + // "id": 1, + // "name": "", + // "code": "", + // }; + return map; + } +} diff --git a/lib/models/device/device_transfer_info.dart b/lib/models/asset/device_transfer_info.dart similarity index 98% rename from lib/models/device/device_transfer_info.dart rename to lib/models/asset/device_transfer_info.dart index ef03cd1b..5e4c5a21 100644 --- a/lib/models/device/device_transfer_info.dart +++ b/lib/models/asset/device_transfer_info.dart @@ -6,6 +6,7 @@ import 'package:test_sa/models/lookup.dart'; import '../timer_model.dart'; +@Deprecated("Use asset_transfer.dart instead of this one") class DeviceTransferInfo { String userId; String comment; diff --git a/lib/models/device/device_transfer_search.dart b/lib/models/asset/device_transfer_search.dart similarity index 93% rename from lib/models/device/device_transfer_search.dart rename to lib/models/asset/device_transfer_search.dart index 218e838d..038cc840 100644 --- a/lib/models/device/device_transfer_search.dart +++ b/lib/models/asset/device_transfer_search.dart @@ -1,9 +1,9 @@ -import 'package:test_sa/models/device/device.dart'; - import '../hospital.dart'; +import 'asset.dart'; +@Deprecated("Use asset_transfer_search.dart instead of this one") class DeviceTransferSearch { - Device device; + Asset device; String title, room; bool mostRecent; Hospital hospital; diff --git a/lib/models/device/model.dart b/lib/models/asset/model.dart similarity index 95% rename from lib/models/device/model.dart rename to lib/models/asset/model.dart index 25732845..5981a1a6 100644 --- a/lib/models/device/model.dart +++ b/lib/models/asset/model.dart @@ -1,3 +1,4 @@ +@Deprecated("Use the class inside model_definition.dart") class ModelDefinition { int id; String assetName; diff --git a/lib/models/asset/model_definition.dart b/lib/models/asset/model_definition.dart new file mode 100644 index 00000000..5d4e7311 --- /dev/null +++ b/lib/models/asset/model_definition.dart @@ -0,0 +1,149 @@ +import 'package:test_sa/models/asset/supplier.dart'; + +class ModelDefinition { + ModelDefinition({ + this.id, + this.assetName, + this.modelDefCode, + this.modelName, + this.manufacturerId, + this.manufacturerName, + this.supplierName, + this.replacementDate, + this.essentialEquipement, + this.businessCritical, + this.lifeSpan, + this.modelDefRelatedDefects, + this.suppliers, + }); + + ModelDefinition.fromJson(dynamic json) { + id = json['id']; + assetName = json['assetName']; + modelDefCode = json['modelDefCode']; + modelName = json['modelName']; + manufacturerId = json['manufacturerId']; + manufacturerName = json['manufacturerName']; + supplierName = json['supplierName']; + replacementDate = json['replacementDate']; + essentialEquipement = json['essentialEquipement']; + businessCritical = json['businessCritical']; + lifeSpan = json['lifeSpan']; + if (json['modelDefRelatedDefects'] != null) { + modelDefRelatedDefects = []; + json['modelDefRelatedDefects'].forEach((v) { + modelDefRelatedDefects.add(ModelDefRelatedDefects.fromJson(v)); + }); + } + if (json['suppliers'] != null) { + suppliers = []; + json['suppliers'].forEach((v) { + suppliers.add(Supplier.fromJson(v)); + }); + } + } + num id; + String assetName; + String modelDefCode; + String modelName; + num manufacturerId; + String manufacturerName; + dynamic supplierName; + String replacementDate; + String essentialEquipement; + String businessCritical; + num lifeSpan; + List modelDefRelatedDefects; + List suppliers; + ModelDefinition copyWith({ + num id, + String assetName, + String modelDefCode, + String modelName, + num manufacturerId, + String manufacturerName, + dynamic supplierName, + String replacementDate, + String essentialEquipement, + String businessCritical, + num lifeSpan, + List modelDefRelatedDefects, + List suppliers, + }) => + ModelDefinition( + id: id ?? this.id, + assetName: assetName ?? this.assetName, + modelDefCode: modelDefCode ?? this.modelDefCode, + modelName: modelName ?? this.modelName, + manufacturerId: manufacturerId ?? this.manufacturerId, + manufacturerName: manufacturerName ?? this.manufacturerName, + supplierName: supplierName ?? this.supplierName, + replacementDate: replacementDate ?? this.replacementDate, + essentialEquipement: essentialEquipement ?? this.essentialEquipement, + businessCritical: businessCritical ?? this.businessCritical, + lifeSpan: lifeSpan ?? this.lifeSpan, + modelDefRelatedDefects: modelDefRelatedDefects ?? this.modelDefRelatedDefects, + suppliers: suppliers ?? this.suppliers, + ); + Map toJson() { + final map = {}; + map['id'] = id; + map['assetName'] = assetName; + map['modelDefCode'] = modelDefCode; + map['modelName'] = modelName; + map['manufacturerId'] = manufacturerId; + map['manufacturerName'] = manufacturerName; + map['supplierName'] = supplierName; + map['replacementDate'] = replacementDate; + map['essentialEquipement'] = essentialEquipement; + map['businessCritical'] = businessCritical; + map['lifeSpan'] = lifeSpan; + if (modelDefRelatedDefects != null) { + map['modelDefRelatedDefects'] = modelDefRelatedDefects.map((v) => v.toJson()).toList(); + } + if (suppliers != null) { + map['suppliers'] = suppliers.map((v) => v.toJson()).toList(); + } + return map; + } +} + +class ModelDefRelatedDefects { + ModelDefRelatedDefects({ + this.id, + this.defectName, + this.workPerformed, + this.estimatedTime, + }); + + ModelDefRelatedDefects.fromJson(dynamic json) { + id = json['id']; + defectName = json['defectName']; + workPerformed = json['workPerformed']; + estimatedTime = json['estimatedTime']; + } + num id; + String defectName; + String workPerformed; + String estimatedTime; + ModelDefRelatedDefects copyWith({ + num id, + String defectName, + String workPerformed, + String estimatedTime, + }) => + ModelDefRelatedDefects( + id: id ?? this.id, + defectName: defectName ?? this.defectName, + workPerformed: workPerformed ?? this.workPerformed, + estimatedTime: estimatedTime ?? this.estimatedTime, + ); + Map toJson() { + final map = {}; + map['id'] = id; + map['defectName'] = defectName; + map['workPerformed'] = workPerformed; + map['estimatedTime'] = estimatedTime; + return map; + } +} diff --git a/lib/models/asset/supplier.dart b/lib/models/asset/supplier.dart new file mode 100644 index 00000000..3cc71664 --- /dev/null +++ b/lib/models/asset/supplier.dart @@ -0,0 +1,27 @@ +class Supplier { + Supplier({ + this.id, + this.suppliername, + }); + + Supplier.fromJson(dynamic json) { + id = json['id']; + suppliername = json['suppliername']; + } + num id; + String suppliername; + Supplier copyWith({ + num id, + String suppliername, + }) => + Supplier( + id: id ?? this.id, + suppliername: suppliername ?? this.suppliername, + ); + Map toJson() { + final map = {}; + map['id'] = id; + map['suppliername'] = suppliername; + return map; + } +} diff --git a/lib/models/asset/technical_guidance_book.dart b/lib/models/asset/technical_guidance_book.dart new file mode 100644 index 00000000..17458c6a --- /dev/null +++ b/lib/models/asset/technical_guidance_book.dart @@ -0,0 +1,28 @@ +import '../lookup.dart'; + +class TechnicalGuidanceBook { + TechnicalGuidanceBook({this.id, this.guidanceBook}); + + TechnicalGuidanceBook.fromJson(dynamic json) { + id = json['id']; + guidanceBook = json['guidanceBook'] != null ? Lookup.fromJson(json['guidanceBook']) : null; + } + num id; + Lookup guidanceBook; + TechnicalGuidanceBook copyWith({ + num id, + Lookup guidanceBook, + }) => + TechnicalGuidanceBook( + id: id ?? this.id, + guidanceBook: guidanceBook ?? this.guidanceBook, + ); + Map toJson() { + final map = {}; + map['id'] = id; + if (guidanceBook != null) { + map['guidanceBook'] = guidanceBook.toJson(); + } + return map; + } +} diff --git a/lib/models/call_request_for_work_order_model.dart b/lib/models/call_request_for_work_order_model.dart index 35b34551..0603eb2e 100644 --- a/lib/models/call_request_for_work_order_model.dart +++ b/lib/models/call_request_for_work_order_model.dart @@ -63,6 +63,7 @@ class CallRequestForWorkOrder { } } +@Deprecated("") class Asset { int id; String assetSerialNo; diff --git a/lib/models/device/device.dart b/lib/models/device/device.dart deleted file mode 100644 index fe6a8409..00000000 --- a/lib/models/device/device.dart +++ /dev/null @@ -1,89 +0,0 @@ -import 'package:test_sa/models/hospital.dart'; -import 'package:test_sa/models/lookup.dart'; - -import 'model.dart'; - -class Device { - int id; - String serialNumber; - String number; - String assetName; - String destBuildingName; - int destBuildingId; - String destDepartmentName; - int destDepartmentId; - String destRoom; - String destFloor; - int destFloorId; - String destSiteName; - - // String brand; - // String model; - ModelDefinition modelDefinition; - Hospital hospital; - - Device({ - this.id, - this.serialNumber, - this.number, - this.assetName, - this.hospital, - this.destBuildingName, - this.destDepartmentName, - this.destRoom, - this.destFloor, - this.destSiteName, - // this.brand, - // this.model, - this.modelDefinition, - this.destFloorId, - this.destDepartmentId, - this.destBuildingId, - }); - - factory Device.fromJson(Map parsedJson, {bool startKeyWithDest = true}) { - return Device( - id: parsedJson["id"], - serialNumber: parsedJson["assetSerialNo"], - number: parsedJson["assetNumber"], - assetName: parsedJson["assetName"], - modelDefinition: ModelDefinition.fromJson(parsedJson["modelDefinition"]), - hospital: Hospital.fromJson(parsedJson["site"]), - destBuildingName: startKeyWithDest ? parsedJson["destBuildingName"] : parsedJson['building']['name'], - destBuildingId: startKeyWithDest ? parsedJson["destBuildingName"] : parsedJson['building']['id'], - destDepartmentName: startKeyWithDest ? parsedJson["destDepartmentName"] : parsedJson['department']['departmentName'], - destDepartmentId: startKeyWithDest ? parsedJson["destDepartmentName"] : parsedJson['department']['id'], - destRoom: startKeyWithDest ? parsedJson["destRoom"] : parsedJson['room'], - destFloor: startKeyWithDest ? parsedJson["destFloor"] : parsedJson['floor']['name'], - destFloorId: startKeyWithDest ? null : parsedJson['floor']['id'], - destSiteName: parsedJson['destSiteName'] - // parsedJson["modelDefinition"] == null ? "" : - // parsedJson["modelDefinition"]["manufacturerName"], - // model: parsedJson["modelDefinition"] == null ? "" : - // parsedJson["modelDefinition"]["modelName"], - ); - } - - factory Device.fromDevice(Device device) { - return Device( - id: device.id, - serialNumber: device.serialNumber, - number: device.number, - // brand: device.brand, - // model: device.model, - ); - } - - Map toMap(Lookup assetType) { - return { - 'id': id, - 'assetSerialNo': serialNumber, - 'assetNumber': number, - 'assetName': assetName, - 'modelDefinition': modelDefinition.toJson(), - 'site': hospital.toMap(), - 'AssetType': assetType.toMap(), - "supplier": {"id": 0, "suppliername": "string"}, - }; - } -} diff --git a/lib/models/device/device_transfer.dart b/lib/models/device/device_transfer.dart deleted file mode 100644 index 75e9ef75..00000000 --- a/lib/models/device/device_transfer.dart +++ /dev/null @@ -1,132 +0,0 @@ -import 'dart:io'; - -import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/department.dart'; -import 'package:test_sa/models/device/device.dart'; -import 'package:test_sa/models/device/device_transfer_info.dart'; -import 'package:test_sa/models/hospital.dart'; -import 'package:test_sa/models/lookup.dart'; - -import '../timer_model.dart'; - -class DeviceTransfer { - int id; - String userId; - String title; - Device device; - DeviceTransferInfo sender; - DeviceTransferInfo receiver; - String createdOn; - - DeviceTransfer({ - this.id, - this.device, - this.title, - this.userId, - this.sender, - this.receiver, - this.createdOn, - }); - - bool validate() { - if (device == null) return false; - return receiver.validate(); - } - - fromDeviceTransfer(DeviceTransfer old) { - id = old.id; - title = old.title; - userId = old.userId; - device = Device.fromDevice(old.device); - final sender = DeviceTransferInfo(); - sender.fromDetails(old.sender); - this.sender = sender; - final receiver = DeviceTransferInfo(); - receiver.fromDetails(old.receiver); - this.receiver = receiver; - createdOn = old.createdOn; - } - - factory DeviceTransfer.fromJson(Map parsedJson) { - List senderFiles = []; - if (parsedJson["senderAttachments"] != null && parsedJson["senderAttachments"] is List) { - List list = parsedJson["senderAttachments"]; - senderFiles = list.map((e) => (URLs.getFileUrl(e["attachmentName"]))).toList(); - } - List receiverFiles = []; - if (parsedJson["receiverAttachments"] != null && parsedJson["receiverAttachments"] is List) { - List list = parsedJson["receiverAttachments"]; - receiverFiles = list.map((e) => (URLs.getFileUrl(e["attachmentName"]))).toList(); - } - return DeviceTransfer( - id: parsedJson["id"], - title: parsedJson["transferCode"], - userId: parsedJson["uid"], - createdOn: parsedJson['createdOn'], - device: Device( - id: parsedJson["assetId"], - number: parsedJson["assetNumber"], - assetName: parsedJson["assetName"], - serialNumber: parsedJson["assetSerialNo"], - destBuildingId: parsedJson["destBuildingId"], - destBuildingName: parsedJson["destBuildingName"], - destDepartmentId: parsedJson["destDepartmentId"], - destDepartmentName: parsedJson["destDepartmentName"], - destFloorId: parsedJson["destFloorId"], - destFloor: parsedJson["destFloorName"], - destRoom: parsedJson["destRoom"], - destSiteName: parsedJson["destSiteName"], - ), - sender: DeviceTransferInfo( - travelingHours: parsedJson["senderTravelingHours"], - comment: parsedJson["senderComment"], - workingHours: parsedJson["senderWorkingHours"], - attachments: senderFiles?.map((e) => File(e))?.toList(), - timer: TimerModel( - startAt: DateTime.tryParse(parsedJson["senderStartDate"] ?? ""), - endAt: DateTime.tryParse(parsedJson["senderEndDate"] ?? ""), - durationInSecond: ((parsedJson["workingHours"] ?? 0) * 60 * 60).toInt(), - ), - // startDate: parsedJson["senderStartDate"] == null ? null : DateTime.parse(parsedJson["senderStartDate"]), - // endDate: parsedJson["senderEndDate"] == null ? null : DateTime.parse(parsedJson["senderEndDate"]), - userId: parsedJson["senderAssignedEmployeeId"], - userName: parsedJson["senderAssignedEmployeeName"], - assignedEmployeeName: parsedJson["senderAssignedEmployeeName"], - client: Hospital(id: parsedJson["senderSiteId"], name: parsedJson["senderSiteName"]), - department: Department( - id: parsedJson["senderDepartmentId"], - name: parsedJson["senderDepartmentName"], - ), - engSignature: URLs.getFileUrl(parsedJson["senderEngSignature"]), - status: Lookup( - id: parsedJson["senderMachineStatusId"], - name: parsedJson["senderMachineStatusName"], - ), - ), - receiver: DeviceTransferInfo( - travelingHours: parsedJson["receiverTravelingHours"], - comment: parsedJson["receiverComment"], - workingHours: parsedJson["receiverWorkingHours"], - attachments: receiverFiles?.map((e) => File(e))?.toList(), - timer: parsedJson["receiverStartDate"] != null || parsedJson["receiverEndDate"] != null - ? TimerModel(startAt: DateTime.tryParse(parsedJson["receiverStartDate"] ?? ""), endAt: DateTime.tryParse(parsedJson["receiverEndDate"] ?? "")) - : null, - // startDate: parsedJson["receiverStartDate"] == null ? null : DateTime.parse(parsedJson["receiverStartDate"]), - // endDate: parsedJson["receiverEndDate"] == null ? null : DateTime.parse(parsedJson["receiverEndDate"]), - userId: parsedJson["receiverAssignedEmployeeId"], - userName: parsedJson["receiverAssignedEmployeeName"], - assignedEmployeeName: parsedJson["receiverAssignedEmployeeName"], - client: Hospital(id: parsedJson["destSiteId"], name: parsedJson["destSiteName"]), - department: Department( - id: parsedJson["destDepartmentId"], - name: parsedJson["destDepartmentName"], - ), - engSignature: URLs.getFileUrl(parsedJson["receiverEngSignature"]), - status: Lookup( - id: parsedJson["receiverMachineStatusId"], - name: parsedJson["receiverMachineStatusName"], - ), - ), - ); - } -} diff --git a/lib/models/lookup.dart b/lib/models/lookup.dart index 8080a79b..0878bae1 100644 --- a/lib/models/lookup.dart +++ b/lib/models/lookup.dart @@ -11,7 +11,7 @@ class Lookup extends Base { @override int get hashCode => id?.hashCode ?? value?.hashCode; - toMap() { + toJson() { return {"id": id, "name": name, "value": value}; } diff --git a/lib/models/new_models/department.dart b/lib/models/new_models/department.dart index 1a9158e1..2f0a5a84 100644 --- a/lib/models/new_models/department.dart +++ b/lib/models/new_models/department.dart @@ -11,7 +11,7 @@ class Department extends Base { Department.fromJson(dynamic json) { id = json['id']; identifier = id.toString(); - departmentName = json['departmentName']; + departmentName = json['departmentName'] ?? json['name']; name = departmentName; departmentCode = json['departmentCode']; ntCode = json['ntCode']; diff --git a/lib/models/new_models/gas_refill_model.dart b/lib/models/new_models/gas_refill_model.dart index a68305ba..697ea163 100644 --- a/lib/models/new_models/gas_refill_model.dart +++ b/lib/models/new_models/gas_refill_model.dart @@ -146,7 +146,7 @@ class GasRefillModel { map['assignedEmployee'] = assignedEmployee.toJson(); } if (status != null) { - map['status'] = status.toMap(); + map['status'] = status.toJson(); } if (gazRefillDetails != null) { map['gazRefillDetails'] = gazRefillDetails.map((v) => v.toJson()).toList(); @@ -216,13 +216,13 @@ class GasRefillDetails { final map = {}; map['id'] = id; if (gasType != null) { - map['gasType'] = gasType.toMap(); + map['gasType'] = gasType.toJson(); } if (cylinderType != null) { - map['cylinderType'] = cylinderType.toMap(); + map['cylinderType'] = cylinderType.toJson(); } if (cylinderSize != null) { - map['cylinderSize'] = cylinderSize.toMap(); + map['cylinderSize'] = cylinderSize.toJson(); } map['requestedQty'] = requestedQty; map['deliverdQty'] = deliverdQty; diff --git a/lib/models/service_report.dart b/lib/models/service_report.dart index 7575bce3..7a4bd061 100644 --- a/lib/models/service_report.dart +++ b/lib/models/service_report.dart @@ -2,7 +2,7 @@ import 'dart:typed_data'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/device/device.dart'; +import 'package:test_sa/models/asset/asset.dart'; import 'package:test_sa/models/engineer.dart'; import 'package:test_sa/models/fault_description.dart'; import 'package:test_sa/models/lookup.dart'; @@ -35,7 +35,7 @@ class ServiceReport { String invoiceCode; List parts; List files; - Device device; + Asset device; String quantity; String jobSheetNumber; TimerModel timer; @@ -91,9 +91,9 @@ class ServiceReport { if (returnToService != null) _map["replacementDate"] = returnToService.toIso8601String(); //if(serviceType != null) _map["service_type"] = serviceType.id.toString(); - if (equipmentStatus != null) _map["equipmentStatus"] = equipmentStatus?.toMap(); - if (type != null) _map["typeOfWO"] = type?.toMap(); - if (assetType != null) _map["TypeOfWO"] = assetType?.toMap(); + if (equipmentStatus != null) _map["equipmentStatus"] = equipmentStatus?.toJson(); + if (type != null) _map["typeOfWO"] = type?.toJson(); + if (assetType != null) _map["TypeOfWO"] = assetType?.toJson(); //if(faultDescriptionId != null && faultDescriptionId.isNotEmpty) _map["fault_description"] = faultDescriptionId; //if(workHours != null && workHours.isNotEmpty) _map["working_hours"] = workHours; if (timer != null) { @@ -121,18 +121,19 @@ class ServiceReport { if (device != null && device.id != null) { _map["callRequest"] = { "id": request.id, - "asset": device?.toMap(assetType), + // "asset": device?.toJson(assetType), + "asset": device?.toJson(), }; _map["callRequest"]["asset"]["invoiceNumber"] = invoiceNumber; } _map["AssignedEmployee"] = engineer?.toMap(); - _map["repairLocation"] = repairLocation?.toMap(); + _map["repairLocation"] = repairLocation?.toJson(); //if(quantity != null && quantity.isNotEmpty) _map["qty"] = quantity; //if(endDate != null) _map["end_date"] = (endDate.millisecondsSinceEpoch ~/ 1000).toString(); - if (reason != null) _map["reason"] = reason.toMap(); + if (reason != null) _map["reason"] = reason.toJson(); //if(operatingHours != null && operatingHours.isNotEmpty) _map["operation_hours"] = operatingHours; - if (callLastSituation != null) _map["calllastSituation"] = callLastSituation.toMap(); - if (currentSituation != null) _map["currentSituation"] = currentSituation.toMap(); + if (callLastSituation != null) _map["calllastSituation"] = callLastSituation.toJson(); + if (currentSituation != null) _map["currentSituation"] = currentSituation.toJson(); //if(image != null) _map["image"] = image; //if(invoiceCode != null) _map["invoice_no"] = invoiceCode; //if(invoiceNumber != null) _map["invoice_code"] = invoiceNumber; @@ -234,7 +235,7 @@ class ServiceReport { durationInSecond: ((parsedJson["workingHours"] ?? 0) * 60 * 60).toInt(), ), //workPreformed: parsedJson["work_performed"], - device: Device.fromJson(parsedJson["callRequest"]["asset"]), + device: Asset.fromJson(parsedJson["callRequest"]["asset"]), signatureNurse: URLs.getFileUrl(parsedJson["nurseSignature"]), signatureEngineer: URLs.getFileUrl(parsedJson["engSignature"]), comment: parsedJson['comment'], diff --git a/lib/models/service_request/search_work_order.dart b/lib/models/service_request/search_work_order.dart index cd2cda55..10b0a483 100644 --- a/lib/models/service_request/search_work_order.dart +++ b/lib/models/service_request/search_work_order.dart @@ -114,7 +114,7 @@ class SearchWorkOrder { workOrderYear = wo.workOrderYear ?? workOrderYear; workOrderSequennce = wo.workOrderSequennce ?? workOrderSequennce; callRequest = wo.callRequest ?? callRequest; - if (wo.assetType != null) assetType = Lookup.fromJson((wo.assetType)?.toMap() ?? {}); + if (wo.assetType != null) assetType = Lookup.fromJson((wo.assetType)?.toJson() ?? {}); if (wo.assignedEmployee != null) assignedEmployee = AssignedEmployee.fromJson((wo.assignedEmployee)?.toJson() ?? {}); visitDate = wo.visitDate ?? visitDate; assistantEmployees = (wo.assistantEmployees ?? assistantEmployees) @@ -127,10 +127,10 @@ class SearchWorkOrder { if (wo.supplier != null) supplier = SupplierModel.fromJson((wo.supplier)?.toJson() ?? {}); vendorTicketNumber = wo.vendorTicketNumber ?? vendorTicketNumber; contactPersonWorkOrders = (wo.contactPersonWorkOrders ?? contactPersonWorkOrders)?.map((e) => ContactPersonWorkOrders.fromJson(e?.toJson() ?? {}))?.toList() ?? []; - calllastSituation = Lookup.fromJson((wo.calllastSituation ?? calllastSituation)?.toMap() ?? {}); - if (wo.currentSituation != null) currentSituation = Lookup.fromJson((wo.currentSituation)?.toMap() ?? {}); - repairLocation = Lookup.fromJson((wo.repairLocation ?? repairLocation)?.toMap() ?? {}); - reason = Lookup.fromJson((wo.reason ?? reason)?.toMap() ?? {}); + calllastSituation = Lookup.fromJson((wo.calllastSituation ?? calllastSituation)?.toJson() ?? {}); + if (wo.currentSituation != null) currentSituation = Lookup.fromJson((wo.currentSituation)?.toJson() ?? {}); + repairLocation = Lookup.fromJson((wo.repairLocation ?? repairLocation)?.toJson() ?? {}); + reason = Lookup.fromJson((wo.reason ?? reason)?.toJson() ?? {}); // startofWorkTime = wo.startofWorkTime ?? startofWorkTime; // endofWorkTime = wo.endofWorkTime ?? endofWorkTime; timer = wo.timer ?? timer; @@ -142,7 +142,7 @@ class SearchWorkOrder { reviewComment = wo.reviewComment ?? reviewComment; comment = wo.comment ?? comment; attachmentsWorkOrder = (wo.attachmentsWorkOrder ?? attachmentsWorkOrder)?.map((e) => AttachmentsWorkOrder.fromJson(e?.toJson() ?? {}))?.toList() ?? []; - equipmentStatus = Lookup.fromJson((wo.equipmentStatus ?? equipmentStatus)?.toMap() ?? {}); + equipmentStatus = Lookup.fromJson((wo.equipmentStatus ?? equipmentStatus)?.toJson() ?? {}); suppEngineerWorkOrders = (wo.suppEngineerWorkOrders ?? suppEngineerWorkOrders)?.map((e) => SuppEngineerWorkOrders.fromJson(e?.toJson() ?? {}))?.toList() ?? []; engSignature = wo.engSignature ?? engSignature; nurseSignature = wo.nurseSignature ?? nurseSignature; @@ -269,7 +269,7 @@ class SearchWorkOrder { map['callRequest'] = callRequest.toJson(); } if (assetType != null) { - map['assetType'] = assetType.toMap(); + map['assetType'] = assetType.toJson(); } if (assignedEmployee != null) { map['assignedEmployee'] = assignedEmployee.toJson(); @@ -286,14 +286,14 @@ class SearchWorkOrder { map['contactPersonWorkOrders'] = contactPersonWorkOrders.map((v) => v.toJson()).toList(); } if (calllastSituation != null) { - map['calllastSituation'] = calllastSituation.toMap(); + map['calllastSituation'] = calllastSituation.toJson(); } - map['currentSituation'] = currentSituation?.toMap(); + map['currentSituation'] = currentSituation?.toJson(); if (repairLocation?.id != null) { - map['repairLocation'] = repairLocation.toMap(); + map['repairLocation'] = repairLocation.toJson(); } if (reason != null && reason.id != null) { - map['reason'] = reason.toMap(); + map['reason'] = reason.toJson(); } // map['startofWorkTime'] = startofWorkTime; // map['endofWorkTime'] = endofWorkTime; @@ -315,7 +315,7 @@ class SearchWorkOrder { map['attachmentsWorkOrder'] = attachmentsWorkOrder.map((v) => v.toJson()).toList(); } if (equipmentStatus != null && equipmentStatus.id != null) { - map['equipmentStatus'] = equipmentStatus.toMap(); + map['equipmentStatus'] = equipmentStatus.toJson(); } if (suppEngineerWorkOrders != null) { map['suppEngineerWorkOrders'] = suppEngineerWorkOrders.map((v) => v.toJson()).toList(); @@ -412,13 +412,13 @@ class WoParentDto { Map toJson() { final map = {}; if (callLastSituation != null) { - map['callLastSituation'] = callLastSituation.toMap(); + map['callLastSituation'] = callLastSituation.toJson(); } if (supplier != null) { map['supplier'] = supplier.toJson(); } if (assetType != null) { - map['assetType'] = assetType.toMap(); + map['assetType'] = assetType.toJson(); } map['vendorTicketNumber'] = vendorTicketNumber; map['callId'] = callId ?? 0; @@ -430,10 +430,10 @@ class WoParentDto { map['suppEngineerWorkOrders'] = suppEngineerWorkOrders.map((v) => v.toJson()).toList(); } if (equipmentStatus != null) { - map['equipmentStatus'] = equipmentStatus.toMap(); + map['equipmentStatus'] = equipmentStatus.toJson(); } if (currentSituation != null) { - map['currentSituation'] = currentSituation.toMap(); + map['currentSituation'] = currentSituation.toJson(); } return map; } @@ -1372,7 +1372,7 @@ class CallRequest { map['status'] = status.toJson(); } if (callLastSituation != null) { - map['callLastSituation'] = callLastSituation.toMap(); + map['callLastSituation'] = callLastSituation.toJson(); } if (defectType != null) { map['defectType'] = defectType.toJson(); @@ -1848,7 +1848,7 @@ class Asset { map['parentAsset'] = parentAsset.toJson(); } - map['assetType'] = assetType?.toMap(); + map['assetType'] = assetType?.toJson(); if (site != null) { map['site'] = site.toJson(); } diff --git a/lib/models/service_request/service_request.dart b/lib/models/service_request/service_request.dart index 5769d0c1..5808fce9 100644 --- a/lib/models/service_request/service_request.dart +++ b/lib/models/service_request/service_request.dart @@ -1,5 +1,5 @@ import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/models/device/device.dart'; +import 'package:test_sa/models/asset/asset.dart'; import 'package:test_sa/models/fault_description.dart'; import 'package:test_sa/models/lookup.dart'; @@ -42,7 +42,7 @@ class ServiceRequest { Lookup requestedThrough; Lookup firstAction; Lookup loanAvailability; - Device device; + Asset device; ServiceRequest({ this.id, @@ -128,7 +128,7 @@ class ServiceRequest { visitDate: DateTime.tryParse(parsedJson["visitDate"] ?? "").toString().split(" ").first, nextVisitDate: DateTime.tryParse(parsedJson["nextVisitDate"] ?? ""), //workPerformed: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["workPerformed"] : null, - device: Device.fromJson(parsedJson["asset"]), + device: Asset.fromJson(parsedJson["asset"]), reviewComment: parsedJson["reviewComment"], type: Lookup.fromJson(parsedJson['typeofRequest']), defectType: Lookup.fromJson(parsedJson['defectType']), diff --git a/lib/models/service_request/service_request_search.dart b/lib/models/service_request/service_request_search.dart index f6628672..d461c629 100644 --- a/lib/models/service_request/service_request_search.dart +++ b/lib/models/service_request/service_request_search.dart @@ -60,7 +60,7 @@ class ServiceRequestSearch { } if (statusValue != null) { - search["status"] = statusValue.toMap(); + search["status"] = statusValue.toJson(); } if (deviceName != null && deviceName.isNotEmpty) { @@ -80,7 +80,7 @@ class ServiceRequestSearch { } if (dateOperator != null && from != null) { - search["requestedDateSymbol"] = dateOperator.toMap(); + search["requestedDateSymbol"] = dateOperator.toJson(); search["requestedDateFrom"] = from; } if (dateOperator != null && to != null) { diff --git a/lib/models/service_request/sub_work_order_details.dart b/lib/models/service_request/sub_work_order_details.dart index 6e58d34c..48bcdcc2 100644 --- a/lib/models/service_request/sub_work_order_details.dart +++ b/lib/models/service_request/sub_work_order_details.dart @@ -58,8 +58,8 @@ class SubWorkOrderDetails { Map toJson() { final map = {}; - map['equipmentStatus'] = equipmentStatus?.toMap(); - map['reason'] = reason?.toMap(); + map['equipmentStatus'] = equipmentStatus?.toJson(); + map['reason'] = reason?.toJson(); map['faultDescription'] = faultDescription?.toJson(); if (sparePartsWorkOrders?.isNotEmpty ?? false) { map['sparePartsWorkOrders'] = sparePartsWorkOrders?.map((e) => e.toJson())?.toList(); diff --git a/lib/new_views/common_widgets/app_floating_action_button.dart b/lib/new_views/common_widgets/app_floating_action_button.dart index ac0ae631..d9a9e1af 100644 --- a/lib/new_views/common_widgets/app_floating_action_button.dart +++ b/lib/new_views/common_widgets/app_floating_action_button.dart @@ -4,8 +4,8 @@ import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart'; -import 'package:test_sa/new_views/pages/new_service_request_page.dart'; import 'package:test_sa/new_views/pages/new_transfer_request_page.dart'; +import 'package:test_sa/views/pages/user/requests/create_request.dart'; import '../../models/enums/translation_keys.dart'; import '../app_style/app_color.dart'; @@ -52,10 +52,10 @@ class _AppFloatingActionButtonState extends State { mainAxisSize: MainAxisSize.min, children: [ const _FloatingButtonListTile(iconName: "gas_refill_request", label: TranslationKeys.gasRefillRequest, routeName: NewGasRefillRequestPage.routeName), - const Divider().defaultStyle(context).paddingOnly(left: 16, right: 16), + const Divider().defaultStyle(context).paddingOnly(start: 16, end: 16), const _FloatingButtonListTile(iconName: "transfer_request", label: TranslationKeys.transferRequest, routeName: NewTransferRequestPage.routeName), - const Divider().defaultStyle(context).paddingOnly(left: 16, right: 16), - const _FloatingButtonListTile(iconName: "service_request", label: TranslationKeys.serviceRequest, routeName: NewServiceRequestPage.routeName), + const Divider().defaultStyle(context).paddingOnly(start: 16, end: 16), + const _FloatingButtonListTile(iconName: "service_request", label: TranslationKeys.serviceRequest, routeName: CreateRequestPage.id), ], ).paddingOnly(top: 8, bottom: 8), ), diff --git a/lib/new_views/common_widgets/app_text_form_field.dart b/lib/new_views/common_widgets/app_text_form_field.dart index 5c3aa0c5..be5b1676 100644 --- a/lib/new_views/common_widgets/app_text_form_field.dart +++ b/lib/new_views/common_widgets/app_text_form_field.dart @@ -98,13 +98,14 @@ class _AppTextFormFieldState extends State { floatingLabelStyle: AppTextStyle.body1?.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? null : AppColor.neutral20), hintText: widget.hintText != null ? context.translate(widget.hintText) : null, labelText: widget.labelText != null ? context.translate(widget.labelText) : null, - suffixIcon: widget.prefixIconData == null - ? null - : Icon( - widget.prefixIconData, - size: widget.prefixIconSize == null ? 20.toScreenWidth : (widget.prefixIconSize - 10).toScreenWidth, - color: AppColor.neutral70, - ), + suffixIcon: widget.suffixIcon ?? + (widget.prefixIconData == null + ? null + : Icon( + widget.prefixIconData, + size: widget.prefixIconSize == null ? 20.toScreenWidth : (widget.prefixIconSize - 10).toScreenWidth, + color: AppColor.neutral70, + )), ), ), ); diff --git a/lib/new_views/pages/login_page.dart b/lib/new_views/pages/login_page.dart index 75930f70..c2ce0fa6 100644 --- a/lib/new_views/pages/login_page.dart +++ b/lib/new_views/pages/login_page.dart @@ -90,7 +90,7 @@ class _LoginPageState extends State { ).center.expanded, AppFilledButton(label: TranslationKeys.login, maxWidth: true, onPressed: _login), ], - ).paddingOnly(left: 16, right: 16, bottom: 24, top: 24), + ).paddingOnly(start: 16, end: 16, bottom: 24, top: 24), ), ); } diff --git a/lib/new_views/pages/new_gas_refill_request_page.dart b/lib/new_views/pages/new_gas_refill_request_page.dart index e3b77b3d..d19182b4 100644 --- a/lib/new_views/pages/new_gas_refill_request_page.dart +++ b/lib/new_views/pages/new_gas_refill_request_page.dart @@ -154,14 +154,6 @@ class _NewGasRefillRequestPageState extends State { _gasModel.department = value; }, ), - // 8.height, - // SingleItemDropDownMenu( - // context: context, - // title: TranslationKeys.department, - // onSelect: (value) { - // _formModel.department = value; - // }, - // ), 8.height, AppFilledButton( label: TranslationKeys.add, @@ -225,7 +217,7 @@ class _NewGasRefillRequestPageState extends State { ).expanded, AppFilledButton(label: TranslationKeys.submitRequest, maxWidth: true, onPressed: _submit), ], - ).paddingOnly(left: 16, right: 16, bottom: 24), + ).paddingOnly(start: 16, end: 16, bottom: 24), ); } diff --git a/lib/new_views/pages/new_service_request_page.dart b/lib/new_views/pages/new_service_request_page.dart deleted file mode 100644 index 1783c3f1..00000000 --- a/lib/new_views/pages/new_service_request_page.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:test_sa/extensions/widget_extensions.dart'; -import 'package:test_sa/models/enums/translation_keys.dart'; - -import '../common_widgets/app_filled_button.dart'; -import '../common_widgets/default_app_bar.dart'; - -class NewServiceRequestPage extends StatelessWidget { - static const String routeName = "/new_service_request_page"; - const NewServiceRequestPage({Key key}) : super(key: key); - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: const DefaultAppBar(title: TranslationKeys.newServiceRequest), - body: Column( - children: [ - SingleChildScrollView( - child: Column(children: []), - ).expanded, - AppFilledButton(label: TranslationKeys.submitRequest, maxWidth: true, onPressed: () {}) - ], - ).paddingOnly(left: 16, right: 16, bottom: 24), - ); - } -} diff --git a/lib/new_views/pages/new_transfer_request_page.dart b/lib/new_views/pages/new_transfer_request_page.dart index 96ad05eb..5d9d9c59 100644 --- a/lib/new_views/pages/new_transfer_request_page.dart +++ b/lib/new_views/pages/new_transfer_request_page.dart @@ -20,7 +20,7 @@ class NewTransferRequestPage extends StatelessWidget { ).expanded, AppFilledButton(label: TranslationKeys.submitRequest, maxWidth: true, onPressed: () {}) ], - ).paddingOnly(left: 16, right: 16, bottom: 24), + ).paddingOnly(start: 16, end: 16, bottom: 24), ); } } diff --git a/lib/views/pages/device_transfer/device_transfer_details.dart b/lib/views/pages/device_transfer/device_transfer_details.dart index 5fdfdb93..754a04a2 100644 --- a/lib/views/pages/device_transfer/device_transfer_details.dart +++ b/lib/views/pages/device_transfer/device_transfer_details.dart @@ -1,16 +1,14 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; +import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; -import 'package:test_sa/models/device/device_transfer.dart'; +import 'package:test_sa/models/asset/asset_transfer.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/pages/device_transfer/update_device_transfer.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; -import 'package:test_sa/views/widgets/device_trancfer/device_transfer_info_section.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; @@ -18,7 +16,7 @@ import 'package:test_sa/views/widgets/requests/info_row.dart'; import '../../../models/enums/user_types.dart'; class DeviceTransferDetails extends StatefulWidget { - final DeviceTransfer model; + final AssetTransfer model; const DeviceTransferDetails({Key key, this.model}) : super(key: key); @@ -27,7 +25,7 @@ class DeviceTransferDetails extends StatefulWidget { } class _DeviceTransferDetailsState extends State { - DeviceTransfer _model; + AssetTransfer _model; bool _isSender = false; bool _isReceiver = false; UserProvider _userProvider; @@ -43,7 +41,7 @@ class _DeviceTransferDetailsState extends State { } Future _getDeviceTransfer() async { - _model = await Provider.of(context).getRequestById(assetTransferId: widget.model.id); + _model = await Provider.of(context).getRequestById(assetTransferId: widget.model.id); } @override @@ -59,8 +57,8 @@ class _DeviceTransferDetailsState extends State { } else { _subtitle = AppLocalization.of(context).subtitle; _userProvider = Provider.of(context); - _isSender = _userProvider.user.userID == _model.sender?.userId; - _isReceiver = _userProvider.user.userID == _model.receiver?.userId; + // _isSender = _userProvider.user.userID == _model.sender?.userId; + // _isReceiver = _userProvider.user.userID == _model.receiver?.userId; return Form( key: _formKey, child: LoadingManager( @@ -96,39 +94,39 @@ class _DeviceTransferDetailsState extends State { children: [ RequestInfoRow( title: "Transfer Id", - info: _model.title?.toString(), + info: "_model.title?.toString()", ), RequestInfoRow( title: _subtitle.assetName, - info: _model.device.assetName, + info: "_model.device.assetName", ), RequestInfoRow( title: _subtitle.assetSN, - info: _model.device.serialNumber, + info: "_model.device.serialNumber", ), RequestInfoRow( title: _subtitle.assetNumber, - info: _model.device.number, + info: "_model.device.number", ), RequestInfoRow( title: _subtitle.destinationSite, - info: _model.device.destSiteName, + info: "_model.device.destSiteName", ), RequestInfoRow( title: _subtitle.building, - info: _model.device.destBuildingName, + info: " _model.device.destBuildingName", ), RequestInfoRow( title: _subtitle.floor, - info: _model.device.destFloor, + info: "_model.device.destFloor", ), RequestInfoRow( title: _subtitle.department, - info: _model.device.destDepartmentName, + info: "_model.device.destDepartmentName", ), RequestInfoRow( title: _subtitle.room, - info: _model.device.destRoom, + info: "_model.device.destRoom", ), RequestInfoRow( title: _subtitle.actions, @@ -143,25 +141,25 @@ class _DeviceTransferDetailsState extends State { if (_userProvider.user?.type == UsersTypes.engineer) ASmallButton( text: _subtitle.edit, - onPressed: (_isSender) - ? (_model.sender.status?.name == "Closed" - ? null - : () { - Navigator.of(context).push(MaterialPageRoute( - builder: (_) => UpdateDeviceTransfer( - model: _model, - isSender: true, - ))); - }) - : null, + // onPressed: (_isSender) + // ? (_model.sender.status?.name == "Closed" + // ? null + // : () { + // Navigator.of(context).push(MaterialPageRoute( + // builder: (_) => UpdateDeviceTransfer( + // model: _model, + // isSender: true, + // ))); + // }) + // : null, ), ], ), const SizedBox(height: 12), - DeviceTransferInfoSection( - info: _model.sender, - isSender: true, - ), + // DeviceTransferInfoSection( + // info: _model.sender, + // isSender: true, + // ), const SizedBox(height: 8), Row( children: [ @@ -171,25 +169,25 @@ class _DeviceTransferDetailsState extends State { if (_userProvider.user?.type == UsersTypes.engineer) ASmallButton( text: _subtitle.edit, - onPressed: (_isReceiver) - ? (_model.receiver.status?.name == "Closed" - ? null - : () { - Navigator.of(context).push(MaterialPageRoute( - builder: (_) => UpdateDeviceTransfer( - model: _model, - isSender: false, - ))); - }) - : null, + // onPressed: (_isReceiver) + // ? (_model.receiver.status?.name == "Closed" + // ? null + // : () { + // Navigator.of(context).push(MaterialPageRoute( + // builder: (_) => UpdateDeviceTransfer( + // model: _model, + // isSender: false, + // ))); + // }) + // : null, ), ], ), const SizedBox(height: 12), - DeviceTransferInfoSection( - info: _model.receiver, - isSender: false, - ), + // DeviceTransferInfoSection( + // info: _model.receiver, + // isSender: false, + // ), ], ), ), diff --git a/lib/views/pages/device_transfer/request_device_transfer.dart b/lib/views/pages/device_transfer/request_device_transfer.dart index 5f6ad2a3..df46a036 100644 --- a/lib/views/pages/device_transfer/request_device_transfer.dart +++ b/lib/views/pages/device_transfer/request_device_transfer.dart @@ -1,16 +1,13 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; +import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/extensions/int_extensions.dart'; -import 'package:test_sa/models/department.dart'; -import 'package:test_sa/models/device/device_transfer.dart'; -import 'package:test_sa/models/device/device_transfer_info.dart'; +import 'package:test_sa/models/asset/asset_transfer.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; -import 'package:test_sa/views/widgets/equipment/device_button.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; @@ -38,9 +35,9 @@ class _RequestDeviceTransferState extends State { Subtitle _subtitle; UserProvider _userProvider; SettingProvider _settingProvider; - DeviceTransferProvider _deviceTransferProvider; + AssetTransferProvider _deviceTransferProvider; final TextEditingController _requestedQuantityController = TextEditingController(); - final DeviceTransfer _formModel = DeviceTransfer(receiver: DeviceTransferInfo(), sender: DeviceTransferInfo()); + final AssetTransfer _formModel = AssetTransfer(/*receiver: DeviceTransferInfo(), sender: DeviceTransferInfo()*/); final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); @@ -57,10 +54,10 @@ class _RequestDeviceTransferState extends State { } _formKey.currentState.save(); - if (!_formModel.validate()) { - setState(() {}); - return false; - } + // if (!_formModel.validate()) { + // setState(() {}); + // return false; + // } _isLoading = true; setState(() {}); @@ -98,7 +95,7 @@ class _RequestDeviceTransferState extends State { _subtitle = AppLocalization.of(context).subtitle; _userProvider = Provider.of(context); _settingProvider = Provider.of(context); - _deviceTransferProvider = Provider.of(context, listen: false); + _deviceTransferProvider = Provider.of(context, listen: false); return Scaffold( key: _scaffoldKey, body: Form( @@ -139,29 +136,29 @@ class _RequestDeviceTransferState extends State { // ), 12.height, const ASubTitle("Asset"), - if (_validate && _formModel.device == null) + if (_validate /*&& _formModel.device == null*/) ASubTitle( _subtitle.requiredWord, color: Colors.red, ), 6.height, - DeviceButton( - device: _formModel.device, - onDevicePick: (device) { - _formModel.device = device; - _formModel.sender.client = device.hospital; - setState(() {}); - }, - ), - if (_formModel.device != null) 8.height, - if (_formModel.device != null) AdditionalAssetInfo(title: "Asset Site", value: _formModel.device.hospital?.name), - if (_formModel.device != null) 4.height, - if (_formModel.device != null) AdditionalAssetInfo(title: "Asset Department", value: _formModel.device.destDepartmentName), - if (_formModel.device != null) 4.height, - if (_formModel.device != null) AdditionalAssetInfo(title: "Asset Floor", value: _formModel.device.destFloor), - if (_formModel.device != null) 4.height, - if (_formModel.device != null) AdditionalAssetInfo(title: "Asset Room", value: _formModel.device.destRoom), - if (_formModel.device != null) 8.height, + // DeviceButton( + // device: _formModel.device, + // onDevicePick: (device) { + // _formModel.device = device; + // _formModel.sender.client = device.hospital; + // setState(() {}); + // }, + // ), + // if (_formModel.device != null) 8.height, + // if (_formModel.device != null) AdditionalAssetInfo(title: "Asset Site", value: _formModel.device.hospital?.name), + // if (_formModel.device != null) 4.height, + // if (_formModel.device != null) AdditionalAssetInfo(title: "Asset Department", value: _formModel.device.destDepartmentName), + // if (_formModel.device != null) 4.height, + // if (_formModel.device != null) AdditionalAssetInfo(title: "Asset Floor", value: _formModel.device.destFloor), + // if (_formModel.device != null) 4.height, + // if (_formModel.device != null) AdditionalAssetInfo(title: "Asset Room", value: _formModel.device.destRoom), + // if (_formModel.device != null) 8.height, // const SizedBox(height: 8,), // const ASubTitle("Sender Department"), // if(_validate && _formModel.senderDepartment == null) @@ -225,7 +222,7 @@ class _RequestDeviceTransferState extends State { _deviceTransferProvider.building = null; _deviceTransferProvider.floor = null; _deviceTransferProvider.department = null; - _formModel.receiver.client = value; + // _formModel.receiver.client = value; setState(() {}); }, ), @@ -255,7 +252,7 @@ class _RequestDeviceTransferState extends State { departments: _deviceTransferProvider?.floor?.departments, onSelect: (status) { _deviceTransferProvider.department = status; - _formModel.receiver.department = Department(id: status.id, name: status.name); + // _formModel.receiver.department = Department(id: status.id, name: status.name); setState(() {}); }, ), diff --git a/lib/views/pages/device_transfer/track_device_transfer.dart b/lib/views/pages/device_transfer/track_device_transfer.dart index 34e81688..769b682b 100644 --- a/lib/views/pages/device_transfer/track_device_transfer.dart +++ b/lib/views/pages/device_transfer/track_device_transfer.dart @@ -1,14 +1,12 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; +import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/device/device_transfer_search.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/device_trancfer/device_transfer_list.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:test_sa/views/widgets/search/asset_transfer_search_dialog.dart'; import '../../widgets/buttons/app_icon_button.dart'; @@ -22,13 +20,13 @@ class TrackDeviceTransferPage extends StatefulWidget { } class _TrackDeviceTransferPageState extends State with TickerProviderStateMixin { - DeviceTransferProvider _deviceTransferProvider; + AssetTransferProvider _deviceTransferProvider; UserProvider _userProvider; SettingProvider _settingProvider; @override Widget build(BuildContext context) { - _deviceTransferProvider = Provider.of(context); + _deviceTransferProvider = Provider.of(context); _userProvider = Provider.of(context); _settingProvider = Provider.of(context); @@ -71,22 +69,22 @@ class _TrackDeviceTransferPageState extends State with buttonSize: 42, backgroundColor: AColors.white, onPressed: () async { - DeviceTransferSearch temp = await showModalBottomSheet( - context: context, - isScrollControlled: true, - builder: (context) { - return AssetTransferSearchDialog(initialSearchValue: _deviceTransferProvider.deviceTransferSearch); - }, - ); - if (temp != null) { - _deviceTransferProvider.deviceTransferSearch = temp; - _deviceTransferProvider.reset(); - setState(() {}); - await _deviceTransferProvider.getRequests( - user: _userProvider.user, - host: _settingProvider.host, - ); - } + // DeviceTransferSearch temp = await showModalBottomSheet( + // context: context, + // isScrollControlled: true, + // builder: (context) { + // return AssetTransferSearchDialog(initialSearchValue: _deviceTransferProvider.deviceTransferSearch); + // }, + // ); + // if (temp != null) { + // _deviceTransferProvider.deviceTransferSearch = temp; + // _deviceTransferProvider.reset(); + // setState(() {}); + // await _deviceTransferProvider.getRequests( + // user: _userProvider.user, + // host: _settingProvider.host, + // ); + // } }, ), const SizedBox(width: 16), diff --git a/lib/views/pages/device_transfer/update_device_transfer.dart b/lib/views/pages/device_transfer/update_device_transfer.dart index 29844f8a..fad59ba7 100644 --- a/lib/views/pages/device_transfer/update_device_transfer.dart +++ b/lib/views/pages/device_transfer/update_device_transfer.dart @@ -1,29 +1,20 @@ -import 'dart:convert'; - import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; +import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/device/device_transfer.dart'; -import 'package:test_sa/models/device/device_transfer_info.dart'; +import 'package:test_sa/models/asset/asset_transfer.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; -import 'package:test_sa/views/widgets/e_signature/e_signature.dart'; -import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:test_sa/views/widgets/status/asset_status.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; import '../../../../controllers/localization/localization.dart'; -import '../../widgets/timer/app_timer.dart'; class UpdateDeviceTransfer extends StatefulWidget { - final DeviceTransfer model; + final AssetTransfer model; final bool isSender; const UpdateDeviceTransfer({Key key, this.model, this.isSender}) : super(key: key); @@ -39,21 +30,21 @@ class _UpdateDeviceTransferState extends State { UserProvider _userProvider; SettingProvider _settingProvider; Uint8List _signature; - DeviceTransferProvider _deviceTransferProvider; + AssetTransferProvider _deviceTransferProvider; final TextEditingController _requestedQuantityController = TextEditingController(); - final DeviceTransferInfo _formModel = DeviceTransferInfo(attachments: []); + // final DeviceTransferInfo _formModel = DeviceTransferInfo(attachments: []); final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); _update() async { - if (_formModel?.timer?.startAt == null) { - await Fluttertoast.showToast(msg: "Working Hours Required"); - return false; - } - if (_formModel?.timer?.endAt == null) { - await Fluttertoast.showToast(msg: "Please Stop The Timer"); - return false; - } + // if (_formModel?.timer?.startAt == null) { + // await Fluttertoast.showToast(msg: "Working Hours Required"); + // return false; + // } + // if (_formModel?.timer?.endAt == null) { + // await Fluttertoast.showToast(msg: "Please Stop The Timer"); + // return false; + // } _validate = true; if (!_formKey.currentState.validate()) { setState(() {}); @@ -63,17 +54,17 @@ class _UpdateDeviceTransferState extends State { _isLoading = true; setState(() {}); - int status = await _deviceTransferProvider.updateRequest( - user: _userProvider.user, host: _settingProvider.host, requestId: widget.model.id, isSender: widget.isSender, newModel: _formModel, oldModel: widget.model); - _isLoading = false; - setState(() {}); - if (status >= 200 && status < 300) { - Fluttertoast.showToast( - msg: _subtitle.requestCompleteSuccessfully, - ); - _validate = false; - Navigator.of(context).pop(); - } + // int status = await _deviceTransferProvider.updateRequest( + // user: _userProvider.user, host: _settingProvider.host, requestId: widget.model.id, isSender: widget.isSender, newModel: _formModel, oldModel: widget.model); + // _isLoading = false; + // setState(() {}); + // if (status >= 200 && status < 300) { + // Fluttertoast.showToast( + // msg: _subtitle.requestCompleteSuccessfully, + // ); + // _validate = false; + // Navigator.of(context).pop(); + // } } // @override @@ -83,7 +74,7 @@ class _UpdateDeviceTransferState extends State { @override void initState() { - _formModel.fromDetails(widget.isSender ? widget.model.sender : widget.model.receiver, withSignature: false); + // _formModel.fromDetails(widget.isSender ? widget.model.sender : widget.model.receiver, withSignature: false); super.initState(); } @@ -98,7 +89,7 @@ class _UpdateDeviceTransferState extends State { _subtitle = AppLocalization.of(context).subtitle; _userProvider = Provider.of(context); _settingProvider = Provider.of(context); - _deviceTransferProvider = Provider.of(context, listen: false); + _deviceTransferProvider = Provider.of(context, listen: false); return Scaffold( key: _scaffoldKey, body: Form( @@ -131,15 +122,15 @@ class _UpdateDeviceTransferState extends State { const SizedBox( height: 4, ), - ATextFormField( - initialValue: _formModel?.comment, - textAlign: TextAlign.center, - style: Theme.of(context).textTheme.subtitle1, - textInputType: TextInputType.text, - onSaved: (value) { - _formModel.comment = value; - }, - ), + // ATextFormField( + // initialValue: _formModel?.comment, + // textAlign: TextAlign.center, + // style: Theme.of(context).textTheme.subtitle1, + // textInputType: TextInputType.text, + // onSaved: (value) { + // _formModel.comment = value; + // }, + // ), const SizedBox( height: 8, ), @@ -147,15 +138,15 @@ class _UpdateDeviceTransferState extends State { const SizedBox( height: 4, ), - ATextFormField( - initialValue: _formModel?.travelingHours, - textAlign: TextAlign.center, - style: Theme.of(context).textTheme.subtitle1, - textInputType: TextInputType.number, - onSaved: (value) { - _formModel.travelingHours = value; - }, - ), + // ATextFormField( + // initialValue: _formModel?.travelingHours, + // textAlign: TextAlign.center, + // style: Theme.of(context).textTheme.subtitle1, + // textInputType: TextInputType.number, + // onSaved: (value) { + // _formModel.travelingHours = value; + // }, + // ), const SizedBox( height: 16, ), @@ -163,16 +154,16 @@ class _UpdateDeviceTransferState extends State { const SizedBox(height: 8), Row( children: [ - Expanded( - child: AppTimer( - timer: _formModel.timer, - onChange: (timer) async { - _formModel.timer = timer; - _formModel.workingHours = (((timer?.durationInSecond ?? 0) / 60) / 60)?.toStringAsFixed(2) ?? "0"; - return true; - }, - ), - ), + // Expanded( + // child: AppTimer( + // timer: _formModel.timer, + // onChange: (timer) async { + // _formModel.timer = timer; + // _formModel.workingHours = (((timer?.durationInSecond ?? 0) / 60) / 60)?.toStringAsFixed(2) ?? "0"; + // return true; + // }, + // ), + // ), ], ), const SizedBox(height: 16), @@ -180,21 +171,21 @@ class _UpdateDeviceTransferState extends State { const SizedBox( height: 4, ), - AssetStatusMenu( - initialValue: _formModel.status, - onSelect: (status) { - if (status == null) return; - _formModel.status = status; - setState(() {}); - }, - ), + // AssetStatusMenu( + // initialValue: _formModel.status, + // onSelect: (status) { + // if (status == null) return; + // _formModel.status = status; + // setState(() {}); + // }, + // ), const SizedBox( height: 16, ), - MultiFilesPicker( - label: "Attachments", - files: _formModel.attachments, - ), + // MultiFilesPicker( + // label: "Attachments", + // files: _formModel.attachments, + // ), const SizedBox( height: 16, ), @@ -204,16 +195,16 @@ class _UpdateDeviceTransferState extends State { const SizedBox( height: 4, ), - ESignature( - oldSignature: widget.isSender ? widget.model.sender.engSignature : widget.model.receiver.engSignature, - newSignature: _signature, - onSaved: (signature) { - _signature = signature; - if (signature == null || signature.isEmpty) return; - _formModel.engSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; - // base64Encode(signature); - }, - ), + // ESignature( + // oldSignature: widget.isSender ? widget.model.sender.engSignature : widget.model.receiver.engSignature, + // newSignature: _signature, + // onSaved: (signature) { + // _signature = signature; + // if (signature == null || signature.isEmpty) return; + // _formModel.engSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; + // // base64Encode(signature); + // }, + // ), Padding( padding: const EdgeInsets.all(16.0), child: AButton( diff --git a/lib/views/pages/user/land_page.dart b/lib/views/pages/user/land_page.dart index 44c56661..3c7203ec 100644 --- a/lib/views/pages/user/land_page.dart +++ b/lib/views/pages/user/land_page.dart @@ -18,6 +18,7 @@ import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart'; import 'package:test_sa/views/pages/sub_workorder/search_sub_workorder_page.dart'; import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart'; +import 'package:test_sa/views/pages/user/requests/create_request.dart'; import 'package:test_sa/views/pages/user/visits/regular_visits_page.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; @@ -25,7 +26,6 @@ import 'package:test_sa/views/widgets/dialogs/dialog.dart'; import 'package:test_sa/views/widgets/drawer/drawer_item.dart'; import 'package:url_launcher/url_launcher.dart'; -import '../../../new_views/pages/new_service_request_page.dart'; import '../../widgets/land_page/land_page_item.dart'; import 'requests/requests_page.dart'; @@ -154,8 +154,7 @@ class _LandPageState extends State { text: "New Service Request", icon: FontAwesomeIcons.screwdriverWrench, onPressed: () { - // Navigator.of(context).pushNamed(CreateRequestPage.id); - Navigator.of(context).pushNamed(NewServiceRequestPage.routeName); + Navigator.of(context).pushNamed(CreateRequestPage.id); }, ), LandPageItem( @@ -283,7 +282,7 @@ class _LandPageState extends State { children: [ const Icon(Icons.clear).onPress(() => Navigator.pop(context)), ], - ).paddingOnly(left: 4, right: 14), + ).paddingOnly(start: 4, end: 14), Row( children: [ Container( @@ -310,7 +309,7 @@ class _LandPageState extends State { textScaleFactor: AppStyle.getScaleFactor(context), ).expanded ], - ).paddingOnly(left: 14, right: 14, top: 21, bottom: 21), + ).paddingOnly(start: 14, end: 14, top: 21, bottom: 21), Divider( height: 1, thickness: 1, @@ -438,7 +437,7 @@ class _LandPageState extends State { 6.width, Image.asset("assets/images/cloud_logo.png", width: 32, height: 32) ], - ).paddingOnly(left: 20, right: 20, top: 8, bottom: 8), + ).paddingOnly(start: 20, end: 20, top: 8, bottom: 8), ], ), ), diff --git a/lib/views/pages/user/requests/create_request.dart b/lib/views/pages/user/requests/create_request.dart index c6c05bab..9aa84227 100644 --- a/lib/views/pages/user/requests/create_request.dart +++ b/lib/views/pages/user/requests/create_request.dart @@ -13,15 +13,12 @@ import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/controllers/validator/validator.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; -import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/app_style/colors.dart'; +import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/views/widgets/app_text_form_field.dart'; -import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/date_and_time/time_picker.dart'; -import 'package:test_sa/views/widgets/equipment/device_button.dart'; +import 'package:test_sa/views/widgets/equipment/pick_asset.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/sound/record_sound.dart'; @@ -35,8 +32,9 @@ import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; import '../../../../controllers/providers/api/status_drop_down/service_reqest/service_request_through_provider.dart'; import '../../../../controllers/providers/api/status_drop_down/service_reqest/service_request_type_provider.dart'; -import '../../../app_style/sizing.dart'; -import '../../../widgets/date_and_time/date_picker.dart'; +import '../../../../models/asset/asset.dart'; +import '../../../../models/enums/translation_keys.dart'; +import '../../../../new_views/common_widgets/default_app_bar.dart'; import '../../../widgets/status/service_request/service_request_first_action.dart'; import '../../../widgets/status/service_request/service_request_loan_availability.dart'; @@ -59,7 +57,7 @@ class CreateRequestPageState extends State { final List _deviceImages = []; bool _isLoading = false; bool _showDatePicker = false; - Device _device; + Asset _device; Subtitle _subtitle; final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); @@ -129,6 +127,7 @@ class CreateRequestPageState extends State { return Scaffold( key: _scaffoldKey, + appBar: const DefaultAppBar(title: TranslationKeys.newServiceRequest), body: SafeArea( child: LoadingManager( isLoading: _isLoading, @@ -137,316 +136,245 @@ class CreateRequestPageState extends State { onRefresh: () async {}, child: Form( key: _formKey, - child: Stack( + child: Column( children: [ - ListView( - children: [ - //AppNameBar(), - const SizedBox(height: 16), - Hero( - tag: "logo", - child: Image( - height: _height / 6, - image: const AssetImage("assets/images/logo.png"), + SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + PickAsset( + asset: _device, + onPickAsset: (device) { + _device = device; + setState(() {}); + }, ), - ), - Center( - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Text( - widget.serviceRequest == null ? _subtitle.newServiceRequest : _subtitle.updateServiceRequest, - style: Theme.of(context).textTheme.headline5.copyWith(color: AColors.cyan, fontWeight: FontWeight.w600), - ), + const SizedBox( + height: 8, ), - ), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - 12.height, - _userProvider.user.clientId == null - ? const SizedBox.shrink() - : ATextFormField( - enable: false, - initialValue: _userProvider.user.clientName ?? _subtitle.noHospitalFound, - hintText: _subtitle.hospital, - prefixIconData: FontAwesomeIcons.hospital, - style: Theme.of(context).textTheme.subtitle1, - ), - 12.height, - _userProvider.user.departmentId == null || (_userProvider.user?.departmentId?.isEmpty ?? false) - ? const SizedBox.shrink() - : Container( - padding: const EdgeInsets.all(12), - decoration: BoxDecoration( - color: const Color(0xfff5f5f5), - border: Border.all( - color: const Color(0xffefefef), - ), - borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: _userProvider.user.departmentName - ?.map( - (e) => Text( - e?.trim() ?? "", - style: Theme.of(context).textTheme.titleMedium.copyWith(color: AColors.black), - ), - ) - ?.toList() ?? - [], - ), - Icon( - FontAwesomeIcons.hospitalUser, - size: 20 * AppStyle.getScaleFactor(context), - color: const Color(0xff2e303a), - ), - ], - ), - ), - 12.height, - DeviceButton( - device: _device, - onDevicePick: (device) { - _device = device; - setState(() {}); - }, - ), - const SizedBox( - height: 8, - ), - const ASubTitle("Priority"), - const SizedBox( - height: 4, - ), - ServiceRequestPriorityMenu( - initialValue: widget.serviceRequest?.priority, + const ASubTitle("Priority"), + const SizedBox( + height: 4, + ), + ServiceRequestPriorityMenu( + initialValue: widget.serviceRequest?.priority, + onSelect: (status) { + _serviceRequest.priority = status; + }, + enabled: widget.serviceRequest == null ? true : false, + ), + const SizedBox( + height: 8, + ), + const ASubTitle("Equipment Status"), + const SizedBox( + height: 4, + ), + ServiceRequestDefectTypesMenu( + initialValue: _serviceRequest.defectType, + onSelect: (status) { + _serviceRequest.defectType = status; + }, + enabled: widget.serviceRequest == null ? true : false, + ), + 12.height, + const SizedBox( + height: 8, + ), + const ASubTitle("Type of Request"), + const SizedBox( + height: 4, + ), + ServiceRequestTypesMenu( + initialValue: _serviceRequest.type, + onSelect: (status) { + _serviceRequest.type = status; + }, + enabled: false, + withDefaultItem: widget.serviceRequest == null, + ), + const SizedBox( + height: 8, + ), + const ASubTitle("Through"), + const SizedBox( + height: 4, + ), + ServiceRequestedThroughMenu( + initialValue: _serviceRequest.requestedThrough, + enabled: false, + ), + if (widget.serviceRequest != null) 12.height, + if (widget.serviceRequest != null) const ASubTitle("First Action"), + const SizedBox( + height: 4, + ), + if (widget.serviceRequest != null) + ServiceRequestedFirstAction( + initialValue: _serviceRequest.firstAction, + enabled: !isFirstActionSubmitted, onSelect: (status) { - _serviceRequest.priority = status; + _dateTime = null; + _serviceRequest.firstAction = status; + _showDatePicker = _serviceRequest.firstAction != null && _serviceRequest.firstAction.name == "Need a visit"; + _serviceRequestsProvider.notifyListeners(); }, - enabled: widget.serviceRequest == null ? true : false, ), - const SizedBox( - height: 8, - ), - const ASubTitle("Equipment Status"), - const SizedBox( - height: 4, - ), - ServiceRequestDefectTypesMenu( - initialValue: _serviceRequest.defectType, - onSelect: (status) { - _serviceRequest.defectType = status; + if (_showDatePicker) 12.height, + if (_showDatePicker) + ADateTimePicker( + date: _dateTime, + enable: !isFirstActionSubmitted, + from: DateTime.now(), + onDateTimePicker: (date) { + _dateTime = date; + setState(() {}); }, - enabled: widget.serviceRequest == null ? true : false, - ), - 12.height, - const SizedBox( - height: 8, - ), - const ASubTitle("Type of Request"), - const SizedBox( - height: 4, ), - ServiceRequestTypesMenu( - initialValue: _serviceRequest.type, + if (widget.serviceRequest != null) 12.height, + if (widget.serviceRequest != null) const ASubTitle("Loan Availability"), + const SizedBox( + height: 4, + ), + if (widget.serviceRequest != null) + ServiceRequestedLoanAvailability( + initialValue: _serviceRequest.loanAvailability, onSelect: (status) { - _serviceRequest.type = status; + _serviceRequest.loanAvailability = status; }, - enabled: false, - withDefaultItem: widget.serviceRequest == null, - ), - const SizedBox( - height: 8, - ), - const ASubTitle("Through"), - const SizedBox( - height: 4, ), - ServiceRequestedThroughMenu( - initialValue: _serviceRequest.requestedThrough, - enabled: false, - ), - if (widget.serviceRequest != null) 12.height, - if (widget.serviceRequest != null) const ASubTitle("First Action"), - const SizedBox( - height: 4, - ), - if (widget.serviceRequest != null) - ServiceRequestedFirstAction( - initialValue: _serviceRequest.firstAction, - enabled: !isFirstActionSubmitted, - onSelect: (status) { - _dateTime = null; - _serviceRequest.firstAction = status; - _showDatePicker = _serviceRequest.firstAction != null && _serviceRequest.firstAction.name == "Need a visit"; - _serviceRequestsProvider.notifyListeners(); - }, - ), - if (_showDatePicker) 12.height, - if (_showDatePicker) - ADateTimePicker( - date: _dateTime, - enable: !isFirstActionSubmitted, - from: DateTime.now(), - onDateTimePicker: (date) { - _dateTime = date; - setState(() {}); - }, - ), - if (widget.serviceRequest != null) 12.height, - if (widget.serviceRequest != null) const ASubTitle("Loan Availability"), - const SizedBox( - height: 4, - ), - if (widget.serviceRequest != null) - ServiceRequestedLoanAvailability( - initialValue: _serviceRequest.loanAvailability, - onSelect: (status) { - _serviceRequest.loanAvailability = status; - }, - ), - 12.height, - if (widget.serviceRequest != null) const ASubTitle("Comments"), - const SizedBox( - height: 4, - ), - if (widget.serviceRequest != null) - ATextFormField( - controller: _reviewCommentController, - initialValue: _serviceRequest.reviewComment, - hintText: _subtitle.comment, - style: Theme.of(context).textTheme.titleMedium, - textInputType: TextInputType.multiline, - onSaved: (value) { - _serviceRequest.reviewComment = value; - }, - enable: widget.serviceRequest != null ? false : true, - ), - 12.height, - MultiFilesPicker( - label: _subtitle.deviceFiles, - files: _deviceImages, - enabled: widget.serviceRequest == null ? true : false, + 12.height, + if (widget.serviceRequest != null) const ASubTitle("Comments"), + const SizedBox( + height: 4, + ), + if (widget.serviceRequest != null) + ATextFormField( + controller: _reviewCommentController, + initialValue: _serviceRequest.reviewComment, + hintText: _subtitle.comment, + style: Theme.of(context).textTheme.titleMedium, + textInputType: TextInputType.multiline, + onSaved: (value) { + _serviceRequest.reviewComment = value; + }, + enable: widget.serviceRequest != null ? false : true, ), - 12.height, - SpeechToTextButton( - controller: _maintenanceController, + 12.height, + MultiFilesPicker( + label: _subtitle.deviceFiles, + files: _deviceImages, + enabled: widget.serviceRequest == null ? true : false, + ), + 12.height, + SpeechToTextButton( + controller: _maintenanceController, + enabled: widget.serviceRequest == null ? true : false, + ), + 12.height, + ATextFormField( + controller: _maintenanceController, + initialValue: _serviceRequest.callComments, + hintText: _subtitle.maintenanceIssue, + prefixIconData: FontAwesomeIcons.triangleExclamation, + style: Theme.of(context).textTheme.titleLarge, + textInputType: TextInputType.multiline, + validator: (value) => widget.serviceRequest != null || Validator.hasValue(value) ? null : _subtitle.maintenanceIssueRequired, + onSaved: (value) { + _serviceRequest.callComments = value; + }, + enable: widget.serviceRequest == null ? true : false, + ), + 12.height, + if (_serviceRequest.audio?.isNotEmpty == true) + ASoundPlayer( + audio: _serviceRequest.audio, + ) + else + RecordSound( + onRecord: (audio) { + _serviceRequest.audio = audio; + }, enabled: widget.serviceRequest == null ? true : false, ), - 12.height, + 12.height, + if (widget.serviceRequest != null) ATextFormField( - controller: _maintenanceController, - initialValue: _serviceRequest.callComments, - hintText: _subtitle.maintenanceIssue, - prefixIconData: FontAwesomeIcons.triangleExclamation, - style: Theme.of(context).textTheme.titleLarge, + controller: _commentController, + initialValue: _serviceRequest.comments, + hintText: _subtitle.comment, + style: Theme.of(context).textTheme.titleMedium, textInputType: TextInputType.multiline, - validator: (value) => widget.serviceRequest != null || Validator.hasValue(value) ? null : _subtitle.maintenanceIssueRequired, onSaved: (value) { - _serviceRequest.callComments = value; + _serviceRequest.comments = value; }, - enable: widget.serviceRequest == null ? true : false, ), - 12.height, - if (_serviceRequest.audio?.isNotEmpty == true) - ASoundPlayer( - audio: _serviceRequest.audio, - ) - else - RecordSound( - onRecord: (audio) { - _serviceRequest.audio = audio; - }, - enabled: widget.serviceRequest == null ? true : false, - ), - 12.height, - if (widget.serviceRequest != null) - ATextFormField( - controller: _commentController, - initialValue: _serviceRequest.comments, - hintText: _subtitle.comment, - style: Theme.of(context).textTheme.titleMedium, - textInputType: TextInputType.multiline, - onSaved: (value) { - _serviceRequest.comments = value; - }, - ), - ], - ).paddingOnly(left: 20, right: 20), - Padding( - padding: const EdgeInsets.all(20.0), - child: AButton( - text: widget.serviceRequest == null ? _subtitle.submit : _subtitle.update, - onPressed: () async { - if (!_formKey.currentState.validate()) return; - if (_device?.id == null) { - Fluttertoast.showToast(msg: _subtitle.pickDevice); - return; - } - if (_serviceRequest.firstAction?.name == "Need a visit" && _dateTime == null) { - Fluttertoast.showToast(msg: "first action is required"); - return; - } - if (widget.serviceRequest != null && (_serviceRequest?.engineerId == null || (_serviceRequest?.engineerId?.isEmpty ?? false))) { - await Fluttertoast.showToast(msg: "No Assigned Employee"); - return; - } - _formKey.currentState.save(); - _serviceRequest.deviceId = _device?.id; - if (widget.serviceRequest == null) { - _serviceRequest.type = Provider.of(context, listen: false).getDefaultItem(); - } - _serviceRequest.requestedThrough = Provider.of(context, listen: false).getDefaultItem(); - _isLoading = true; - setState(() {}); - _serviceRequest.devicePhotos = _deviceImages.map((e) => _isLocalUrl(e.path) ? "${e.path.split("/").last}|${base64Encode(e.readAsBytesSync())}" : e.path).toList(); - if (_serviceRequest.audio != null) { - if (_isLocalUrl(_serviceRequest.audio)) { - final File file = File(_serviceRequest.audio); - _serviceRequest.audio = "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"; - } - } - int status = 0; - if (widget.serviceRequest == null) { - status = await _serviceRequestsProvider.createRequest( - user: _userProvider.user, - host: _settingProvider.host, - serviceRequest: _serviceRequest, - ); - } else { - status = await _serviceRequestsProvider.updateDate( - user: _userProvider.user, - host: _settingProvider.host, - request: _serviceRequest, - date: _dateTime, - ); - } - _isLoading = false; - setState(() {}); - if (status >= 200 && status < 300) { - Fluttertoast.showToast( - msg: _subtitle.requestCompleteSuccessfully, - ); - Navigator.of(context).pop(); - } else { - String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: _subtitle); - ScaffoldMessenger.of(context).showSnackBar(SnackBar( - content: Text(errorMessage), - )); - } - }, - ), - ), - ], - ), - const ABackButton(), + ], + ), + ).expanded, + AppFilledButton( + onPressed: () async { + if (!_formKey.currentState.validate()) return; + if (_device?.id == null) { + Fluttertoast.showToast(msg: _subtitle.pickDevice); + return; + } + if (_serviceRequest.firstAction?.name == "Need a visit" && _dateTime == null) { + Fluttertoast.showToast(msg: "first action is required"); + return; + } + if (widget.serviceRequest != null && (_serviceRequest?.engineerId == null || (_serviceRequest?.engineerId?.isEmpty ?? false))) { + await Fluttertoast.showToast(msg: "No Assigned Employee"); + return; + } + _formKey.currentState.save(); + _serviceRequest.deviceId = _device?.id; + if (widget.serviceRequest == null) { + _serviceRequest.type = Provider.of(context, listen: false).getDefaultItem(); + } + _serviceRequest.requestedThrough = Provider.of(context, listen: false).getDefaultItem(); + _isLoading = true; + setState(() {}); + _serviceRequest.devicePhotos = _deviceImages.map((e) => _isLocalUrl(e.path) ? "${e.path.split("/").last}|${base64Encode(e.readAsBytesSync())}" : e.path).toList(); + if (_serviceRequest.audio != null) { + if (_isLocalUrl(_serviceRequest.audio)) { + final File file = File(_serviceRequest.audio); + _serviceRequest.audio = "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"; + } + } + int status = 0; + if (widget.serviceRequest == null) { + status = await _serviceRequestsProvider.createRequest( + user: _userProvider.user, + host: _settingProvider.host, + serviceRequest: _serviceRequest, + ); + } else { + status = await _serviceRequestsProvider.updateDate( + user: _userProvider.user, + host: _settingProvider.host, + request: _serviceRequest, + date: _dateTime, + ); + } + _isLoading = false; + setState(() {}); + if (status >= 200 && status < 300) { + Fluttertoast.showToast( + msg: _subtitle.requestCompleteSuccessfully, + ); + Navigator.of(context).pop(); + } else { + String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: _subtitle); + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(errorMessage), + )); + } + }, + label: TranslationKeys.submitRequest), ], ), - ), + ).paddingOnly(start: 16, end: 16, bottom: 24, top: 16), ), ), ); diff --git a/lib/views/pages/user/requests/request_details.dart b/lib/views/pages/user/requests/request_details.dart index 457c9d9c..e237d7c7 100644 --- a/lib/views/pages/user/requests/request_details.dart +++ b/lib/views/pages/user/requests/request_details.dart @@ -5,7 +5,6 @@ import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; @@ -24,9 +23,7 @@ import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; import 'package:test_sa/views/widgets/images/files_list.dart'; -import 'package:test_sa/views/widgets/images/images_list.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart'; -import 'package:test_sa/views/widgets/loaders/image_loader.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'package:test_sa/views/widgets/sound/sound_player.dart'; @@ -85,7 +82,7 @@ class RequestDetailsPage extends StatelessWidget { 8.height, Text(serviceRequest.deviceEnName, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), Text( - '${_subtitle.assetNumber}: ${serviceRequest.device.number}', + '${_subtitle.assetNumber}: ${serviceRequest.device.assetNumber}', style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), ), Text( @@ -394,7 +391,7 @@ class RequestDetailsPage extends StatelessWidget { // ) ], ).expanded, - AppFilledButton(label: TranslationKeys.login, maxWidth: true, onPressed: () {}).paddingOnly(left: 16, right: 16, bottom: 24), + AppFilledButton(label: TranslationKeys.login, maxWidth: true, onPressed: () {}).paddingOnly(start: 16, end: 16, bottom: 24), ], ), // workOrders.isEmpty ? diff --git a/lib/views/widgets/device_trancfer/device_transfer_info_section.dart b/lib/views/widgets/device_trancfer/device_transfer_info_section.dart index a57d0ee6..d6e66d49 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_info_section.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_info_section.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/models/device/device_transfer_info.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/widgets/loaders/image_loader.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; import '../../../controllers/providers/api/user_provider.dart'; +import '../../../models/asset/device_transfer_info.dart'; import '../images/multi_image_picker.dart'; class DeviceTransferInfoSection extends StatelessWidget { diff --git a/lib/views/widgets/device_trancfer/device_transfer_item.dart b/lib/views/widgets/device_trancfer/device_transfer_item.dart index 8061f679..924b84fa 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_item.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_item.dart @@ -2,17 +2,15 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; -import 'package:test_sa/models/device/device_transfer.dart'; +import 'package:test_sa/models/asset/asset_transfer.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/user.dart'; -import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/requests/request_status.dart'; class DeviceTransferItem extends StatelessWidget { final int index; - final DeviceTransfer item; - final Function(DeviceTransfer) onPressed; + final AssetTransfer item; + final Function(AssetTransfer) onPressed; const DeviceTransferItem({Key key, this.item, this.onPressed, this.index}) : super(key: key); @@ -47,21 +45,21 @@ class DeviceTransferItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - item.title ?? "-----", + /*item.title ??*/ "-----", style: Theme.of(context).textTheme.headline6.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold), ), Divider( color: onItemColor, ), Text( - item.device?.number ?? "-----", + /*item.asset?.number ??*/ "-----", style: Theme.of(context).textTheme.headline6.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold), ), Divider( color: onItemColor, ), Text( - item.device.assetName ?? "", + /*item.asset.assetName ??*/ "", style: Theme.of(context).textTheme.headline6.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold), ), Divider( @@ -77,71 +75,71 @@ class DeviceTransferItem extends StatelessWidget { ), ), ), - StatusLabel( - backgroundColor: AColors.getRequestStatusColor(item.sender.status?.id), - label: item.sender.status?.name, - ) + // StatusLabel( + // backgroundColor: AColors.getRequestStatusColor(item.sender.status?.id), + // label: item.sender.status?.name, + // ) ], ), //const SizedBox(height: 8,), - Row( - children: [ - Expanded( - child: Text( - item.sender.client.name, - style: Theme.of(context).textTheme.subtitle2.copyWith( - color: onItemColor, - ), - ), - ), - ], - ), - if (item.sender.department.id != null) - Text( - item.sender.department.name, - style: Theme.of(context).textTheme.bodySmall.copyWith( - color: onItemColor, - ), - ), + // Row( + // children: [ + // Expanded( + // child: Text( + // item.sender.client.name, + // style: Theme.of(context).textTheme.subtitle2.copyWith( + // color: onItemColor, + // ), + // ), + // ), + // ], + // ), + // if (item.sender.department.id != null) + // Text( + // item.sender.department.name, + // style: Theme.of(context).textTheme.bodySmall.copyWith( + // color: onItemColor, + // ), + // ), Divider( color: onItemColor, ), - Row( - children: [ - Expanded( - child: Text( - _subtitle.to, - style: Theme.of(context).textTheme.subtitle2.copyWith( - color: onItemColor, - ), - ), - ), - StatusLabel( - backgroundColor: AColors.getRequestStatusColor(item.receiver.status?.id), - label: item.receiver.status?.name, - ) - ], - ), - //const SizedBox(height: 8,), - Row( - children: [ - Expanded( - child: Text( - item.receiver.client.name, - style: Theme.of(context).textTheme.subtitle2.copyWith( - color: onItemColor, - ), - ), - ), - ], - ), - if (item.receiver.department.id != null) - Text( - item.receiver.department.name, - style: Theme.of(context).textTheme.bodySmall.copyWith( - color: onItemColor, - ), - ), + // Row( + // children: [ + // Expanded( + // child: Text( + // _subtitle.to, + // style: Theme.of(context).textTheme.subtitle2.copyWith( + // color: onItemColor, + // ), + // ), + // ), + // StatusLabel( + // backgroundColor: AColors.getRequestStatusColor(item.receiver.status?.id), + // label: item.receiver.status?.name, + // ) + // ], + // ), + // //const SizedBox(height: 8,), + // Row( + // children: [ + // Expanded( + // child: Text( + // item.receiver.client.name, + // style: Theme.of(context).textTheme.subtitle2.copyWith( + // color: onItemColor, + // ), + // ), + // ), + // ], + // ), + // if (item.receiver.department.id != null) + // Text( + // item.receiver.department.name, + // style: Theme.of(context).textTheme.bodySmall.copyWith( + // color: onItemColor, + // ), + // ), //Divider(color: onItemColor,), ], ), diff --git a/lib/views/widgets/device_trancfer/device_transfer_list.dart b/lib/views/widgets/device_trancfer/device_transfer_list.dart index a90c74aa..dd72a3c6 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_list.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_list.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/models/device/device_transfer.dart'; +import 'package:test_sa/models/asset/asset_transfer.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart'; import 'package:test_sa/views/widgets/device_trancfer/device_transfer_item.dart'; @@ -8,7 +8,7 @@ import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; class DeviceTransferList extends StatelessWidget { - final List items; + final List items; final bool nextPage; final Future Function() onLazyLoad; diff --git a/lib/views/widgets/drawer/drawer_item.dart b/lib/views/widgets/drawer/drawer_item.dart index 70e072ea..dfbbcf04 100644 --- a/lib/views/widgets/drawer/drawer_item.dart +++ b/lib/views/widgets/drawer/drawer_item.dart @@ -33,7 +33,7 @@ class DrawerItem extends StatelessWidget { textScaleFactor: AppStyle.getScaleFactor(context), ), ], - ).paddingOnly(left: 20, right: 20), + ).paddingOnly(start: 20, end: 20), ), ); } diff --git a/lib/views/widgets/equipment/auto_complete_devices_field.dart b/lib/views/widgets/equipment/auto_complete_devices_field.dart index 0d45aa6e..541378ab 100644 --- a/lib/views/widgets/equipment/auto_complete_devices_field.dart +++ b/lib/views/widgets/equipment/auto_complete_devices_field.dart @@ -4,13 +4,14 @@ import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/devices_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +import '../../../models/asset/asset.dart'; + class AutoCompleteDeviceField extends StatefulWidget { - final Device initialValue; + final Asset initialValue; final int hospitalId; final Function(int) onPick; @@ -22,13 +23,13 @@ class AutoCompleteDeviceField extends StatefulWidget { class _AutoCompleteDeviceFieldState extends State { SettingProvider _settingProvider; - DevicesProvider _devicesProvider; + AssetProvider _devicesProvider; UserProvider _userProvider; TextEditingController _controller; @override void initState() { - _controller = TextEditingController(text: widget.initialValue.serialNumber); + _controller = TextEditingController(text: widget.initialValue.assetSerialNo); super.initState(); } @@ -42,7 +43,7 @@ class _AutoCompleteDeviceFieldState extends State { Widget build(BuildContext context) { _settingProvider = Provider.of(context); _userProvider = Provider.of(context); - _devicesProvider = Provider.of(context); + _devicesProvider = Provider.of(context); //Subtitle _subtitle = AppLocalization.of(context).subtitle; return LoadingManager( isLoading: _devicesProvider.isLoading, @@ -59,7 +60,7 @@ class _AutoCompleteDeviceFieldState extends State { border: Border.all(color: AColors.black), borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), boxShadow: [AppStyle.boxShadow]), - child: TypeAheadField( + child: TypeAheadField( textFieldConfiguration: TextFieldConfiguration( style: Theme.of(context).textTheme.headline6, controller: _controller, @@ -82,12 +83,12 @@ class _AutoCompleteDeviceFieldState extends State { }, itemBuilder: (context, device) { return ListTile( - title: Text(device.serialNumber), + title: Text(device.assetSerialNo), subtitle: Text("${device.modelDefinition.modelName}/${device.modelDefinition.manufacturerName}"), ); }, onSuggestionSelected: (device) { - _controller.text = device.serialNumber; + _controller.text = device.assetSerialNo; widget.onPick(device.id); }, ), diff --git a/lib/views/widgets/equipment/auto_complete_models_field.dart b/lib/views/widgets/equipment/auto_complete_models_field.dart index 7b2c7555..29cb6e0d 100644 --- a/lib/views/widgets/equipment/auto_complete_models_field.dart +++ b/lib/views/widgets/equipment/auto_complete_models_field.dart @@ -24,7 +24,7 @@ class AutoCompleteModelField extends StatefulWidget { class _AutoCompleteModelFieldState extends State { SettingProvider _settingProvider; - DevicesProvider _devicesProvider; + AssetProvider _devicesProvider; UserProvider _userProvider; TextEditingController _controller; @@ -44,7 +44,7 @@ class _AutoCompleteModelFieldState extends State { Widget build(BuildContext context) { _settingProvider = Provider.of(context); _userProvider = Provider.of(context); - _devicesProvider = Provider.of(context); + _devicesProvider = Provider.of(context); //Subtitle _subtitle = AppLocalization.of(context).subtitle; return Container( padding: const EdgeInsets.symmetric(horizontal: 16), diff --git a/lib/views/widgets/equipment/device_button.dart b/lib/views/widgets/equipment/device_button.dart deleted file mode 100644 index 8a8b78c0..00000000 --- a/lib/views/widgets/equipment/device_button.dart +++ /dev/null @@ -1,98 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/models/device/device.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/equipment/single_device_picker.dart'; - -class DeviceButton extends StatelessWidget { - final Function(Device) onDevicePick; - final Device device; - - const DeviceButton({Key key, this.device, this.onDevicePick}) : super(key: key); - - @override - Widget build(BuildContext context) { - Subtitle _subtitle = AppLocalization.of(context).subtitle; - return ElevatedButton( - style: ElevatedButton.styleFrom( - elevation: 0, - padding: EdgeInsets.symmetric(horizontal: 16, vertical: device == null ? 12 : 8), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), - ), - foregroundColor: AColors.primaryColor, - backgroundColor: AColors.inputFieldBackgroundColor, - ), - child: Row( - children: [ - FaIcon( - FontAwesomeIcons.hardDrive, - size: 28, - color: AColors.black, - ), - device == null - ? Expanded( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 6), - child: Text( - _subtitle.pickDevice, - style: Theme.of(context).textTheme.subtitle1, - textScaleFactor: AppStyle.getScaleFactor(context), - textDirection: TextDirection.rtl, - textAlign: TextAlign.left, - ), - ), - ) - : Expanded( - child: ListTile( - contentPadding: EdgeInsets.all(0), - title: Text( - "${_subtitle.sn} : " + device.serialNumber, - style: Theme.of(context).textTheme.subtitle1, - ), - subtitle: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Divider( - color: Theme.of(context).textTheme.subtitle1.color, - ), - Text( - "${_subtitle.assetNumber} : ${device.number}", - style: Theme.of(context).textTheme.subtitle2, - ), - Divider( - color: Theme.of(context).textTheme.subtitle1.color, - ), - Text( - "${_subtitle.assetName} : ${device.modelDefinition.assetName}", - style: Theme.of(context).textTheme.subtitle2, - ), - Divider( - color: Theme.of(context).textTheme.subtitle1.color, - ), - Text( - "${_subtitle.brand} : ${device.modelDefinition.manufacturerName}", - style: Theme.of(context).textTheme.subtitle2, - ), - Divider( - color: Theme.of(context).textTheme.subtitle1.color, - ), - Text( - "${_subtitle.model} : ${device.modelDefinition.modelName}", - style: Theme.of(context).textTheme.subtitle2, - ), - ], - ), - )), - const Icon(Icons.keyboard_arrow_down, size: 28, color: AColors.grey3A), - ], - ), - onPressed: () async { - Device _device = await Navigator.of(context).pushNamed(SingleDevicePicker.id) as Device; - onDevicePick(_device); - }); - } -} diff --git a/lib/views/widgets/equipment/device_item.dart b/lib/views/widgets/equipment/device_item.dart index 19838675..08118523 100644 --- a/lib/views/widgets/equipment/device_item.dart +++ b/lib/views/widgets/equipment/device_item.dart @@ -1,13 +1,14 @@ import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; +import '../../../models/asset/asset.dart'; + class DeviceItem extends StatelessWidget { - final Device device; - final Function(Device) onPressed; + final Asset device; + final Function(Asset) onPressed; const DeviceItem({Key key, this.device, this.onPressed}) : super(key: key); @@ -38,7 +39,7 @@ class DeviceItem extends StatelessWidget { color: Theme.of(context).scaffoldBackgroundColor, ), Text( - "${_subtitle.assetNumber} : ${device.number}", + "${_subtitle.assetNumber} : ${device.assetNumber}", style: Theme.of(context).textTheme.subtitle1.copyWith(color: AColors.white), ), Divider( diff --git a/lib/views/widgets/equipment/pick_asset.dart b/lib/views/widgets/equipment/pick_asset.dart new file mode 100644 index 00000000..317c8eab --- /dev/null +++ b/lib/views/widgets/equipment/pick_asset.dart @@ -0,0 +1,112 @@ +import 'package:flutter/material.dart'; +import 'package:test_sa/extensions/context_extension.dart'; +import 'package:test_sa/extensions/int_extensions.dart'; +import 'package:test_sa/extensions/text_extensions.dart'; +import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/enums/translation_keys.dart'; +import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; +import 'package:test_sa/views/widgets/equipment/single_device_picker.dart'; + +import '../../../models/asset/asset.dart'; + +class PickAsset extends StatelessWidget { + final Function(Asset) onPickAsset; + final Asset asset; + + const PickAsset({Key key, this.asset, this.onPickAsset}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + AppTextFormField( + enable: false, + labelText: TranslationKeys.submitRequest, + initialValue: context.translate(TranslationKeys.site), + suffixIcon: "qr".toSvgAsset(height: 24, fit: BoxFit.fitHeight).paddingOnly(end: 16), + ).onPress(() async { + Asset device = await Navigator.of(context).pushNamed(SingleDevicePicker.id) as Asset; + onPickAsset(device); + }), + if (asset != null) 8.height, + if (asset != null) + Card( + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + context.translate(TranslationKeys.myAssets).heading5(context), + 8.height, + "${context.translate(TranslationKeys.myAssets)}: ${asset.assetNumber}".bodyText(context), + "${context.translate(TranslationKeys.myAssets)}: ${asset.id}".bodyText(context), + "${context.translate(TranslationKeys.myAssets)}: ${asset.assetNumber}".bodyText(context), + "${context.translate(TranslationKeys.myAssets)}: ${asset.assetNumber}".bodyText(context), + const Divider().defaultStyle(context), + "${context.translate(TranslationKeys.myAssets)}: ${asset.assetNumber}".bodyText(context), + "${context.translate(TranslationKeys.myAssets)}: ${asset.assetNumber}".bodyText(context), + ], + ).paddingAll(16), + ), + ], + ); + // return ElevatedButton( + // style: ElevatedButton.styleFrom( + // elevation: 0, + // padding: EdgeInsets.symmetric(horizontal: 16, vertical: device == null ? 12 : 8), + // shape: RoundedRectangleBorder( + // borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), + // ), + // foregroundColor: AColors.primaryColor, + // backgroundColor: AColors.inputFieldBackgroundColor, + // ), + // child: Row( + // children: [ + // Expanded( + // child: ListTile( + // contentPadding: const EdgeInsets.all(0), + // title: Text( + // "${"context"} : ${device.serialNumber}", + // style: Theme.of(context).textTheme.subtitle1, + // ), + // subtitle: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Divider( + // color: Theme.of(context).textTheme.subtitle1.color, + // ), + // Text( + // "${_subtitle.assetNumber} : ${device.number}", + // style: Theme.of(context).textTheme.subtitle2, + // ), + // Divider( + // color: Theme.of(context).textTheme.subtitle1.color, + // ), + // Text( + // "${_subtitle.assetName} : ${device.modelDefinition.assetName}", + // style: Theme.of(context).textTheme.subtitle2, + // ), + // Divider( + // color: Theme.of(context).textTheme.subtitle1.color, + // ), + // Text( + // "${_subtitle.brand} : ${device.modelDefinition.manufacturerName}", + // style: Theme.of(context).textTheme.subtitle2, + // ), + // Divider( + // color: Theme.of(context).textTheme.subtitle1.color, + // ), + // Text( + // "${_subtitle.model} : ${device.modelDefinition.modelName}", + // style: Theme.of(context).textTheme.subtitle2, + // ), + // ], + // ), + // )), + // const Icon(Icons.keyboard_arrow_down, size: 28, color: AColors.grey3A), + // ], + // ), + // onPressed: () async { + // Device _device = await Navigator.of(context).pushNamed(SingleDevicePicker.id) as Device; + // onDevicePick(_device); + // }); + } +} diff --git a/lib/views/widgets/equipment/single_device_picker.dart b/lib/views/widgets/equipment/single_device_picker.dart index 2acfae14..3d715623 100644 --- a/lib/views/widgets/equipment/single_device_picker.dart +++ b/lib/views/widgets/equipment/single_device_picker.dart @@ -4,13 +4,13 @@ import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/devices_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/widgets/equipment/device_item.dart'; import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; +import '../../../models/asset/asset.dart'; import '../app_text_form_field.dart'; import '../qr/scan_qr.dart'; @@ -23,11 +23,11 @@ class SingleDevicePicker extends StatefulWidget { } class _SingleDevicePickerState extends State { - DevicesProvider _devicesProvider; + AssetProvider _devicesProvider; UserProvider _userProvider; SettingProvider _settingProvider; - List _searchableList = []; - List _initList = []; + List _searchableList = []; + List _initList = []; bool _firstTime = true; Subtitle _subtitle; @@ -72,7 +72,7 @@ class _SingleDevicePickerState extends State { @override Widget build(BuildContext context) { - _devicesProvider = Provider.of(context); + _devicesProvider = Provider.of(context); _userProvider = Provider.of(context); _settingProvider = Provider.of(context); diff --git a/lib/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart b/lib/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart index 0691e452..8fd2119e 100644 --- a/lib/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart +++ b/lib/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart @@ -4,11 +4,12 @@ import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/devices_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; +import '../../../../models/asset/asset.dart'; + class AutoCompleteDeviceNumberField extends StatefulWidget { final Lookup initialValue; final int hospitalId; @@ -22,7 +23,7 @@ class AutoCompleteDeviceNumberField extends StatefulWidget { class _AutoCompleteDeviceNumberFieldState extends State { SettingProvider _settingProvider; - DevicesProvider _devicesProvider; + AssetProvider _devicesProvider; UserProvider _userProvider; TextEditingController _controller; @@ -42,7 +43,7 @@ class _AutoCompleteDeviceNumberFieldState extends State(context); _userProvider = Provider.of(context); - _devicesProvider = Provider.of(context); + _devicesProvider = Provider.of(context); //Subtitle _subtitle = AppLocalization.of(context).subtitle; return Container( padding: const EdgeInsets.symmetric(horizontal: 16), @@ -51,7 +52,7 @@ class _AutoCompleteDeviceNumberFieldState extends State( + child: TypeAheadField( textFieldConfiguration: TextFieldConfiguration( style: Theme.of(context).textTheme.headline6, controller: _controller, @@ -74,13 +75,13 @@ class _AutoCompleteDeviceNumberFieldState extends State with TickerProviderStateMixin { - DeviceTransferSearch _search; + AssetTransferSearch _search; final GlobalKey _formKey = GlobalKey(); bool _isLoading = false; @override void initState() { super.initState(); - _search = DeviceTransferSearch(); - _search.fromSearch(widget.initialSearchValue); + _search = AssetTransferSearch(); + // _search.fromSearch(widget.initialSearchValue); } @override @@ -84,16 +79,16 @@ class AssetTransferSearchDialogState extends State wi }, ), SizedBox(height: 8.0 * AppStyle.getScaleFactor(context)), - DeviceButton( - device: _search.device, - onDevicePick: (device) { - _search.device = device; + PickAsset( + asset: _search.asset, + onPickAsset: (device) { + _search.asset = device; setState(() {}); }, ), SizedBox(height: 8.0 * AppStyle.getScaleFactor(context)), ATextFormField( - initialValue: _search.title, + initialValue: "_search.title", hintText: subtitle.title, style: Theme.of(context).textTheme.titleLarge, textInputAction: TextInputAction.search, @@ -105,64 +100,64 @@ class AssetTransferSearchDialogState extends State wi Navigator.of(context).pop(_search); }, onSaved: (value) { - _search.title = value; + // _search.title = value; }, ), SizedBox(height: 8.0 * AppStyle.getScaleFactor(context)), - HospitalAutoCompleteField( - initialValue: _search?.hospital?.name, - onSearch: (selected) async { - _search.building = null; - _search.floor = null; - _search.department = null; - _search.buildingsList = null; - _search.floorsList = null; - _search.departmentsList = null; - _isLoading = true; - setState(() {}); - await HospitalsProvider().getHospitalsListByVal(searchVal: selected?.name ?? "").then((value) { - _search.hospital = value?.firstWhere((element) => element.name == selected.name, orElse: () => null); - _search.buildingsList = _search.hospital?.buildings; - }); - _isLoading = false; - setState(() {}); - }, - ), + // HospitalAutoCompleteField( + // initialValue: _search?.hospital?.name, + // onSearch: (selected) async { + // _search.building = null; + // _search.floor = null; + // _search.department = null; + // _search.buildingsList = null; + // _search.floorsList = null; + // _search.departmentsList = null; + // _isLoading = true; + // setState(() {}); + // await HospitalsProvider().getHospitalsListByVal(searchVal: selected?.name ?? "").then((value) { + // _search.hospital = value?.firstWhere((element) => element.name == selected.name, orElse: () => null); + // _search.buildingsList = _search.hospital?.buildings; + // }); + // _isLoading = false; + // setState(() {}); + // }, + // ), const SizedBox(height: 8), - BuildingTypeMenu( - initialValue: _search?.building, - building: _search.buildingsList, - enabled: !_isLoading, - onSelect: (status) { - _search.building = status; - _search.floorsList = status?.floors; - setState(() {}); - }, - ), + // BuildingTypeMenu( + // initialValue: _search?.building, + // building: _search.buildingsList, + // enabled: !_isLoading, + // onSelect: (status) { + // _search.building = status; + // _search.floorsList = status?.floors; + // setState(() {}); + // }, + // ), const SizedBox(height: 8), - FloorTypeMenu( - initialValue: _search?.floor, - floors: _search.floorsList, - enabled: !_isLoading, - onSelect: (status) { - _search.floor = status; - _search.departmentsList = _search.floor?.departments; - setState(() {}); - }, - ), + // FloorTypeMenu( + // initialValue: _search?.floor, + // floors: _search.floorsList, + // enabled: !_isLoading, + // onSelect: (status) { + // _search.floor = status; + // _search.departmentsList = _search.floor?.departments; + // setState(() {}); + // }, + // ), const SizedBox(height: 8), - DepartmentTypeMenu( - initialValue: _search?.department, - departments: _search.departmentsList, - enabled: !_isLoading, - onSelect: (status) { - _search.department = status; - setState(() {}); - }, - ), + // DepartmentTypeMenu( + // initialValue: _search?.department, + // departments: _search.departmentsList, + // enabled: !_isLoading, + // onSelect: (status) { + // _search.department = status; + // setState(() {}); + // }, + // ), SizedBox(height: 8.0 * AppStyle.getScaleFactor(context)), ATextFormField( - initialValue: _search.room, + initialValue: "_search.room", hintText: subtitle.room, style: Theme.of(context).textTheme.titleLarge, textInputAction: TextInputAction.search, @@ -174,24 +169,24 @@ class AssetTransferSearchDialogState extends State wi Navigator.of(context).pop(_search); }, onSaved: (value) { - _search.room = value; + // _search.room = value; }, ), SizedBox(height: 16.0 * AppStyle.getScaleFactor(context)), - Visibility( - visible: (_search.toMap()..remove("mostRecent"))?.isNotEmpty ?? false, - child: Padding( - padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16), - child: AButton( - padding: EdgeInsets.zero, - text: subtitle.clearSearch, - onPressed: () { - _search = DeviceTransferSearch(); - Navigator.of(context).pop(_search); - }, - ), - ), - ), + // Visibility( + // visible: (_search.toMap()..remove("mostRecent"))?.isNotEmpty ?? false, + // child: Padding( + // padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16), + // child: AButton( + // padding: EdgeInsets.zero, + // text: subtitle.clearSearch, + // onPressed: () { + // _search = DeviceTransferSearch(); + // Navigator.of(context).pop(_search); + // }, + // ), + // ), + // ), ], ), ),