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, 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? 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 (senderVisitTimers != null) { map['assetTransferSenderTimers'] = senderVisitTimers!.map((v) => v.toJson()).toList(); } if (receiverVisitTimers != null) { map['assetTransferReceiverTimers'] = 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; } }