marco.pms.mobileapp/lib/model/service_project/service_project_job_detail_model.dart

275 lines
6.6 KiB
Dart

class JobDetailsResponse {
final bool? success;
final String? message;
final JobData? data;
final dynamic errors;
final int? statusCode;
final String? timestamp;
JobDetailsResponse({
this.success,
this.message,
this.data,
this.errors,
this.statusCode,
this.timestamp,
});
factory JobDetailsResponse.fromJson(Map<String, dynamic>? json) {
if (json == null) return JobDetailsResponse();
return JobDetailsResponse(
success: json['success'] as bool?,
message: json['message'] as String?,
data: json['data'] != null ? JobData.fromJson(json['data']) : null,
errors: json['errors'],
statusCode: json['statusCode'] as int?,
timestamp: json['timestamp'] as String?,
);
}
}
class JobData {
final String? id;
final String? title;
final String? description;
final String? jobTicketUId;
final Project? project;
final List<Assignee>? assignees;
final Status? status;
final String? startDate;
final String? dueDate;
final bool? isActive;
final dynamic taggingAction;
final String? attendanceId;
final int? nextTaggingAction;
final String? createdAt;
final User? createdBy;
final List<Tag>? tags;
final List<UpdateLog>? updateLogs;
JobData({
this.id,
this.title,
this.description,
this.jobTicketUId,
this.project,
this.assignees,
this.status,
this.startDate,
this.dueDate,
this.isActive,
this.taggingAction,
this.attendanceId,
this.nextTaggingAction,
this.createdAt,
this.createdBy,
this.tags,
this.updateLogs,
});
factory JobData.fromJson(Map<String, dynamic>? json) {
if (json == null) return JobData();
return JobData(
id: json['id'] as String?,
title: json['title'] as String?,
description: json['description'] as String?,
jobTicketUId: json['jobTicketUId'] as String?,
project: json['project'] != null ? Project.fromJson(json['project']) : null,
assignees: (json['assignees'] as List<dynamic>?)
?.map((e) => Assignee.fromJson(e))
.toList() ??
[],
status: json['status'] != null ? Status.fromJson(json['status']) : null,
startDate: json['startDate'] as String?,
dueDate: json['dueDate'] as String?,
isActive: json['isActive'] as bool?,
taggingAction: json['taggingAction'],
attendanceId: json['attendanceId'] as String?,
nextTaggingAction: json['nextTaggingAction'] as int?,
createdAt: json['createdAt'] as String?,
createdBy: json['createdBy'] != null ? User.fromJson(json['createdBy']) : null,
tags: (json['tags'] as List<dynamic>?)
?.map((e) => Tag.fromJson(e))
.toList() ??
[],
updateLogs: (json['updateLogs'] as List<dynamic>?)
?.map((e) => UpdateLog.fromJson(e))
.toList() ??
[],
);
}
}
class Project {
final String? id;
final String? name;
final String? shortName;
final String? assignedDate;
final String? contactName;
final String? contactPhone;
final String? contactEmail;
Project({
this.id,
this.name,
this.shortName,
this.assignedDate,
this.contactName,
this.contactPhone,
this.contactEmail,
});
factory Project.fromJson(Map<String, dynamic>? json) {
if (json == null) return Project();
return Project(
id: json['id'] as String?,
name: json['name'] as String?,
shortName: json['shortName'] as String?,
assignedDate: json['assignedDate'] as String?,
contactName: json['contactName'] as String?,
contactPhone: json['contactPhone'] as String?,
contactEmail: json['contactEmail'] as String?,
);
}
}
class Assignee {
final String? id;
final String? firstName;
final String? lastName;
final String? email;
final String? photo;
final String? jobRoleId;
final String? jobRoleName;
Assignee({
this.id,
this.firstName,
this.lastName,
this.email,
this.photo,
this.jobRoleId,
this.jobRoleName,
});
factory Assignee.fromJson(Map<String, dynamic>? json) {
if (json == null) return Assignee();
return Assignee(
id: json['id'] as String?,
firstName: json['firstName'] as String?,
lastName: json['lastName'] as String?,
email: json['email'] as String?,
photo: json['photo'] as String?,
jobRoleId: json['jobRoleId'] as String?,
jobRoleName: json['jobRoleName'] as String?,
);
}
}
class Status {
final String? id;
final String? name;
final String? displayName;
final int? level;
Status({
this.id,
this.name,
this.displayName,
this.level,
});
factory Status.fromJson(Map<String, dynamic>? json) {
if (json == null) return Status();
return Status(
id: json['id'] as String?,
name: json['name'] as String?,
displayName: json['displayName'] as String?,
level: json['level'] as int?,
);
}
}
class User {
final String? id;
final String? firstName;
final String? lastName;
final String? email;
final String? photo;
final String? jobRoleId;
final String? jobRoleName;
User({
this.id,
this.firstName,
this.lastName,
this.email,
this.photo,
this.jobRoleId,
this.jobRoleName,
});
factory User.fromJson(Map<String, dynamic>? json) {
if (json == null) return User();
return User(
id: json['id'] as String?,
firstName: json['firstName'] as String?,
lastName: json['lastName'] as String?,
email: json['email'] as String?,
photo: json['photo'] as String?,
jobRoleId: json['jobRoleId'] as String?,
jobRoleName: json['jobRoleName'] as String?,
);
}
}
class Tag {
final String? id;
final String? name;
Tag({this.id, this.name});
factory Tag.fromJson(Map<String, dynamic>? json) {
if (json == null) return Tag();
return Tag(
id: json['id'] as String?,
name: json['name'] as String?,
);
}
}
class UpdateLog {
final String? id;
final Status? status;
final Status? nextStatus;
final String? comment;
final User? updatedBy;
UpdateLog({
this.id,
this.status,
this.nextStatus,
this.comment,
this.updatedBy,
});
factory UpdateLog.fromJson(Map<String, dynamic>? json) {
if (json == null) return UpdateLog();
return UpdateLog(
id: json['id'] as String?,
status: json['status'] != null ? Status.fromJson(json['status']) : null,
nextStatus: json['nextStatus'] != null ? Status.fromJson(json['nextStatus']) : null,
comment: json['comment'] as String?,
updatedBy: json['updatedBy'] != null ? User.fromJson(json['updatedBy']) : null,
);
}
}