import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/service_request/service_report.dart'; import 'package:test_sa/models/service_request/spare_parts.dart'; import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart'; import 'package:test_sa/models/service_request/supplier_details.dart'; import 'package:test_sa/models/service_request/wo_call_request.dart'; import 'package:test_sa/models/service_request/wo_parent.dart'; import 'package:test_sa/models/timer_model.dart'; import '../../attachment.dart'; import '../fault_description.dart'; import '../new_models/assigned_employee.dart'; import '../new_models/assistant_employee.dart'; import 'contact_person_work_order.dart'; class SearchWorkOrder { SearchWorkOrder({ this.id, this.parentWOId, this.workOrderNo, this.workOrderYear, this.workOrderSequennce, this.callRequest, this.assetType, this.assignedEmployee, this.visitDate, this.assistantEmployees, this.supplier, this.vendorTicketNumber, this.contactPersonWorkOrders, this.calllastSituation, this.currentSituation, this.repairLocation, this.reason, // this.startofWorkTime, // this.endofWorkTime, this.workingHours, this.travelingHours, this.travelingExpenses, this.faultDescription, this.sparePartsWorkOrders, this.reviewComment, this.comment, this.attachmentsWorkOrder, this.equipmentStatus, this.suppEngineerWorkOrders, this.engSignature, this.nurseSignature, this.woParentDto, this.timer, this.mrNumber, }); SearchWorkOrder.fromJson(dynamic json) { id = json['id']; parentWOId = json['parentWOId']; workOrderNo = json['workOrderNo']; workOrderYear = json['workOrderYear']; workOrderSequennce = json['workOrderSequennce']; callRequest = json['callRequest'] != null ? CallRequest.fromJson(json['callRequest']) : null; assetType = json['assetType'] != null ? Lookup.fromJson(json['assetType']) : null; assignedEmployee = json['assignedEmployee'] != null ? AssignedEmployee.fromJson(json['assignedEmployee']) : null; visitDate = json['visitDate']; mrNumber = json['mrNumber']; if (json['assistantEmployees'] != null) { assistantEmployees = []; json['assistantEmployees'].forEach((v) { assistantEmployees.add(AssistantEmployees.fromJson(v)); }); } supplier = json['supplier'] != null ? SupplierDetails.fromJson(json['supplier']) : null; vendorTicketNumber = json['vendorTicketNumber']; if (json['contactPersonWorkOrders'] != null) { contactPersonWorkOrders = []; json['contactPersonWorkOrders'].forEach((v) { contactPersonWorkOrders.add(ContactPersonWorkOrder.fromJson(v)); }); } calllastSituation = json['calllastSituation'] != null ? Lookup.fromJson(json['calllastSituation']) : null; currentSituation = json['currentSituation'] != null ? Lookup.fromJson(json['currentSituation']) : null; repairLocation = json['repairLocation'] != null ? Lookup.fromJson(json['repairLocation']) : null; reason = json['reason'] != null ? Lookup.fromJson(json['reason']) : null; // startofWorkTime = json['startofWorkTime']; // endofWorkTime = json['endofWorkTime']; if (json['startofWorkTime'] != null || json['endofWorkTime'] != null) { timer = TimerModel(); } if (json['startofWorkTime'] != null) timer.startAt = DateTime.tryParse(json['startofWorkTime']); if (json['endofWorkTime'] != null) timer.endAt = DateTime.tryParse(json['endofWorkTime']); workingHours = json['workingHours']; travelingHours = json['travelingHours']; travelingExpenses = json['travelingExpenses']; faultDescription = json['faultDescription'] != null ? FaultDescription.fromJson(json['faultDescription']) : null; if (json['sparePartsWorkOrders'] != null) { sparePartsWorkOrders = []; json['sparePartsWorkOrders'].forEach((v) { sparePartsWorkOrders.add(SparePartsWorkOrders.fromJson(v)); }); } reviewComment = json['reviewComment']; comment = json['comment']; if (json['attachmentsWorkOrder'] != null) { attachmentsWorkOrder = []; json['attachmentsWorkOrder'].forEach((v) { attachmentsWorkOrder.add(Attachment.fromJson(v)); }); } equipmentStatus = json['equipmentStatus'] != null ? Lookup.fromJson(json['equipmentStatus']) : null; if (json['suppEngineerWorkOrders'] != null) { suppEngineerWorkOrders = []; json['suppEngineerWorkOrders'].forEach((v) { suppEngineerWorkOrders.add(SuppEngineerWorkOrders.fromJson(v)); }); } engSignature = json['engSignature']; nurseSignature = json['nurseSignature']; woParentDto = json['woParentDto'] != null ? WoParent.fromJson(json['woParentDto']) : null; } void copyFrom(SearchWorkOrder wo) { parentWOId = wo.parentWOId ?? parentWOId; workOrderNo = wo.workOrderNo ?? workOrderNo; workOrderYear = wo.workOrderYear ?? workOrderYear; workOrderSequennce = wo.workOrderSequennce ?? workOrderSequennce; callRequest = wo.callRequest ?? callRequest; 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) ?.map((e) => AssistantEmployees.fromJson({ "id": e?.id, "user": {"name": e?.user?.name, "id": (e?.user?.id) ?? "0"} })) ?.toList() ?? []; if (wo.supplier != null) supplier = SupplierDetails.fromJson((wo.supplier)?.toJson() ?? {}); vendorTicketNumber = wo.vendorTicketNumber ?? vendorTicketNumber; contactPersonWorkOrders = (wo.contactPersonWorkOrders ?? contactPersonWorkOrders)?.map((e) => ContactPersonWorkOrder.fromJson(e?.toJson() ?? {}))?.toList() ?? []; 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; workingHours = wo.workingHours ?? workingHours; travelingHours = wo.travelingHours ?? travelingHours; travelingExpenses = wo.travelingExpenses ?? travelingExpenses; faultDescription = FaultDescription.fromJson((wo.faultDescription ?? faultDescription)?.toJson() ?? {}); sparePartsWorkOrders = (wo.sparePartsWorkOrders ?? sparePartsWorkOrders)?.map((e) => SparePartsWorkOrders.fromJson(e?.toJson() ?? {}))?.toList() ?? []; reviewComment = wo.reviewComment ?? reviewComment; comment = wo.comment ?? comment; attachmentsWorkOrder = (wo.attachmentsWorkOrder ?? attachmentsWorkOrder)?.map((e) => Attachment.fromJson(e?.toJson() ?? {}))?.toList() ?? []; 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; woParentDto = wo.woParentDto ?? woParentDto; mrNumber = wo.mrNumber ?? mrNumber; } num id; num parentWOId; String workOrderNo; num workOrderYear; num workOrderSequennce; CallRequest callRequest; Lookup assetType; AssignedEmployee assignedEmployee; String visitDate; List assistantEmployees; SupplierDetails supplier; String vendorTicketNumber; List contactPersonWorkOrders; Lookup calllastSituation; Lookup currentSituation; Lookup repairLocation; Lookup reason; // String startofWorkTime; // String endofWorkTime; num workingHours; num travelingHours; num travelingExpenses; FaultDescription faultDescription; List sparePartsWorkOrders; String reviewComment; String comment; List attachmentsWorkOrder; Lookup equipmentStatus; List suppEngineerWorkOrders; String engSignature; String nurseSignature; WoParent woParentDto; TimerModel timer; String mrNumber; SearchWorkOrder copyWith({ num id, num parentWOId, String workOrderNo, num workOrderYear, num workOrderSequennce, CallRequest callRequest, Lookup assetType, AssignedEmployee assignedEmployee, String visitDate, List assistantEmployees, SupplierDetails supplier, String vendorTicketNumber, List contactPersonWorkOrders, Lookup calllastSituation, Lookup currentSituation, Lookup repairLocation, Lookup reason, // String startofWorkTime, // String endofWorkTime, num workingHours, num travelingHours, num travelingExpenses, FaultDescription faultDescription, List sparePartsWorkOrders, String reviewComment, String comment, List attachmentsWorkOrder, Lookup equipmentStatus, List suppEngineerWorkOrders, String engSignature, String nurseSignature, WoParent woParentDto, TimerModel timer, String mrNumber, }) => SearchWorkOrder( id: id ?? this.id, parentWOId: parentWOId ?? this.parentWOId, workOrderNo: workOrderNo ?? this.workOrderNo, workOrderYear: workOrderYear ?? this.workOrderYear, workOrderSequennce: workOrderSequennce ?? this.workOrderSequennce, callRequest: callRequest ?? this.callRequest, assetType: assetType ?? this.assetType, assignedEmployee: assignedEmployee ?? this.assignedEmployee, visitDate: visitDate ?? this.visitDate, assistantEmployees: assistantEmployees ?? this.assistantEmployees, supplier: supplier ?? this.supplier, vendorTicketNumber: vendorTicketNumber ?? this.vendorTicketNumber, contactPersonWorkOrders: contactPersonWorkOrders ?? this.contactPersonWorkOrders, calllastSituation: calllastSituation ?? this.calllastSituation, currentSituation: currentSituation ?? this.currentSituation, repairLocation: repairLocation ?? this.repairLocation, reason: reason ?? this.reason, // startofWorkTime: startofWorkTime ?? this.startofWorkTime, // endofWorkTime: endofWorkTime ?? this.endofWorkTime, workingHours: workingHours ?? this.workingHours, travelingHours: travelingHours ?? this.travelingHours, travelingExpenses: travelingExpenses ?? this.travelingExpenses, faultDescription: faultDescription ?? this.faultDescription, sparePartsWorkOrders: sparePartsWorkOrders ?? this.sparePartsWorkOrders, reviewComment: reviewComment ?? this.reviewComment, comment: comment ?? this.comment, attachmentsWorkOrder: attachmentsWorkOrder ?? this.attachmentsWorkOrder, equipmentStatus: equipmentStatus ?? this.equipmentStatus, suppEngineerWorkOrders: suppEngineerWorkOrders ?? this.suppEngineerWorkOrders, engSignature: engSignature ?? this.engSignature, nurseSignature: nurseSignature ?? this.nurseSignature, woParentDto: woParentDto ?? this.woParentDto, timer: timer ?? this.timer, mrNumber: mrNumber ?? this.mrNumber, ); Map toJson() { final map = {}; map['id'] = id ?? 0; map['parentWOId'] = parentWOId; map['workOrderNo'] = workOrderNo; map['workOrderYear'] = workOrderYear; map['workOrderSequennce'] = workOrderSequennce; if (callRequest != null) { map['callRequest'] = callRequest.toJson(); } if (assetType != null) { map['assetType'] = assetType.toJson(); } if (assignedEmployee != null) { map['assignedEmployee'] = assignedEmployee.toJson(); } map['visitDate'] = visitDate; if (assistantEmployees != null) { map['assistantEmployees'] = assistantEmployees.map((v) => v?.toJson()).toList(); } if (supplier != null) { map['supplier'] = supplier.toJson(); } map['vendorTicketNumber'] = vendorTicketNumber; if (contactPersonWorkOrders != null) { map['contactPersonWorkOrders'] = contactPersonWorkOrders.map((v) => v.toJson()).toList(); } if (calllastSituation != null) { map['calllastSituation'] = calllastSituation.toJson(); } map['currentSituation'] = currentSituation?.toJson(); if (repairLocation?.id != null) { map['repairLocation'] = repairLocation.toJson(); } if (reason != null && reason.id != null) { map['reason'] = reason.toJson(); } // map['startofWorkTime'] = startofWorkTime; // map['endofWorkTime'] = endofWorkTime; map['startofWorkTime'] = timer?.startAt?.toIso8601String(); map['endofWorkTime'] = timer?.endAt?.toIso8601String(); map['workingHours'] = workingHours; map['travelingHours'] = travelingHours; map['travelingExpenses'] = travelingExpenses; if (faultDescription?.id != null) { map['faultDescription'] = faultDescription.toJson(); } if (sparePartsWorkOrders != null) { map['sparePartsWorkOrders'] = sparePartsWorkOrders.map((v) => v.toJson()).toList(); } map['reviewComment'] = reviewComment; map['comment'] = comment; if (attachmentsWorkOrder != null) { map['attachmentsWorkOrder'] = attachmentsWorkOrder.map((v) => v.toJson()).toList(); } if (equipmentStatus != null && equipmentStatus.id != null) { map['equipmentStatus'] = equipmentStatus.toJson(); } if (suppEngineerWorkOrders != null) { map['suppEngineerWorkOrders'] = suppEngineerWorkOrders.map((v) => v.toJson()).toList(); } map['engSignature'] = engSignature; map['nurseSignature'] = nurseSignature; if (woParentDto != null) { map['woParentDto'] = woParentDto.toJson(); } if (mrNumber != null) { map['mrNumber'] = mrNumber; } return map; } void copyDetails(ServiceReport subWoDetails) { equipmentStatus = subWoDetails.equipmentStatus; reason = subWoDetails.reason; faultDescription = subWoDetails.faultDescription; sparePartsWorkOrders = subWoDetails.sparePartsWorkOrders; suppEngineerWorkOrders = subWoDetails.suppEngineerWorkOrders; supplier = subWoDetails.supplier; } }