Change Asset & Asset Transfer models

main_design2.0
zaid_daoud 2 years ago
parent c8e3f2df48
commit c7d6b68fd2

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 2.8125V4.6875H10.125V2.8125H12ZM10.125 13.8281V16.5H12V13.8281H10.125ZM15.75 24V22.125H13.875V20.25H12V24H15.75ZM19.5 10.0781H13.875V11.9531H19.5V10.0781ZM19.5 13.8281H22.125V11.9531H19.5V13.8281ZM19.5 16.5V18.375H24V13.8281H22.125V16.5H19.5ZM13.875 0H12V2.8125H13.875V0ZM12 8.4375H13.875V4.6875H12V6.5625H10.125V11.9531H12V8.4375ZM0 10.0781V13.8281H1.875V11.9531H4.6875V10.0781H0ZM13.875 13.8281V11.9531H12V13.8281H13.875ZM17.625 15.7031H19.5V13.8281H17.625V15.7031ZM22.125 11.9531H24V10.0781H22.125V11.9531ZM15.75 13.8281H13.875V16.5H12V18.375H15.75V13.8281ZM10.125 20.25H12V18.375H10.125V20.25ZM15.75 18.375V20.25H19.5V18.375H15.75ZM21.375 22.125V20.25H19.5V22.125H21.375ZM24 24V22.125H21.375V24H24ZM17.625 24H19.5V22.125H17.625V24ZM8.4375 11.9531V10.0781H6.5625V11.9531H4.6875V13.8281H10.125V11.9531H8.4375ZM8.4375 8.4375H0V0H8.4375V8.4375ZM6.5625 1.875H1.875V6.5625H6.5625V1.875ZM5.15625 3.28125H3.28125V5.15625H5.15625V3.28125ZM24 0V8.4375H15.5625V0H24ZM22.125 1.875H17.4375V6.5625H22.125V1.875ZM20.7188 3.28125H18.8438V5.15625H20.7188V3.28125ZM0 15.5625H8.4375V24H0V15.5625ZM1.875 22.125H6.5625V17.4375H1.875V22.125ZM3.28125 20.7188H5.15625V18.8438H3.28125V20.7188Z" fill="#163A51"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -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<DeviceTransfer> items;
List<AssetTransfer> items;
// when requests in-process _loading = true
// done _loading = true
@ -73,7 +71,7 @@ class DeviceTransferProvider extends ChangeNotifier {
Map<String, dynamic> 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<DeviceTransfer> itemsPage = listJson.map((request) => DeviceTransfer.fromJson(request)).toList();
List<AssetTransfer> itemsPage = listJson.map((request) => AssetTransfer.fromJson(request)).toList();
items ??= [];
items.addAll(itemsPage.toSet().toList());
notifyListeners();
@ -102,7 +100,7 @@ class DeviceTransferProvider extends ChangeNotifier {
}
}
Future<DeviceTransfer> getRequestById({int assetTransferId}) async {
Future<AssetTransfer> 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<int> createRequest({
@required String host,
@required User user,
@required DeviceTransfer model,
@required AssetTransfer model,
}) async {
Map<String, dynamic> 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<String, dynamic> 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,

@ -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<Device> _devices = [];
List<Asset> _devices = [];
List<Device> get devices => _devices;
List<Asset> 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) => Device.fromJson(device, startKeyWithDest: false)).toList();
var dList = equipmentListJson.map<Asset>((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<List<Device>> getDevicesList({
Future<List<Asset>> getDevicesList({
@required String host,
@required User user,
@required int hospitalId,
@ -121,12 +122,12 @@ class DevicesProvider extends ChangeNotifier {
// "${number?.isEmpty == false ? "&assetNo=$number" : ""}"
// ),
// );
List<Device> page = [];
List<Asset> 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) => Device.fromJson(device, startKeyWithDest: false)).toList());
page = equipmentListJson.map((asset) => Asset.fromJson(asset)).toList();
_devices.addAll(equipmentListJson.map<Asset>((asset) => Asset.fromJson(asset)).toList());
notifyListeners();
}
return page;

@ -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<String, dynamic> 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,
})

@ -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": [
@ -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);

@ -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);
}

@ -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(),

