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.
cloudsolutions-atoms/lib/models/plan_preventive_visit/plan_preventive_visit_model...

445 lines
14 KiB
Dart

import 'dart:io';
import 'package:flutter/widgets.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:test_sa/extensions/context_extension.dart';
1 year ago
import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/models/generic_attachment_model.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/service_request/supplier_details.dart';
import 'package:test_sa/models/timer_model.dart';
class PlanPreventiveVisit {
String? id;
String? visitNo;
Asset? asset;
String? planNo;
String? planName;
String? nextPMDate;
String? assetName;
String? model;
String? manufacturer;
String? supplierName;
String? siteName;
String? buildingName;
String? floorName;
String? departmentName;
String? roomName;
String? fromDate;
1 year ago
String? creationDate;
String? createdDate;
1 year ago
String? closedDate;
String? toDate;
AssignedEmployee? assignedEmployee;
DateTime? acutalDateOfVisit;
Lookup? typeOfService;
Lookup? visitStatus;
num? travelingHours;
String? comments;
int? executionTimeFrame;
Lookup? taskStatus;
Lookup? deviceStatus;
Lookup? assetAvailability = Lookup();
Lookup? safety;
String? engSignature;
String? nurseSignature;
List<GenericAttachmentModel>? preventiveVisitAttachments;
List<File>? attachments = [];
List<PreventiveVisitCalibrations>? preventiveVisitCalibrations;
List<PreventiveVisitChecklists>? preventiveVisitChecklists;
List<PreventiveVisitKits>? preventiveVisitKits;
List<PreventiveVisitTimers>? preventiveVisitTimers;
List<PreventiveVisitSuppliers>? preventiveVisitSuppliers;
TimerModel? tbsTimer = TimerModel();
2 years ago
List<TimerModel>? timerModelList = [];
TimerModel? ppMTimePicker;
PlanPreventiveVisit(
{this.id,
this.visitNo,
this.asset,
this.planNo,
this.planName,
this.nextPMDate,
this.assetName,
this.model,
this.manufacturer,
this.supplierName,
this.siteName,
this.buildingName,
this.floorName,
this.departmentName,
this.roomName,
this.fromDate,
this.creationDate,
this.createdDate,
this.closedDate,
this.toDate,
this.assignedEmployee,
this.acutalDateOfVisit,
this.typeOfService,
this.visitStatus,
this.travelingHours,
this.comments,
this.executionTimeFrame,
this.taskStatus,
this.deviceStatus,
this.assetAvailability,
this.safety,
this.engSignature,
this.nurseSignature,
this.preventiveVisitAttachments,
this.attachments,
this.preventiveVisitCalibrations,
this.preventiveVisitChecklists,
this.preventiveVisitKits,
this.preventiveVisitTimers,
2 years ago
this.timerModelList,
this.ppMTimePicker,
this.preventiveVisitSuppliers});
PlanPreventiveVisit.fromJson(Map<String, dynamic> json) {
id = json['id'];
visitNo = json['visitNo'];
asset = json['asset'] != null ? Asset.fromJson(json['asset']) : null;
planNo = json['planNo'];
planName = json['planName'];
nextPMDate = json['nextPMDate'];
assetName = json['assetName'];
model = json['model'];
manufacturer = json['manufacturer'];
supplierName = json['supplierName'];
siteName = json['siteName'];
buildingName = json['buildingName'];
floorName = json['floorName'];
departmentName = json['departmentName'];
roomName = json['roomName'];
fromDate = json['fromDate'];
1 year ago
creationDate = json['creationDate'];
createdDate = json['createdDate'];
1 year ago
closedDate = json['closedDate'];
toDate = json['toDate'];
assignedEmployee = json['assignedEmployee'] != null ? AssignedEmployee.fromJson(json['assignedEmployee']) : null;
acutalDateOfVisit = json['acutalDateOfVisit'] != null ? DateTime.parse(json['acutalDateOfVisit']) : null;
typeOfService = json['typeOfService'] != null ? Lookup.fromJson(json['typeOfService']) : null;
visitStatus = json['visitStatus'] != null ? Lookup.fromJson(json['visitStatus']) : null;
travelingHours = json['travelingHours'];
comments = json['comments'];
executionTimeFrame = json['executionTimeFrame'];
taskStatus = json['taskStatus'] != null ? Lookup.fromJson(json['taskStatus']) : null;
deviceStatus = json['deviceStatus'] != null ? Lookup.fromJson(json['deviceStatus']) : null;
2 years ago
assetAvailability = json['assetAvailability'] != null ? Lookup.fromJson(json['assetAvailability']) : null;
safety = json['safety'] != null ? Lookup.fromJson(json['safety']) : null;
engSignature = json['engSignature'];
nurseSignature = json['nurseSignature'];
if (json['preventiveVisitAttachments'] != null) {
preventiveVisitAttachments = <GenericAttachmentModel>[];
json['preventiveVisitAttachments'].forEach((v) {
preventiveVisitAttachments!.add(GenericAttachmentModel.fromPreventiveVisitJson(v));
});
}
if (json['preventiveVisitCalibrations'] != null) {
preventiveVisitCalibrations = <PreventiveVisitCalibrations>[];
json['preventiveVisitCalibrations'].forEach((v) {
preventiveVisitCalibrations!.add(PreventiveVisitCalibrations.fromJson(v));
});
}
if (json['preventiveVisitChecklists'] != null) {
preventiveVisitChecklists = <PreventiveVisitChecklists>[];
json['preventiveVisitChecklists'].forEach((v) {
preventiveVisitChecklists!.add(PreventiveVisitChecklists.fromJson(v));
});
}
if (json['preventiveVisitKits'] != null) {
preventiveVisitKits = <PreventiveVisitKits>[];
json['preventiveVisitKits'].forEach((v) {
preventiveVisitKits!.add(PreventiveVisitKits.fromJson(v));
});
}
if (json['preventiveVisitTimers'] != null) {
preventiveVisitTimers = <PreventiveVisitTimers>[];
json['preventiveVisitTimers'].forEach((v) {
preventiveVisitTimers!.add(PreventiveVisitTimers.fromJson(v));
});
}
if (json['preventiveVisitSuppliers'] != null) {
preventiveVisitSuppliers = <PreventiveVisitSuppliers>[];
json['preventiveVisitSuppliers'].forEach((v) {
preventiveVisitSuppliers!.add(PreventiveVisitSuppliers.fromJson(v));
});
}
}
Map<String, dynamic> toJson({required int status}) {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['acutalDateOfVisit'] = acutalDateOfVisit?.toIso8601String();
data['typeOfServiceId'] = typeOfService?.id;
data['visitStatusValue'] = status;
data['travelingHours'] = travelingHours;
data['comments'] = comments;
data['taskStatusId'] = taskStatus?.id;
data['deviceStatusId'] = deviceStatus?.id;
data['assetAvailabilityId'] = assetAvailability?.id;
data['safetyId'] = safety?.id;
data['engSignature'] = engSignature;
data['nurseSignature'] = nurseSignature;
if (preventiveVisitAttachments != null) {
data['preventiveVisitAttachments'] = preventiveVisitAttachments!.map((v) => v.toPreventiveVisitJson()).toList();
}
if (preventiveVisitCalibrations != null) {
data['preventiveVisitCalibrations'] = preventiveVisitCalibrations!.map((v) => v.toJson()).toList();
}
if (preventiveVisitChecklists != null) {
data['preventiveVisitChecklists'] = preventiveVisitChecklists!.map((v) => v.toJson()).toList();
}
if (preventiveVisitKits != null) {
data['preventiveVisitKits'] = preventiveVisitKits!.map((v) => v.toJson()).toList();
}
if (preventiveVisitTimers != null) {
data['preventiveVisitTimers'] = preventiveVisitTimers!.map((v) => v.toJson()).toList();
}
if (preventiveVisitSuppliers != null) {
data['preventiveVisitSuppliers'] = preventiveVisitSuppliers!.map((v) => v.toJson()).toList();
}
return data;
}
Future<bool> validate(BuildContext context) async {
if (visitStatus?.id == null) {
await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.status}");
return false;
}
if (acutalDateOfVisit == null) {
await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.actualDate}");
return false;
}
if (tbsTimer?.startAt == null) {
await Fluttertoast.showToast(msg: "Working Hours Required");
return false;
}
if (tbsTimer?.endAt == null) {
await Fluttertoast.showToast(msg: "Please Stop The Timer");
return false;
}
return true;
}
void removeEmptyObjects() {
// if (vCalibrationTools?.isNotEmpty ?? false) vCalibrationTools!.removeWhere((element) => element.assetId == null && element.calibrationDateOfTesters == null);
// if (vKits?.isNotEmpty ?? false) vKits!.removeWhere((element) => element.partName == null && element.partNumber == null);
}
}
class AssignedEmployee {
String? userId;
String? userName;
String? email;
String? employeeId;
int? languageId;
AssignedEmployee({this.userId, this.userName, this.email, this.employeeId, this.languageId});
AssignedEmployee.fromJson(Map<String, dynamic> json) {
userId = json['userId'];
userName = json['userName'];
email = json['email'];
employeeId = json['employeeId'];
languageId = json['languageId'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = Map<String, dynamic>();
data['userId'] = this.userId;
data['userName'] = this.userName;
data['email'] = this.email;
data['employeeId'] = this.employeeId;
data['languageId'] = this.languageId;
return data;
}
}
class PreventiveVisitChecklists {
int? id;
Lookup? taskStatus;
String? taskComment;
String? measuredValue;
InstructionText? instructionText;
PreventiveVisitChecklists({this.id, this.taskStatus, this.taskComment, this.measuredValue, this.instructionText});
PreventiveVisitChecklists.fromJson(Map<String, dynamic> json) {
id = json['id'];
taskStatus = json['taskStatus'] != null ? Lookup.fromJson(json['taskStatus']) : null;
taskComment = json['taskComment'];
measuredValue = json['measuredValue'];
instructionText = json['instructionText'] != null ? InstructionText.fromJson(json['instructionText']) : null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['taskStatusId'] = taskStatus?.id;
data['taskComment'] = taskComment;
data['measuredValue'] = measuredValue;
return data;
}
}
class InstructionText {
int? id;
String? text;
InstructionText({this.id, this.text});
InstructionText.fromJson(Map<String, dynamic> json) {
id = json['id'];
text = json['text'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['text'] = text;
return data;
}
}
class PreventiveVisitTimers {
int? id;
String? startDateTime;
String? endDateTime;
double? workingHours;
PreventiveVisitTimers({this.id, this.startDateTime, this.endDateTime, this.workingHours});
PreventiveVisitTimers.fromJson(Map<String, dynamic> json) {
id = json['id'];
startDateTime = json['startDateTime'];
endDateTime = json['endDateTime'];
workingHours = json['workingHours'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['startDateTime'] = startDateTime;
data['endDateTime'] = endDateTime;
data['workingHours'] = workingHours;
return data;
}
}
class PreventiveVisitCalibrations {
num? id;
Asset? asset;
String? calibrationDateOfTesters;
PreventiveVisitCalibrations({this.id, this.asset, this.calibrationDateOfTesters});
PreventiveVisitCalibrations.fromJson(Map<String, dynamic> json) {
id = json['id'];
asset = json['asset'] != null ? Asset.fromJson(json['asset']) : null;
calibrationDateOfTesters = json['calibrationDateOfTesters'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
if (asset != null) {
data['assetId'] = asset?.id;
}
data['calibrationDateOfTesters'] = calibrationDateOfTesters;
return data;
}
}
class PreventiveVisitSuppliers {
int? id;
SupplierDetails? supplier;
SuppPersons? suppPerson;
DateTime? startDateTime;
DateTime? endDateTime;
TextEditingController? workingHoursController;
num? workingHours;
PreventiveVisitSuppliers({this.id, this.supplier, this.suppPerson, this.startDateTime, this.endDateTime, this.workingHours, this.workingHoursController});
PreventiveVisitSuppliers.fromJson(Map<String, dynamic> json) {
id = json['id'];
supplier = json['supplier'] != null ? SupplierDetails.fromJson(json['supplier']) : null;
suppPerson = json['suppPerson'] != null ? SuppPersons.fromJson(json['suppPerson']) : null;
startDateTime = json['startDateTime'] != null ? DateTime.parse(json['startDateTime']) : null;
endDateTime = json['endDateTime'] != null ? DateTime.parse(json['endDateTime']) : null;
workingHours = json['workingHours'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
if (supplier != null) {
data['supplierId'] = supplier?.id;
}
if (suppPerson != null) {
data['suppPersonId'] = suppPerson?.id;
}
data['startDateTime'] = startDateTime?.toIso8601String();
data['endDateTime'] = endDateTime?.toIso8601String();
data['workingHours'] = workingHours;
return data;
}
}
class PreventiveVisitKits {
int? id;
PartCatalogItem? partCatalogItem;
PreventiveVisitKits({this.id, partCatalogItem});
PreventiveVisitKits.fromJson(Map<String, dynamic> json) {
id = json['id'];
partCatalogItem = json['partCatalogItem'] != null ? PartCatalogItem.fromJson(json['partCatalogItem']) : null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
if (partCatalogItem != null) {
data['partCatalogItemId'] = partCatalogItem?.id;
}
return data;
}
}
class PartCatalogItem {
num? id;
String? partName;
String? partNumber;
String? oracleCode;
PartCatalogItem({this.id, this.partName, this.partNumber, this.oracleCode});
PartCatalogItem.fromJson(Map<String, dynamic> json) {
id = json['id'];
partName = json['partName'];
partNumber = json['partNumber'];
oracleCode = json['oracleCode'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['partName'] = partName;
data['partNumber'] = partNumber;
data['oracleCode'] = oracleCode;
return data;
}
}