You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
5.3 KiB
Dart
133 lines
5.3 KiB
Dart
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"],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|