import 'dart:convert'; /// ------------------------------ /// JSON Helpers /// ------------------------------ DetailModel detailModelFromJson(String str) => DetailModel.fromJson(json.decode(str)); String detailModelToJson(DetailModel data) => json.encode(data.toJson()); /// ------------------------------ /// Root Model /// ------------------------------ class DetailModel { final String? status; final DetailData? data; DetailModel({this.status, this.data}); factory DetailModel.fromJson(Map json) => DetailModel( status: json["status"], data: json["data"] == null ? null : DetailData.fromJson(json["data"]), ); Map toJson() => {"status": status, "data": data?.toJson()}; } /// ------------------------------ /// Detail Data Model /// ------------------------------ class DetailData { final int? id; final int? firmId; final String? dueDate; final String? service; final String? serviceStatus; final String? paymentStatus; final String? paidStatus; final String? paymentDate; final String? paymentAmount; final String? invoice; final String? invoiceNumber; final String? proforma; final int? proformaId; final String? proformaNumber; final String? proformaStatus; final String? createdDate; final String? createdTime; final String? createdBy; final String? message; final String? subject; final String? completedDate; final String? paidBy; final List userUploadedDocuments; final List userHandoverDocuments; final String? chatId; final String? completedChatId; DetailData({ this.id, this.firmId, this.dueDate, this.service, this.proformaStatus, this.serviceStatus, this.paymentStatus, this.paidStatus, this.paymentDate, this.paymentAmount, this.invoice, this.invoiceNumber, this.proforma, this.proformaId, this.proformaNumber, this.createdDate, this.createdTime, this.createdBy, this.message, this.subject, this.completedDate, this.paidBy, required this.userUploadedDocuments, required this.userHandoverDocuments, this.chatId, this.completedChatId, }); factory DetailData.fromJson(Map json) => DetailData( id: json["id"], firmId: json["firm_id"], dueDate: json["due_date"], service: json["service"], serviceStatus: json["service_status"], paymentStatus: json["payment_status"], proformaStatus: json["proforma_status"], paidStatus: json["paid_status"], paymentDate: json["payment_date"], paymentAmount: json["payment_amount"]?.toString(), invoice: json["invoice"], invoiceNumber: json["invoice_number"], proforma: json["proforma"], proformaId: json["proforma_id"], proformaNumber: json["proforma_number"], createdDate: json["created_date"], createdTime: json["created_time"], createdBy: json["created_by"], message: json["message"], subject: json["subject"], completedDate: json["completed_date"], paidBy: json["paid_by"], userUploadedDocuments: json["user_uploaded_documents"] == null ? [] : List.from( json["user_uploaded_documents"].map( (x) => UserUploadedDocument.fromJson(x), ), ), userHandoverDocuments: json["user_handover_documents"] == null ? [] : List.from( json["user_handover_documents"].map( (x) => UserHandoverDocument.fromJson(x), ), ), chatId: json["chat_id"]?.toString(), completedChatId: json["completed_chat_id"]?.toString(), ); Map toJson() => { "id": id, "firm_id": firmId, "due_date": dueDate, "service": service, "service_status": serviceStatus, "payment_status": paymentStatus, "paid_status": paidStatus, "payment_date": paymentDate, "payment_amount": paymentAmount, "invoice": invoice, "proforma_status": proformaStatus, "invoice_number": invoiceNumber, "proforma": proforma, "proforma_id": proformaId, "proforma_number": proformaNumber, "created_date": createdDate, "created_time": createdTime, "created_by": createdBy, "message": message, "subject": subject, "completed_date": completedDate, "paid_by": paidBy, "user_uploaded_documents": userUploadedDocuments .map((x) => x.toJson()) .toList(), "user_handover_documents": userHandoverDocuments .map((x) => x.toJson()) .toList(), "chat_id": chatId, "completed_chat_id": completedChatId, }; } /// ------------------------------ /// User Uploaded Document /// ------------------------------ class UserUploadedDocument { final int? id; final String? filePath; final String? fileName; final String? uploadedBy; final bool? viewable; UserUploadedDocument({ this.id, this.filePath, this.fileName, this.uploadedBy, this.viewable, }); factory UserUploadedDocument.fromJson(Map json) => UserUploadedDocument( id: json["id"], filePath: json["file_path"], fileName: json["file_name"], uploadedBy: json["uploaded_by"], viewable: json["viewable"], ); Map toJson() => { "id": id, "file_path": filePath, "file_name": fileName, "uploaded_by": uploadedBy, "viewable": viewable, }; } /// ------------------------------ /// User Handover Document /// ------------------------------ class UserHandoverDocument { final String? filePath; final String? fileName; UserHandoverDocument({this.filePath, this.fileName}); factory UserHandoverDocument.fromJson(Map json) => UserHandoverDocument( filePath: json["file_path"], fileName: json["file_name"], ); Map toJson() => { "file_path": filePath, "file_name": fileName, }; }