import 'package:test_sa/models/department.dart'; import 'package:test_sa/models/hospital.dart'; import 'package:test_sa/models/lookup.dart'; import '../timer_model.dart'; class DeviceTransferInfo { String userId; String comment; Hospital client; Department department; Buildings building; Floors floor; String room; String workingHours; // DateTime startDate; // DateTime endDate; String travelingHours; String userName; String signature; String assignedEmployeeName; Lookup status; TimerModel timer; DeviceTransferInfo({ this.userId, this.comment, this.department, this.client, this.userName, this.travelingHours, // this.startDate, // this.endDate, this.workingHours, this.signature, this.status, this.assignedEmployeeName, this.timer, this.building, this.room, this.floor, }); Map toJson(bool isSender) { Map body = {}; final baseKey = isSender ? "sender_" : "receiver_"; if (comment != null && comment.isNotEmpty) body["${baseKey}comment"] = comment; if (workingHours != null && workingHours.isNotEmpty) body["${baseKey}working_hours"] = workingHours; // if (startDate != null) body["${baseKey}start_date"] = startDate?.toIso8601String(); // if (endDate != null) body["${baseKey}end_date"] = endDate?.toIso8601String(); if (timer?.startAt != null) body["${baseKey}start_date"] = timer?.startAt?.toIso8601String(); if (timer?.endAt != null) body["${baseKey}end_date"] = timer?.endAt?.toIso8601String(); if (travelingHours != null && travelingHours.isNotEmpty) body["${baseKey}travel_hours"] = travelingHours; if (status != null) body["${baseKey}status"] = status.id.toString(); if (signature != null && signature.isNotEmpty) body["${baseKey}image"] = signature; return body; } bool validate() { if (client == null) return false; if (department == null) return false; return true; } fromDetails(DeviceTransferInfo old, {bool withSignature = true}) { userId = old.userId; userName = old.userName; client = Hospital.fromHospital(old.client); department = Department.fromDepartment(old.department); building = Buildings( id: old.building?.id, name: old.building?.name, value: old.building?.value, floors: old.building?.floors, ); floor = Floors( id: old.floor?.id, name: old.floor?.name, value: old.floor?.value, departments: old.floor?.departments, ); room = old.room; workingHours = old.workingHours; // startDate = old.startDate; // endDate = old.endDate; timer = old.timer; travelingHours = old.travelingHours; comment = old.comment; if (withSignature) signature = old.signature; status = old.status; } factory DeviceTransferInfo.fromJson(Map parsedJson, String key) { return DeviceTransferInfo( workingHours: parsedJson["${key}working_hours"], // startDate: parsedJson["${key}start_date"], // endDate: parsedJson["${key}end_date"], timer: TimerModel( startAt: DateTime.tryParse(parsedJson["${key}start_date"] ?? ""), endAt: DateTime.tryParse(parsedJson["${key}end_date"] ?? ""), durationInSecond: ((parsedJson["${key}working_hours"] ?? 0) * 60 * 60).toInt(), ), travelingHours: parsedJson["${key}travel_hours"], userName: parsedJson["${key}name"], signature: parsedJson["${key}image"], userId: parsedJson["${key}id"], comment: parsedJson["${key}comment"], assignedEmployeeName: parsedJson["${key}AssignedEmployeeName"], client: Hospital(id: parsedJson["${key}SiteId"], name: parsedJson["${key}SiteName"]), department: Department( id: parsedJson["${key}DepartmentId"], name: parsedJson["${key}DepartmentName"], ), building: Buildings( id: parsedJson["${key}BuildingId"], name: parsedJson["${key}BuildingName"], ), floor: Floors( id: parsedJson["${key}FloorId"], name: parsedJson["${key}FloorName"], ), room: parsedJson["${key}Room"], status: Lookup( id: parsedJson["${key}status"], name: parsedJson["${key}status"], ), ); } }