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