import 'package:test_sa/models/base.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/building.dart'; import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/new_models/site.dart'; import 'package:test_sa/models/new_models/department.dart'; import 'package:test_sa/models/new_models/room_model.dart'; class TaskRequestModel { final Data? data; final String? message; final String? title; final String? innerMessage; final int? responseCode; final bool? isSuccess; TaskRequestModel({ this.data, this.message, this.title, this.innerMessage, this.responseCode, this.isSuccess, }); factory TaskRequestModel.fromJson(Map json) => TaskRequestModel( data: json['data'] != null ? Data.fromJson(json['data']) : null, message: json['message'], title: json['title'], innerMessage: json['innerMessage'], responseCode: json['responseCode'], isSuccess: json['isSuccess'], ); Map toJson() => { 'data': data?.toJson(), 'message': message, 'title': title, 'innerMessage': innerMessage, 'responseCode': responseCode, 'isSuccess': isSuccess, }; } class Data { final int? id; final String? taskJobNo; final User? userCreated; final List? taskJobContactPersons; final TaskTypeModel? taskType; final TaskJobStatus? taskJobStatus; final dynamic asset; final dynamic site; final dynamic building; final dynamic floor; final dynamic department; final dynamic room; final String? callComment; final List? taskJobAttachments; final User? assignedEngineer; final List? taskJobAssistantEmployees; final List? taskJobActivityEngineerTimers; final List? taskJobHistories; final BuildingData? installationBuilding; final dynamic installationFloor; final dynamic installationDepartment; final String? serialNo; final String? installationDate; final dynamic completedAction; final dynamic impactStatus; final bool? isUserAcknowledge; final dynamic typeOfAlert; final dynamic riskLevel; final dynamic resource; final dynamic actionNeeded; final dynamic alertNo; final String? estimationDeliveryDate; final dynamic reasonOfFSCA; final dynamic correctiveActionDescription; final User? evaluatorUser; Data({ this.id, this.taskJobNo, this.userCreated, this.taskJobContactPersons, this.taskType, this.taskJobStatus, this.asset, this.site, this.building, this.floor, this.department, this.room, this.callComment, this.taskJobAttachments, this.assignedEngineer, this.taskJobAssistantEmployees, this.taskJobActivityEngineerTimers, this.taskJobHistories, this.installationBuilding, this.installationFloor, this.installationDepartment, this.serialNo, this.installationDate, this.completedAction, this.impactStatus, this.isUserAcknowledge, this.typeOfAlert, this.riskLevel, this.resource, this.actionNeeded, this.alertNo, this.estimationDeliveryDate, this.reasonOfFSCA, this.correctiveActionDescription, this.evaluatorUser, }); factory Data.fromJson(Map json) => Data( id: json['id'], taskJobNo: json['taskJobNo'], userCreated: json['userCreated'] != null ? User.fromJson(json['userCreated']) : null, taskJobContactPersons: (json['taskJobContactPersons'] as List?)?.map((e) => TaskJobContactPerson.fromJson(e)).toList(), taskType: json['taskType'] != null ? TaskTypeModel.fromJson(json['taskType']) : null, taskJobStatus: json['taskJobStatus'] != null ? TaskJobStatus.fromJson(json['taskJobStatus']) : null, asset: json['asset'], site: json['site'], building: json['building'], floor: json['floor'], department: json['department'], room: json['room'], callComment: json['callComment'], taskJobAttachments: (json['taskJobAttachments'] as List?)?.map((e) => TaskJobAttachment.fromJson(e)).toList(), assignedEngineer: json['assignedEngineer'] != null ? User.fromJson(json['assignedEngineer']) : null, taskJobAssistantEmployees: json['taskJobAssistantEmployees'], taskJobActivityEngineerTimers: json['taskJobActivityEngineerTimers'], taskJobHistories: (json['taskJobHistories'] as List?)?.map((e) => TaskJobHistory.fromJson(e)).toList(), installationBuilding: json['installationBuilding'] != null ? BuildingData.fromJson(json['installationBuilding']) : null, installationFloor: json['installationFloor'], installationDepartment: json['installationDepartment'], serialNo: json['serialNo'], installationDate: json['installationDate'], completedAction: json['completedAction'], impactStatus: json['impactStatus'], isUserAcknowledge: json['isUserAcknowledge'], typeOfAlert: json['typeOfAlert'], riskLevel: json['riskLevel'], resource: json['resource'], actionNeeded: json['actionNeeded'], alertNo: json['alertNo'], estimationDeliveryDate: json['estimationDeliveryDate'], reasonOfFSCA: json['reasonOfFSCA'], correctiveActionDescription: json['correctiveActionDescription'], evaluatorUser: json['evaluatorUser'] != null ? User.fromJson(json['evaluatorUser']) : null, ); Map toJson() => { 'id': id, 'taskJobNo': taskJobNo, 'userCreated': userCreated?.toJson(), 'taskJobContactPersons': taskJobContactPersons?.map((e) => e.toJson()).toList(), 'taskType': taskType?.toJson(), 'taskJobStatus': taskJobStatus?.toJson(), 'asset': asset, 'site': site, 'building': building, 'floor': floor, 'department': department, 'room': room, 'callComment': callComment, 'taskJobAttachments': taskJobAttachments?.map((e) => e.toJson()).toList(), 'assignedEngineer': assignedEngineer?.toJson(), 'taskJobAssistantEmployees': taskJobAssistantEmployees, 'taskJobActivityEngineerTimers': taskJobActivityEngineerTimers, 'taskJobHistories': taskJobHistories?.map((e) => e.toJson()).toList(), 'installationBuilding': installationBuilding?.toJson(), 'installationFloor': installationFloor, 'installationDepartment': installationDepartment, 'serialNo': serialNo, 'installationDate': installationDate, 'completedAction': completedAction, 'impactStatus': impactStatus, 'isUserAcknowledge': isUserAcknowledge, 'typeOfAlert': typeOfAlert, 'riskLevel': riskLevel, 'resource': resource, 'actionNeeded': actionNeeded, 'alertNo': alertNo, 'estimationDeliveryDate': estimationDeliveryDate, 'reasonOfFSCA': reasonOfFSCA, 'correctiveActionDescription': correctiveActionDescription, 'evaluatorUser': evaluatorUser?.toJson(), }; Map createTaskJson() => { 'id': id, 'taskJobNo': taskJobNo, 'userCreated': userCreated?.toJson(), 'taskJobContactPersons': taskJobContactPersons?.map((e) => e.toJson()).toList(), 'taskType': taskType?.toJson(), 'taskJobStatus': taskJobStatus?.toJson(), 'asset': asset, 'site': site, 'building': building, 'floor': floor, 'department': department, 'room': room, 'callComment': callComment, 'taskJobAttachments': taskJobAttachments?.map((e) => e.toJson()).toList(), 'assignedEngineer': assignedEngineer?.toJson(), 'taskJobAssistantEmployees': taskJobAssistantEmployees, 'taskJobActivityEngineerTimers': taskJobActivityEngineerTimers, 'taskJobHistories': taskJobHistories?.map((e) => e.toJson()).toList(), 'installationBuilding': installationBuilding?.toJson(), 'installationFloor': installationFloor, 'installationDepartment': installationDepartment, 'serialNo': serialNo, 'installationDate': installationDate, 'completedAction': completedAction, 'impactStatus': impactStatus, 'isUserAcknowledge': isUserAcknowledge, 'typeOfAlert': typeOfAlert, 'riskLevel': riskLevel, 'resource': resource, 'actionNeeded': actionNeeded, 'alertNo': alertNo, 'estimationDeliveryDate': estimationDeliveryDate, 'reasonOfFSCA': reasonOfFSCA, 'correctiveActionDescription': correctiveActionDescription, 'evaluatorUser': evaluatorUser?.toJson(), }; } class User { final String? userId; final String? userName; final String? email; final String? employeeId; final int? languageId; User({this.userId, this.userName, this.email, this.employeeId, this.languageId}); factory User.fromJson(Map json) => User( userId: json['userId'], userName: json['userName'], email: json['email'], employeeId: json['employeeId'], languageId: json['languageId'], ); Map toJson() => { 'userId': userId, 'userName': userName, 'email': email, 'employeeId': employeeId, 'languageId': languageId, }; } class TaskJobContactPerson { final int? id; final User? user; TaskJobContactPerson({this.id, this.user}); factory TaskJobContactPerson.fromJson(Map json) => TaskJobContactPerson( id: json['id'], user: json['user'] != null ? User.fromJson(json['user']) : null, ); Map toJson() => { 'id': id, 'user': user?.toJson(), }; } class TaskTypeModel { final int? id; final String? typeName; final RelatedTo? relatedTo; final bool? linkWithMultiAssets; final List? taskTypeRoles; final bool? isInstallation; final bool? isRecallAndAlert; TaskTypeModel({ this.id, this.typeName, this.relatedTo, this.linkWithMultiAssets, this.taskTypeRoles, this.isInstallation, this.isRecallAndAlert, }); factory TaskTypeModel.fromJson(Map json) => TaskTypeModel( id: json['id'], typeName: json['typeName'], relatedTo: json['relatedTo'] != null ? RelatedTo.fromJson(json['relatedTo']) : null, linkWithMultiAssets: json['linkWithMultiAssets'], taskTypeRoles: json['taskTypeRoles'], isInstallation: json['isInstallation'], isRecallAndAlert: json['isRecallAndAlert'], ); Map toJson() => { 'id': id, 'typeName': typeName, 'relatedTo': relatedTo?.toJson(), 'linkWithMultiAssets': linkWithMultiAssets, 'taskTypeRoles': taskTypeRoles, 'isInstallation': isInstallation, 'isRecallAndAlert': isRecallAndAlert, }; } class RelatedTo { final int? id; final String? name; final int? value; RelatedTo({this.id, this.name, this.value}); factory RelatedTo.fromJson(Map json) => RelatedTo( id: json['id'], name: json['name'], value: json['value'], ); Map toJson() => { 'id': id, 'name': name, 'value': value, }; } class TaskJobStatus { final int? id; final String? name; final int? value; TaskJobStatus({this.id, this.name, this.value}); factory TaskJobStatus.fromJson(Map json) => TaskJobStatus( id: json['id'], name: json['name'], value: json['value'], ); Map toJson() => { 'id': id, 'name': name, 'value': value, }; } class TaskJobAttachment { final int? id; final String? name; TaskJobAttachment({this.id, this.name}); factory TaskJobAttachment.fromJson(Map json) => TaskJobAttachment( id: json['id'], name: json['name'], ); Map toJson() => { 'id': id, 'name': name, }; } class TaskJobHistory { final int? id; final RelatedTo? action; final TaskJobStatus? taskJobStatus; final User? user; final dynamic typeOfAlert; final dynamic riskLevel; final dynamic resource; final dynamic actionNeeded; final User? assignedEmployee; final dynamic alertNo; final String? estimationDeliveryDate; final String? createdDate; final BuildingData? installationBuilding; final dynamic installationFloor; final dynamic installationDepartment; final String? installationDate; final String? serialNo; TaskJobHistory({ this.id, this.action, this.taskJobStatus, this.user, this.typeOfAlert, this.riskLevel, this.resource, this.actionNeeded, this.assignedEmployee, this.alertNo, this.estimationDeliveryDate, this.createdDate, this.installationBuilding, this.installationFloor, this.installationDepartment, this.installationDate, this.serialNo, }); factory TaskJobHistory.fromJson(Map json) => TaskJobHistory( id: json['id'], action: json['action'] != null ? RelatedTo.fromJson(json['action']) : null, taskJobStatus: json['taskJobStatus'] != null ? TaskJobStatus.fromJson(json['taskJobStatus']) : null, user: json['user'] != null ? User.fromJson(json['user']) : null, typeOfAlert: json['typeOfAlert'], riskLevel: json['riskLevel'], resource: json['resource'], actionNeeded: json['actionNeeded'], assignedEmployee: json['assignedEmployee'] != null ? User.fromJson(json['assignedEmployee']) : null, alertNo: json['alertNo'], estimationDeliveryDate: json['estimationDeliveryDate'], createdDate: json['createdDate'], installationBuilding: json['installationBuilding'] != null ? BuildingData.fromJson(json['installationBuilding']) : null, installationFloor: json['installationFloor'], installationDepartment: json['installationDepartment'], installationDate: json['installationDate'], serialNo: json['serialNo'], ); Map toJson() => { 'id': id, 'action': action?.toJson(), 'taskJobStatus': taskJobStatus?.toJson(), 'user': user?.toJson(), 'typeOfAlert': typeOfAlert, 'riskLevel': riskLevel, 'resource': resource, 'actionNeeded': actionNeeded, 'assignedEmployee': assignedEmployee?.toJson(), 'alertNo': alertNo, 'estimationDeliveryDate': estimationDeliveryDate, 'createdDate': createdDate, 'installationBuilding': installationBuilding?.toJson(), 'installationFloor': installationFloor, 'installationDepartment': installationDepartment, 'installationDate': installationDate, 'serialNo': serialNo, }; } class BuildingData { final int? id; final String? name; final int? value; BuildingData({this.id, this.name, this.value}); factory BuildingData.fromJson(Map json) => BuildingData( id: json['id'], name: json['name'], value: json['value'], ); Map toJson() => { 'id': id, 'name': name, 'value': value, }; } class AddTaskModel { int? id; int? taskTypeId; List? assetIds = []; Site? site; Building? building; Floor? floor; Department? department; Rooms? room; String? callComment; Lookup? typeOfAlert; Lookup? riskLevel; Lookup? resource; Lookup? actionNeeded; TaskEvaluatorUser? taskEvaluatorUser; String? alertNo; String? estimationDeliveryDate; List? attachments; String? reasonOfFSCA; String? correctiveActionDescription; AddTaskModel({ this.id, this.taskTypeId, this.assetIds, this.site, this.building, this.floor, this.department, this.room, this.callComment, this.typeOfAlert, this.riskLevel, this.resource, this.actionNeeded, this.alertNo, this.estimationDeliveryDate, this.attachments, this.reasonOfFSCA, this.taskEvaluatorUser, this.correctiveActionDescription, }); Map toJson() => { 'id': id, 'taskTypeId': taskTypeId, 'assetIds': assetIds ?? [], 'siteId': site?.id, 'buildingId': building?.id, 'floorId': floor?.id, 'departmentId': department?.id, 'roomId': room?.id, 'callComment': callComment, 'typeOfAlertId': typeOfAlert?.id, 'riskLevelId': riskLevel?.id, 'resourceId': resource?.id, 'actionNeededId': actionNeeded?.id, 'alertNo': alertNo, 'estimationDeliveryDate': estimationDeliveryDate, 'reasonOfFSCA': reasonOfFSCA, 'correctiveActionDescription': correctiveActionDescription, 'evaluatorUserId': taskEvaluatorUser?.userId, 'attachments': attachments?.map((x) => x.toJson()).toList(), }; } class TaskEvaluatorUser extends Base { String? userId; String? userName; String? email; String? employeeId; int? languageId; TaskEvaluatorUser({this.userId, this.userName, this.email, this.employeeId, this.languageId}) : super(name: userName, identifier: userId?.toString()); factory TaskEvaluatorUser.fromJson(Map json) { return TaskEvaluatorUser(userId: json['userId'], userName: json['userName'], email: json['email'], employeeId: json['employeeId'], languageId: json['languageId']); } Map toJson() { final Map data = {}; data['userId'] = userId; data['userName'] = userName; data['email'] = email; data['employeeId'] = employeeId; data['languageId'] = languageId; return data; } }