@ -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<TechnicalGuidanceBook> 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<TechnicalGuidanceBook> 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<String, dynamic> toJson() {
final map = <String, dynamic>{};
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<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['assetSerialNo'] = assetSerialNo;
map['assetNumber'] = assetNumber;
map['tagCode'] = tagCode;
map['systemId'] = systemId;
map['assetName'] = assetName;
return map;
}
}

@ -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<AssetTransferAttachment> senderAttachments;
String receiverAssignedEmployeeId;
num receiverMachineStatusId;
String receiverComment;
String receiverStartDate;
String receiverEndDate;
String receiverWorkingHours;
String receiverTravelingHours;
String receiverEngSignature;
List<AssetTransferAttachment> 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<AssetTransferAttachment> senderAttachments,
String receiverAssignedEmployeeId,
num receiverMachineStatusId,
String receiverComment,
String receiverStartDate,
String receiverEndDate,
String receiverWorkingHours,
String receiverTravelingHours,
String receiverEngSignature,
List<AssetTransferAttachment> 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<String, dynamic> toJson() {
final map = <String, dynamic>{};
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;
}
}

@ -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<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['attachmentName'] = attachmentName;
return map;
}
}

@ -0,0 +1,43 @@
import 'asset.dart';
import 'asset_transfer.dart';
class AssetTransferSearch extends AssetTransfer {
Asset asset;
int pageNumber = 10, pageSize;
bool mostRecent;
Map<String, dynamic> toSearch() {
final map = <String, dynamic>{};
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;
}
}

@ -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;

@ -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;

@ -1,3 +1,4 @@
@Deprecated("Use the class inside model_definition.dart")
class ModelDefinition {
int id;
String assetName;

@ -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> modelDefRelatedDefects;
List<Supplier> 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> modelDefRelatedDefects,
List<Supplier> 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<String, dynamic> toJson() {
final map = <String, dynamic>{};
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<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['defectName'] = defectName;
map['workPerformed'] = workPerformed;
map['estimatedTime'] = estimatedTime;
return map;
}
}

@ -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<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
map['suppliername'] = suppliername;
return map;
}
}

@ -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<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['id'] = id;
if (guidanceBook != null) {
map['guidanceBook'] = guidanceBook.toJson();
}
return map;
}
}

@ -63,6 +63,7 @@ class CallRequestForWorkOrder {
}
}
@Deprecated("")
class Asset {
int id;
String assetSerialNo;

@ -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<String, dynamic> 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<String, dynamic> 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"},
};
}
}

@ -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<String, dynamic> parsedJson) {
List<String> senderFiles = [];
if (parsedJson["senderAttachments"] != null && parsedJson["senderAttachments"] is List) {
List list = parsedJson["senderAttachments"];
senderFiles = list.map((e) => (URLs.getFileUrl(e["attachmentName"]))).toList();
}
List<String> 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"],
),
),
);
}
}

@ -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};
}

@ -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'];

@ -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 = <String, dynamic>{};
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;

@ -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<Part> parts;
List<String> 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'],

@ -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<String, dynamic> toJson() {
final map = <String, dynamic>{};
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();
}

@ -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']),

@ -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) {

@ -58,8 +58,8 @@ class SubWorkOrderDetails {
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
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();

@ -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<AppFloatingActionButton> {
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),
),

@ -98,13 +98,14 @@ class _AppTextFormFieldState extends State<AppTextFormField> {
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
suffixIcon: widget.suffixIcon ??
(widget.prefixIconData == null
? null
: Icon(
widget.prefixIconData,
size: widget.prefixIconSize == null ? 20.toScreenWidth : (widget.prefixIconSize - 10).toScreenWidth,
color: AppColor.neutral70,
),
)),
),
),
);

@ -90,7 +90,7 @@ class _LoginPageState extends State<LoginPage> {
).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),
),
);
}

@ -154,14 +154,6 @@ class _NewGasRefillRequestPageState extends State<NewGasRefillRequestPage> {
_gasModel.department = value;
},
),
// 8.height,
// SingleItemDropDownMenu<Department, DepartmentProvider>(
// context: context,
// title: TranslationKeys.department,
// onSelect: (value) {
// _formModel.department = value;
// },
// ),
8.height,
AppFilledButton(
label: TranslationKeys.add,
@ -225,7 +217,7 @@ class _NewGasRefillRequestPageState extends State<NewGasRefillRequestPage> {
).expanded,
AppFilledButton(label: TranslationKeys.submitRequest, maxWidth: true, onPressed: _submit),
],
).paddingOnly(left: 16, right: 16, bottom: 24),
).paddingOnly(start: 16, end: 16, bottom: 24),
);
}

