import 'package:flutter/src/widgets/framework.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/ppm/ppm.dart'; import 'package:test_sa/models/timer_model.dart'; 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.destRoomId, this.senderSiteId, this.senderBuildingId, this.senderFloorId, this.senderDepartmentId, this.senderRoom, this.senderAssignedEmployeeId, this.senderMachineStatusId, this.senderComment, this.comment, this.receiverEndUserId, this.receiverEndUserName, 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, this.assetNumber, this.assetName, this.manufacturerName, this.modelName, this.assetSerialNo, this.destDepartmentName, this.destBuildingName, this.applied, this.createdOn, this.destFloorName, this.destSiteName, this.manufacturerId, this.modelId, this.modifiedOn, this.receiverAssignedEmployeeName, this.receiverEngSignatureUrl, this.receiverMachineStatusName, this.senderAssignedEmployeeName, this.senderBuildingName, this.senderDepartmentName, this.senderEngSignatureUrl, this.senderFloorName, this.senderMachineStatusName, this.senderSiteName, this.supplierId, this.supplierName, this.senderVisitTimers, this.receiverVisitTimers, this.tbsTimer}); 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']; destRoomId = json['destRoomId']; senderSiteId = json['senderSiteId']; senderBuildingId = json['senderBuildingId']; senderFloorId = json['senderFloorId']; senderDepartmentId = json['senderDepartmentId']; senderRoom = json['senderRoom']; senderAssignedEmployeeId = json['senderAssignedEmployeeId']; senderMachineStatusId = json['senderMachineStatusId']; senderComment = json['senderComment']; comment = json['comment']; receiverEndUserId = json['receiverEndUserId']; receiverEndUserName = json['receiverEndUserName']; 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']; senderVisitTimers = []; if (json['assetTransferSenderTimers'] != null) { json['assetTransferSenderTimers'].forEach((v) { senderVisitTimers.add(VisitTimers.fromJson(v)); }); } receiverVisitTimers = []; if (json['assetTransferReceiverTimers'] != null) { json['assetTransferReceiverTimers'].forEach((v) { receiverVisitTimers.add(VisitTimers.fromJson(v)); }); } tbsTimer = TimerModel(); // try { // receiverTimer = TimerModel(startAt: DateTime.tryParse(receiverStartDate ?? ""), endAt: DateTime.tryParse(receiverEndDate ?? "")); // senderTimer = TimerModel(startAt: DateTime.tryParse(senderStartDate ?? ""), endAt: DateTime.tryParse(senderEndDate ?? "")); // if (receiverTimer.endAt != null && receiverTimer.startAt != null) { // receiverTimer.durationInSecond = (receiverTimer.endAt.difference(receiverTimer.startAt))?.inSeconds; // receiverWorkingHours = (((receiverTimer.durationInSecond ?? 0) / 60) / 60)?.toStringAsFixed(2); // } // if (senderTimer.endAt != null && senderTimer.startAt != null) { // senderTimer.durationInSecond = (senderTimer.endAt.difference(senderTimer.startAt))?.inSeconds; // senderWorkingHours = (((senderTimer.durationInSecond ?? 0) / 60) / 60)?.toStringAsFixed(2); // } // } catch (e) { // print(e); // } if (json['receiverAttachments'] != null) { receiverAttachments = []; json['receiverAttachments'].forEach((v) { receiverAttachments.add(AssetTransferAttachment.fromJson(v)); }); } assetNumber = json['assetNumber']; assetName = json['assetName']; manufacturerName = json['manufacturerName']; modelName = json['modelName']; assetSerialNo = json['assetSerialNo']; destDepartmentName = json['destDepartmentName']; destBuildingName = json['destBuildingName']; applied = json['applied']; createdOn = json['createdOn']; destFloorName = json['destFloorName']; destSiteName = json['destSiteName']; manufacturerId = json['manufacturerId']; modelId = json['modelId']; modifiedOn = json['modifiedOn']; receiverAssignedEmployeeName = json['receiverAssignedEmployeeName']; receiverEngSignatureUrl = json['receiverEngSignatureUrl']; receiverMachineStatusName = json['receiverMachineStatusName']; senderAssignedEmployeeName = json['senderAssignedEmployeeName']; senderBuildingName = json['senderBuildingName']; senderDepartmentName = json['senderDepartmentName']; senderEngSignatureUrl = json['senderEngSignatureUrl']; senderFloorName = json['senderFloorName']; senderMachineStatusName = json['senderMachineStatusName']; senderSiteName = json['senderSiteName']; supplierId = json['supplierId']; supplierName = json['supplierName']; } num id; num transferNo; String transferCode; String assetSerialNo; num assetId; String assetNumber; String assetName; int modelId; String modelName; int manufacturerId; String manufacturerName; num destSiteId; num destBuildingId; num destFloorId; num destDepartmentId; num destRoomId; num senderSiteId; num senderBuildingId; num senderFloorId; num senderDepartmentId; String senderRoom; String senderAssignedEmployeeId; num senderMachineStatusId; String senderComment; String comment; String receiverEndUserId; String receiverEndUserName; String senderStartDate; String senderEndDate; String senderWorkingHours; String senderTravelingHours; String senderEngSignature; List senderAttachments; String receiverAssignedEmployeeId; num receiverMachineStatusId; String receiverComment; String receiverStartDate; String receiverEndDate; String receiverWorkingHours; String receiverTravelingHours; String receiverEngSignature; List receiverAttachments; num supplierId; String supplierName; String destSiteName; String destBuildingName; String destFloorName; String destDepartmentName; String senderSiteName; String senderBuildingName; String senderFloorName; String senderDepartmentName; String senderAssignedEmployeeName; String senderMachineStatusName; String senderEngSignatureUrl; String receiverAssignedEmployeeName; String receiverMachineStatusName; String receiverEngSignatureUrl; bool applied; String createdOn; String modifiedOn; List senderVisitTimers; List receiverVisitTimers; TimerModel tbsTimer = TimerModel(); AssetTransfer copyWith( {num id, num transferNo, String transferCode, num assetId, num destSiteId, num destBuildingId, num destFloorId, num destDepartmentId, String destRoomId, num senderSiteId, num senderBuildingId, num senderFloorId, num senderDepartmentId, String senderRoom, String senderAssignedEmployeeId, num senderMachineStatusId, String senderComment, String comment, String receiverEndUserId, String receiverEndUserName, String senderStartDate, String senderEndDate, String senderWorkingHours, String senderTravelingHours, String senderEngSignature, List senderAttachments, String receiverAssignedEmployeeId, num receiverMachineStatusId, String receiverComment, String receiverStartDate, String receiverEndDate, String receiverWorkingHours, String receiverTravelingHours, String receiverEngSignature, List receiverAttachments, num supplierId, String supplierName, String destSiteName, String destBuildingName, String destFloorName, String destDepartmentNam, String senderSiteName, String senderBuildingName, String senderFloorName, String senderDepartmentName, String senderAssignedEmployeeName, String senderMachineStatusName, String senderEngSignatureUrl, String receiverAssignedEmployeeName, String receiverMachineStatusName, String receiverEngSignatureUrl, bool applied, String createdOn, String modifiedOn, String assetSerialNo, String assetNumber, String assetName, int modelId, String modelName, int manufacturerId, String manufacturerName, String destDepartmentName, List senderVisitTimers, List receiverVisitTimers, TimerModel tbsTimer}) => 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, destRoomId: destRoomId ?? this.destRoomId, 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, comment: comment ?? this.comment, receiverEndUserId: receiverEndUserId ?? this.receiverEndUserId, receiverEndUserName: receiverEndUserName ?? this.receiverEndUserName, 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, supplierId: supplierId ?? this.supplierId, supplierName: supplierName ?? this.supplierName, destSiteName: destSiteName ?? this.destSiteName, destBuildingName: destBuildingName ?? this.destBuildingName, destFloorName: destFloorName ?? this.destFloorName, destDepartmentName: destDepartmentName ?? this.destDepartmentName, senderSiteName: senderSiteName ?? this.senderSiteName, senderBuildingName: senderBuildingName ?? this.senderBuildingName, senderFloorName: senderFloorName ?? this.senderFloorName, senderDepartmentName: senderDepartmentName ?? this.senderDepartmentName, senderAssignedEmployeeName: senderAssignedEmployeeName ?? this.senderAssignedEmployeeName, senderMachineStatusName: senderMachineStatusName ?? this.senderMachineStatusName, senderEngSignatureUrl: senderEngSignatureUrl ?? this.senderEngSignatureUrl, receiverAssignedEmployeeName: receiverAssignedEmployeeName ?? this.receiverAssignedEmployeeName, receiverMachineStatusName: receiverMachineStatusName ?? this.receiverMachineStatusName, receiverEngSignatureUrl: receiverEngSignatureUrl ?? this.receiverEngSignatureUrl, applied: applied ?? this.applied, createdOn: createdOn ?? this.createdOn, modifiedOn: modifiedOn ?? this.modifiedOn, assetSerialNo: assetSerialNo ?? this.assetSerialNo, assetNumber: assetNumber ?? this.assetNumber, assetName: assetName ?? this.assetName, modelId: modelId ?? this.modelId, modelName: modelName ?? this.modelName, manufacturerId: manufacturerId ?? this.manufacturerId, senderVisitTimers: senderVisitTimers ?? this.senderVisitTimers, receiverVisitTimers: receiverVisitTimers ?? this.receiverVisitTimers, tbsTimer: tbsTimer ?? this.tbsTimer, manufacturerName: manufacturerName ?? this.manufacturerName); Map toJson() { final map = {}; map['id'] = id; map['transferNo'] = transferNo; map['transferCode'] = transferCode; map['assetId'] = assetId; map['destSiteId'] = destSiteId; map['destBuildingId'] = destBuildingId; map['destFloorId'] = destFloorId; map['destDepartmentId'] = destDepartmentId; map['destRoomId'] = destRoomId; 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['comment'] = comment; map['receiverEndUserId'] = receiverEndUserId; map['receiverEndUserName'] = receiverEndUserName; map['senderStartDate'] = senderStartDate; map['senderEndDate'] = senderEndDate; map['senderWorkingHours'] = senderWorkingHours; map['senderTravelingHours'] = senderTravelingHours; map['senderEngSignature'] = senderEngSignature; if (this.senderVisitTimers != null) { map['assetTransferSenderTimers'] = this.senderVisitTimers.map((v) => v.toJson()).toList(); } if (this.receiverVisitTimers != null) { map['assetTransferReceiverTimers'] = this.receiverVisitTimers.map((v) => v.toJson()).toList(); } 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(); } map["supplierId"] = supplierId; map["supplierName"] = supplierName; map["destSiteName"] = destSiteName; map["destBuildingName"] = destBuildingName; map["destFloorName"] = destFloorName; map["destDepartmentName"] = destDepartmentName; map["senderSiteName"] = senderSiteName; map["senderBuildingName"] = senderBuildingName; map["senderFloorName"] = senderFloorName; map["senderDepartmentName"] = senderDepartmentName; map["senderAssignedEmployeeName"] = senderAssignedEmployeeName; map["senderMachineStatusName"] = senderMachineStatusName; map["senderEngSignatureUrl"] = senderEngSignatureUrl; map["receiverAssignedEmployeeName"] = receiverAssignedEmployeeName; map["receiverMachineStatusName"] = receiverMachineStatusName; map["receiverEngSignatureUrl"] = receiverEngSignatureUrl; map["applied"] = applied; map["createdOn"] = createdOn; map["modifiedOn"] = modifiedOn; map["assetSerialNo"] = assetSerialNo; map["assetNumber"] = assetNumber; map["assetName"] = assetName; map["modelId"] = modelId; map["modelName"] = modelName; map["manufacturerId"] = manufacturerId; map["manufacturerName"] = manufacturerName; return map; } Map transferBody({Asset asset}) { final map = {}; map['id'] = 0; map['transferNo'] = transferNo; map['transferCode'] = transferCode; map['assetId'] = asset?.id; map['destSiteId'] = destSiteId; map['destBuildingId'] = destBuildingId; map['destFloorId'] = destFloorId; map['destDepartmentId'] = destDepartmentId; map['destRoomId'] = destRoomId; map['senderSiteId'] = asset?.site?.id; map['senderBuildingId'] = asset?.building?.id; map['senderFloorId'] = asset?.floor?.id; map['senderDepartmentId'] = asset?.department?.id; map['senderRoom'] = asset?.room; map['senderAssignedEmployeeId'] = senderAssignedEmployeeId; map['senderMachineStatusId'] = senderMachineStatusId; map['senderComment'] = senderComment; map['comment'] = comment; map['receiverEndUserId'] = receiverEndUserId; map['receiverEndUserName'] = receiverEndUserName; 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(); } if (senderVisitTimers != null) { map['assetTransferSenderTimers'] = senderVisitTimers.map((v) => v.toJson()).toList(); } if (receiverVisitTimers != null) { map['assetTransferReceiverTimers'] = receiverVisitTimers.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; } fromDetails(AssetTransfer assetTransfer) { if (assetTransfer == null) return; id = assetTransfer.id; transferNo = assetTransfer.transferNo; transferCode = assetTransfer.transferCode; assetId = assetTransfer.assetId; destSiteId = assetTransfer.destSiteId; destBuildingId = assetTransfer.destBuildingId; destFloorId = assetTransfer.destFloorId; destDepartmentId = assetTransfer.destDepartmentId; destRoomId = assetTransfer.destRoomId; senderSiteId = assetTransfer.senderSiteId; senderBuildingId = assetTransfer.senderBuildingId; senderFloorId = assetTransfer.senderFloorId; senderDepartmentId = assetTransfer.senderDepartmentId; senderRoom = assetTransfer.senderRoom; senderAssignedEmployeeId = assetTransfer.senderAssignedEmployeeId; senderMachineStatusId = assetTransfer.senderMachineStatusId; senderComment = assetTransfer.senderComment; comment = assetTransfer.comment; receiverEndUserId = assetTransfer.receiverEndUserId; receiverEndUserName = assetTransfer.receiverEndUserName; senderStartDate = assetTransfer.senderStartDate; senderEndDate = assetTransfer.senderEndDate; senderWorkingHours = assetTransfer.senderWorkingHours; senderTravelingHours = assetTransfer.senderTravelingHours; senderEngSignature = assetTransfer.senderEngSignature; senderAttachments = assetTransfer.senderAttachments; receiverAssignedEmployeeId = assetTransfer.receiverAssignedEmployeeId; receiverMachineStatusId = assetTransfer.receiverMachineStatusId; receiverComment = assetTransfer.receiverComment; receiverStartDate = assetTransfer.receiverStartDate; receiverEndDate = assetTransfer.receiverEndDate; receiverWorkingHours = assetTransfer.receiverWorkingHours; receiverTravelingHours = assetTransfer.receiverTravelingHours; receiverEngSignature = assetTransfer.receiverEngSignature; receiverAttachments = assetTransfer.receiverAttachments; supplierId = assetTransfer.supplierId; supplierName = assetTransfer.supplierName; destSiteName = assetTransfer.destSiteName; destBuildingName = assetTransfer.destBuildingName; destFloorName = assetTransfer.destFloorName; destDepartmentName = assetTransfer.destDepartmentName; senderSiteName = assetTransfer.senderSiteName; senderBuildingName = assetTransfer.senderBuildingName; senderFloorName = assetTransfer.senderFloorName; senderDepartmentName = assetTransfer.senderDepartmentName; senderAssignedEmployeeName = assetTransfer.senderAssignedEmployeeName; senderMachineStatusName = assetTransfer.senderMachineStatusName; senderEngSignatureUrl = assetTransfer.senderEngSignatureUrl; receiverAssignedEmployeeName = assetTransfer.receiverAssignedEmployeeName; receiverMachineStatusName = assetTransfer.receiverMachineStatusName; receiverEngSignatureUrl = assetTransfer.receiverEngSignatureUrl; applied = assetTransfer.applied; createdOn = assetTransfer.createdOn; modifiedOn = assetTransfer.modifiedOn; assetSerialNo = assetTransfer.assetSerialNo; assetNumber = assetTransfer.assetNumber; assetName = assetTransfer.assetName; modelId = assetTransfer.modelId; modelName = assetTransfer.modelName; manufacturerId = assetTransfer.manufacturerId; manufacturerName = assetTransfer.manufacturerName; senderVisitTimers = assetTransfer.senderVisitTimers; receiverVisitTimers = assetTransfer.receiverVisitTimers; } Future validate(BuildContext context) async { if (assetId == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.device}"); return false; } else if (destSiteId == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.destinationSite}"); return false; } else if (destBuildingId == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.building}"); return false; } else if (destFloorId == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.floor}"); return false; } else if (destDepartmentId == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.department}"); return false; } return true; } }