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

242 lines
6.5 KiB
Dart

class ServiceProjectDetailModel {
final bool success;
final String message;
final ProjectDetail? data;
final dynamic errors;
final int statusCode;
final DateTime timestamp;
ServiceProjectDetailModel({
required this.success,
required this.message,
this.data,
this.errors,
required this.statusCode,
required this.timestamp,
});
factory ServiceProjectDetailModel.fromJson(Map<String, dynamic> json) {
return ServiceProjectDetailModel(
success: json['success'] ?? false,
message: json['message'] ?? '',
data: json['data'] != null ? ProjectDetail.fromJson(json['data']) : null,
errors: json['errors'],
statusCode: json['statusCode'] ?? 0,
timestamp: DateTime.parse(json['timestamp'] ?? DateTime.now().toIso8601String()),
);
}
Map<String, dynamic> toJson() => {
'success': success,
'message': message,
'data': data?.toJson(),
'errors': errors,
'statusCode': statusCode,
'timestamp': timestamp.toIso8601String(),
};
}
class ProjectDetail {
final String id;
final String name;
final String shortName;
final String address;
final DateTime assignedDate;
final Status? status;
final Client? client;
final List<Service>? services;
final int numberOfJobs;
final String contactName;
final String contactPhone;
final String contactEmail;
final DateTime createdAt;
final User? createdBy;
final DateTime updatedAt;
final User? updatedBy;
ProjectDetail({
required this.id,
required this.name,
required this.shortName,
required this.address,
required this.assignedDate,
this.status,
this.client,
this.services,
required this.numberOfJobs,
required this.contactName,
required this.contactPhone,
required this.contactEmail,
required this.createdAt,
this.createdBy,
required this.updatedAt,
this.updatedBy,
});
factory ProjectDetail.fromJson(Map<String, dynamic> json) {
return ProjectDetail(
id: json['id'] ?? '',
name: json['name'] ?? '',
shortName: json['shortName'] ?? '',
address: json['address'] ?? '',
assignedDate: DateTime.parse(json['assignedDate'] ?? DateTime.now().toIso8601String()),
status: json['status'] != null ? Status.fromJson(json['status']) : null,
client: json['client'] != null ? Client.fromJson(json['client']) : null,
services: json['services'] != null
? List<Service>.from(json['services'].map((x) => Service.fromJson(x)))
: [],
numberOfJobs: json['numberOfJobs'] ?? 0,
contactName: json['contactName'] ?? '',
contactPhone: json['contactPhone'] ?? '',
contactEmail: json['contactEmail'] ?? '',
createdAt: DateTime.parse(json['createdAt'] ?? DateTime.now().toIso8601String()),
createdBy: json['createdBy'] != null ? User.fromJson(json['createdBy']) : null,
updatedAt: DateTime.parse(json['updatedAt'] ?? DateTime.now().toIso8601String()),
updatedBy: json['updatedBy'] != null ? User.fromJson(json['updatedBy']) : null,
);
}
Map<String, dynamic> toJson() => {
'id': id,
'name': name,
'shortName': shortName,
'address': address,
'assignedDate': assignedDate.toIso8601String(),
'status': status?.toJson(),
'client': client?.toJson(),
'services': services?.map((x) => x.toJson()).toList(),
'numberOfJobs': numberOfJobs,
'contactName': contactName,
'contactPhone': contactPhone,
'contactEmail': contactEmail,
'createdAt': createdAt.toIso8601String(),
'createdBy': createdBy?.toJson(),
'updatedAt': updatedAt.toIso8601String(),
'updatedBy': updatedBy?.toJson(),
};
}
class Status {
final String id;
final String status;
Status({required this.id, required this.status});
factory Status.fromJson(Map<String, dynamic> json) =>
Status(id: json['id'] ?? '', status: json['status'] ?? '');
Map<String, dynamic> toJson() => {'id': id, 'status': status};
}
class Client {
final String id;
final String name;
final String? email;
final String? contactPerson;
final String? address;
final String? contactNumber;
final int? sprid;
Client({
required this.id,
required this.name,
this.email,
this.contactPerson,
this.address,
this.contactNumber,
this.sprid,
});
factory Client.fromJson(Map<String, dynamic> json) => Client(
id: json['id'] ?? '',
name: json['name'] ?? '',
email: json['email'],
contactPerson: json['contactPerson'],
address: json['address'],
contactNumber: json['contactNumber'],
sprid: json['sprid'],
);
Map<String, dynamic> toJson() => {
'id': id,
'name': name,
'email': email,
'contactPerson': contactPerson,
'address': address,
'contactNumber': contactNumber,
'sprid': sprid,
};
}
class Service {
final String id;
final String name;
final String? description;
final bool isSystem;
final bool isActive;
Service({
required this.id,
required this.name,
this.description,
required this.isSystem,
required this.isActive,
});
factory Service.fromJson(Map<String, dynamic> json) => Service(
id: json['id'] ?? '',
name: json['name'] ?? '',
description: json['description'],
isSystem: json['isSystem'] ?? false,
isActive: json['isActive'] ?? false,
);
Map<String, dynamic> toJson() => {
'id': id,
'name': name,
'description': description,
'isSystem': isSystem,
'isActive': isActive,
};
}
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,
this.photo,
this.jobRoleId,
this.jobRoleName,
});
factory User.fromJson(Map<String, dynamic> json) => User(
id: json['id'] ?? '',
firstName: json['firstName'] ?? '',
lastName: json['lastName'] ?? '',
email: json['email'] ?? '',
photo: json['photo'],
jobRoleId: json['jobRoleId'],
jobRoleName: json['jobRoleName'],
);
Map<String, dynamic> toJson() => {
'id': id,
'firstName': firstName,
'lastName': lastName,
'email': email,
'photo': photo,
'jobRoleId': jobRoleId,
'jobRoleName': jobRoleName,
};
}