@ -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),
);
}
}

@ -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),
);
}
}

@ -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<DeviceTransferDetails> {
DeviceTransfer _model;
AssetTransfer _model;
bool _isSender = false;
bool _isReceiver = false;
UserProvider _userProvider;
@ -43,7 +41,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
}
Future<void> _getDeviceTransfer() async {
_model = await Provider.of<DeviceTransferProvider>(context).getRequestById(assetTransferId: widget.model.id);
_model = await Provider.of<AssetTransferProvider>(context).getRequestById(assetTransferId: widget.model.id);
}
@override
@ -59,8 +57,8 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
} else {
_subtitle = AppLocalization.of(context).subtitle;
_userProvider = Provider.of<UserProvider>(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<DeviceTransferDetails> {
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<DeviceTransferDetails> {
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<DeviceTransferDetails> {
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,
// ),
],
),
),

@ -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<RequestDeviceTransfer> {
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<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@ -57,10 +54,10 @@ class _RequestDeviceTransferState extends State<RequestDeviceTransfer> {
}
_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<RequestDeviceTransfer> {
_subtitle = AppLocalization.of(context).subtitle;
_userProvider = Provider.of<UserProvider>(context);
_settingProvider = Provider.of<SettingProvider>(context);
_deviceTransferProvider = Provider.of<DeviceTransferProvider>(context, listen: false);
_deviceTransferProvider = Provider.of<AssetTransferProvider>(context, listen: false);
return Scaffold(
key: _scaffoldKey,
body: Form(
@ -139,29 +136,29 @@ class _RequestDeviceTransferState extends State<RequestDeviceTransfer> {
// ),
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<RequestDeviceTransfer> {
_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<RequestDeviceTransfer> {
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(() {});
},
),

@ -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<TrackDeviceTransferPage> with TickerProviderStateMixin {
DeviceTransferProvider _deviceTransferProvider;
AssetTransferProvider _deviceTransferProvider;
UserProvider _userProvider;
SettingProvider _settingProvider;
@override
Widget build(BuildContext context) {
_deviceTransferProvider = Provider.of<DeviceTransferProvider>(context);
_deviceTransferProvider = Provider.of<AssetTransferProvider>(context);
_userProvider = Provider.of<UserProvider>(context);
_settingProvider = Provider.of<SettingProvider>(context);
@ -71,22 +69,22 @@ class _TrackDeviceTransferPageState extends State<TrackDeviceTransferPage> 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),

@ -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<UpdateDeviceTransfer> {
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<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
_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<UpdateDeviceTransfer> {
_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<UpdateDeviceTransfer> {
@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<UpdateDeviceTransfer> {
_subtitle = AppLocalization.of(context).subtitle;
_userProvider = Provider.of<UserProvider>(context);
_settingProvider = Provider.of<SettingProvider>(context);
_deviceTransferProvider = Provider.of<DeviceTransferProvider>(context, listen: false);
_deviceTransferProvider = Provider.of<AssetTransferProvider>(context, listen: false);
return Scaffold(
key: _scaffoldKey,
body: Form(
@ -131,15 +122,15 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
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<UpdateDeviceTransfer> {
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<UpdateDeviceTransfer> {
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<UpdateDeviceTransfer> {
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<UpdateDeviceTransfer> {
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(

@ -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<LandPage> {
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<LandPage> {
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<LandPage> {
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<LandPage> {
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),
],
),
),

@ -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<CreateRequestPage> {
final List<File> _deviceImages = [];
bool _isLoading = false;
bool _showDatePicker = false;
Device _device;
Asset _device;
Subtitle _subtitle;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@ -129,6 +127,7 @@ class CreateRequestPageState extends State<CreateRequestPage> {
return Scaffold(
key: _scaffoldKey,
appBar: const DefaultAppBar(title: TranslationKeys.newServiceRequest),
body: SafeArea(
child: LoadingManager(
isLoading: _isLoading,
@ -137,80 +136,15 @@ class CreateRequestPageState extends State<CreateRequestPage> {
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"),
),
),
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),
),
),
),
Column(
SingleChildScrollView(
child: 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) {
PickAsset(
asset: _device,
onPickAsset: (device) {
_device = device;
setState(() {});
},
@ -376,11 +310,9 @@ class CreateRequestPageState extends State<CreateRequestPage> {
},
),
],
).paddingOnly(left: 20, right: 20),
Padding(
padding: const EdgeInsets.all(20.0),
child: AButton(
text: widget.serviceRequest == null ? _subtitle.submit : _subtitle.update,
),
).expanded,
AppFilledButton(
onPressed: () async {
if (!_formKey.currentState.validate()) return;
if (_device?.id == null) {
@ -439,14 +371,10 @@ class CreateRequestPageState extends State<CreateRequestPage> {
));
}
},
),
),
label: TranslationKeys.submitRequest),
],
),
const ABackButton(),
],
),
),
).paddingOnly(start: 16, end: 16, bottom: 24, top: 16),
),
),
);

@ -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 ?

@ -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 {

@ -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,),
],
),

@ -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<DeviceTransfer> items;
final List<AssetTransfer> items;
final bool nextPage;
final Future<void> Function() onLazyLoad;

@ -33,7 +33,7 @@ class DrawerItem extends StatelessWidget {
textScaleFactor: AppStyle.getScaleFactor(context),
),
],
).paddingOnly(left: 20, right: 20),
).paddingOnly(start: 20, end: 20),
),
);
}

