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