238 lines
5.5 KiB
Dart
238 lines
5.5 KiB
Dart
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<String, dynamic> 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<JobEntity>? data;
|
|
|
|
JobData({
|
|
required this.currentPage,
|
|
required this.totalPages,
|
|
required this.totalEntities,
|
|
this.data,
|
|
});
|
|
|
|
factory JobData.fromJson(Map<String, dynamic> json) {
|
|
return JobData(
|
|
currentPage: json['currentPage'] ?? 0,
|
|
totalPages: json['totalPages'] ?? 0,
|
|
totalEntities: json['totalEntities'] ?? 0,
|
|
data: (json['data'] as List<dynamic>?)
|
|
?.map((e) => JobEntity.fromJson(e))
|
|
.toList(),
|
|
);
|
|
}
|
|
}
|
|
|
|
class JobEntity {
|
|
final String id;
|
|
final String title;
|
|
final String description;
|
|
final Project project;
|
|
final List<Assignee>? assignees;
|
|
final Status status;
|
|
final String startDate;
|
|
final String dueDate;
|
|
final bool isActive;
|
|
final String createdAt;
|
|
final CreatedBy createdBy;
|
|
final List<Tag>? 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<String, dynamic> json) {
|
|
return JobEntity(
|
|
id: json['id'] ?? '',
|
|
title: json['title'] ?? '',
|
|
description: json['description'] ?? '',
|
|
project: Project.fromJson(json['project']),
|
|
assignees: (json['assignees'] as List<dynamic>?)
|
|
?.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<dynamic>?)
|
|
?.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<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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<String, dynamic> json) {
|
|
return Tag(
|
|
id: json['id'] ?? '',
|
|
name: json['name'] ?? '',
|
|
);
|
|
}
|
|
}
|