@ -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<AutoCompleteDeviceField> {
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<AutoCompleteDeviceField> {
Widget build(BuildContext context) {
_settingProvider = Provider.of<SettingProvider>(context);
_userProvider = Provider.of<UserProvider>(context);
_devicesProvider = Provider.of<DevicesProvider>(context);
_devicesProvider = Provider.of<AssetProvider>(context);
//Subtitle _subtitle = AppLocalization.of(context).subtitle;
return LoadingManager(
isLoading: _devicesProvider.isLoading,
@ -59,7 +60,7 @@ class _AutoCompleteDeviceFieldState extends State<AutoCompleteDeviceField> {
border: Border.all(color: AColors.black),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
boxShadow: [AppStyle.boxShadow]),
child: TypeAheadField<Device>(
child: TypeAheadField<Asset>(
textFieldConfiguration: TextFieldConfiguration(
style: Theme.of(context).textTheme.headline6,
controller: _controller,
@ -82,12 +83,12 @@ class _AutoCompleteDeviceFieldState extends State<AutoCompleteDeviceField> {
},
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);
},
),

@ -24,7 +24,7 @@ class AutoCompleteModelField extends StatefulWidget {
class _AutoCompleteModelFieldState extends State<AutoCompleteModelField> {
SettingProvider _settingProvider;
DevicesProvider _devicesProvider;
AssetProvider _devicesProvider;
UserProvider _userProvider;
TextEditingController _controller;
@ -44,7 +44,7 @@ class _AutoCompleteModelFieldState extends State<AutoCompleteModelField> {
Widget build(BuildContext context) {
_settingProvider = Provider.of<SettingProvider>(context);
_userProvider = Provider.of<UserProvider>(context);
_devicesProvider = Provider.of<DevicesProvider>(context);
_devicesProvider = Provider.of<AssetProvider>(context);
//Subtitle _subtitle = AppLocalization.of(context).subtitle;
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16),

@ -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);
});
}
}

@ -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(

@ -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);
// });
}
}

@ -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<SingleDevicePicker> {
DevicesProvider _devicesProvider;
AssetProvider _devicesProvider;
UserProvider _userProvider;
SettingProvider _settingProvider;
List<Device> _searchableList = [];
List<Device> _initList = [];
List<Asset> _searchableList = [];
List<Asset> _initList = [];
bool _firstTime = true;
Subtitle _subtitle;
@ -72,7 +72,7 @@ class _SingleDevicePickerState extends State<SingleDevicePicker> {
@override
Widget build(BuildContext context) {
_devicesProvider = Provider.of<DevicesProvider>(context);
_devicesProvider = Provider.of<AssetProvider>(context);
_userProvider = Provider.of<UserProvider>(context);
_settingProvider = Provider.of<SettingProvider>(context);

@ -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<AutoCompleteDeviceNumberField> {
SettingProvider _settingProvider;
DevicesProvider _devicesProvider;
AssetProvider _devicesProvider;
UserProvider _userProvider;
TextEditingController _controller;
@ -42,7 +43,7 @@ class _AutoCompleteDeviceNumberFieldState extends State<AutoCompleteDeviceNumber
Widget build(BuildContext context) {
_settingProvider = Provider.of<SettingProvider>(context);
_userProvider = Provider.of<UserProvider>(context);
_devicesProvider = Provider.of<DevicesProvider>(context);
_devicesProvider = Provider.of<AssetProvider>(context);
//Subtitle _subtitle = AppLocalization.of(context).subtitle;
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16),
@ -51,7 +52,7 @@ class _AutoCompleteDeviceNumberFieldState extends State<AutoCompleteDeviceNumber
border: Border.all(color: AColors.black),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
boxShadow: const [AppStyle.boxShadow]),
child: TypeAheadField<Device>(
child: TypeAheadField<Asset>(
textFieldConfiguration: TextFieldConfiguration(
style: Theme.of(context).textTheme.headline6,
controller: _controller,
@ -74,13 +75,13 @@ class _AutoCompleteDeviceNumberFieldState extends State<AutoCompleteDeviceNumber
},
itemBuilder: (context, device) {
return ListTile(
title: Text(device.number),
title: Text(device.assetNumber),
subtitle: Text("${device.modelDefinition.modelName}/${device.modelDefinition.manufacturerName}"),
);
},
onSuggestionSelected: (device) {
_controller.text = device.number;
widget.onPick(Lookup(id: device.id, name: device.number));
_controller.text = device.assetNumber;
widget.onPick(Lookup(id: device.id, name: device.assetNumber));
},
),
);

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
@ -11,14 +10,10 @@ import 'package:test_sa/extensions/string_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/models/enums/user_types.dart';
import 'package:test_sa/models/service_request/service_request.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/pages/user/requests/report/create_service_report.dart';
import 'package:test_sa/views/widgets/loaders/image_loader.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
class ServiceRequestItem extends StatelessWidget {
@ -72,7 +67,7 @@ class ServiceRequestItem extends StatelessWidget {
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'${_subtitle.assetNumber}: ${request.device.number}',
'${_subtitle.assetNumber}: ${request.device.assetNumber}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(

@ -1,24 +1,19 @@
import 'package:flutter/material.dart';
import 'package:test_sa/controllers/localization/localization.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/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/buttons/app_small_button.dart';
import 'package:test_sa/views/widgets/equipment/device_button.dart';
import 'package:test_sa/views/widgets/equipment/pick_asset.dart';
import '../../../controllers/providers/api/hospitals_provider.dart';
import '../../../models/asset/asset_transfer_search.dart';
import '../app_text_form_field.dart';
import '../gas_refill/building_type_menu.dart';
import '../gas_refill/department_type_menu.dart';
import '../gas_refill/floor_type_menu.dart';
import '../hospitals/hospital_auto_complete_field.dart';
import '../switch_button.dart';
class AssetTransferSearchDialog extends StatefulWidget {
final DeviceTransferSearch initialSearchValue;
final AssetTransfer initialSearchValue;
final bool expandedSearch;
final Function(DeviceTransferSearch) onSearch;
final Function(AssetTransfer) onSearch;
const AssetTransferSearchDialog({Key key, this.initialSearchValue, this.expandedSearch, this.onSearch}) : super(key: key);
@override
@ -26,15 +21,15 @@ class AssetTransferSearchDialog extends StatefulWidget {
}
class AssetTransferSearchDialogState extends State<AssetTransferSearchDialog> with TickerProviderStateMixin {
DeviceTransferSearch _search;
AssetTransferSearch _search;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
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<AssetTransferSearchDialog> 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<AssetTransferSearchDialog> 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<AssetTransferSearchDialog> 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);
// },
// ),
// ),
// ),
],
),
),

Loading…
Cancel
Save