import 'dart:convert'; List expenseModelFromJson(String str) { final jsonData = json.decode(str); return List.from( jsonData["data"]["data"].map((x) => ExpenseModel.fromJson(x)) ); } String expenseModelToJson(List data) => json.encode(List.from(data.map((x) => x.toJson()))); class ExpenseModel { final String id; final Project project; final ExpenseType expensesType; final PaymentMode paymentMode; final PaidBy paidBy; final CreatedBy createdBy; final DateTime transactionDate; final DateTime createdAt; final String supplerName; final double amount; final Status status; final List nextStatus; final bool preApproved; ExpenseModel({ required this.id, required this.project, required this.expensesType, required this.paymentMode, required this.paidBy, required this.createdBy, required this.transactionDate, required this.createdAt, required this.supplerName, required this.amount, required this.status, required this.nextStatus, required this.preApproved, }); factory ExpenseModel.fromJson(Map json) => ExpenseModel( id: json["id"], project: Project.fromJson(json["project"]), expensesType: ExpenseType.fromJson(json["expensesType"]), paymentMode: PaymentMode.fromJson(json["paymentMode"]), paidBy: PaidBy.fromJson(json["paidBy"]), createdBy: CreatedBy.fromJson(json["createdBy"]), transactionDate: DateTime.parse(json["transactionDate"]), createdAt: DateTime.parse(json["createdAt"]), supplerName: json["supplerName"], amount: (json["amount"] as num).toDouble(), status: Status.fromJson(json["status"]), nextStatus: List.from( json["nextStatus"].map((x) => Status.fromJson(x))), preApproved: json["preApproved"], ); Map toJson() => { "id": id, "project": project.toJson(), "expensesType": expensesType.toJson(), "paymentMode": paymentMode.toJson(), "paidBy": paidBy.toJson(), "createdBy": createdBy.toJson(), "transactionDate": transactionDate.toIso8601String(), "createdAt": createdAt.toIso8601String(), "supplerName": supplerName, "amount": amount, "status": status.toJson(), "nextStatus": List.from(nextStatus.map((x) => x.toJson())), "preApproved": preApproved, }; } class Project { final String id; final String name; final String shortName; final String projectAddress; final String contactPerson; final DateTime startDate; final DateTime endDate; final String projectStatusId; Project({ required this.id, required this.name, required this.shortName, required this.projectAddress, required this.contactPerson, required this.startDate, required this.endDate, required this.projectStatusId, }); factory Project.fromJson(Map json) => Project( id: json["id"], name: json["name"], shortName: json["shortName"], projectAddress: json["projectAddress"], contactPerson: json["contactPerson"], startDate: DateTime.parse(json["startDate"]), endDate: DateTime.parse(json["endDate"]), projectStatusId: json["projectStatusId"], ); Map toJson() => { "id": id, "name": name, "shortName": shortName, "projectAddress": projectAddress, "contactPerson": contactPerson, "startDate": startDate.toIso8601String(), "endDate": endDate.toIso8601String(), "projectStatusId": projectStatusId, }; } class ExpenseType { final String id; final String name; final bool noOfPersonsRequired; final String description; ExpenseType({ required this.id, required this.name, required this.noOfPersonsRequired, required this.description, }); factory ExpenseType.fromJson(Map json) => ExpenseType( id: json["id"], name: json["name"], noOfPersonsRequired: json["noOfPersonsRequired"], description: json["description"], ); Map toJson() => { "id": id, "name": name, "noOfPersonsRequired": noOfPersonsRequired, "description": description, }; } class PaymentMode { final String id; final String name; final String description; PaymentMode({ required this.id, required this.name, required this.description, }); factory PaymentMode.fromJson(Map json) => PaymentMode( id: json["id"], name: json["name"], description: json["description"], ); Map toJson() => { "id": id, "name": name, "description": description, }; } class PaidBy { final String id; final String firstName; final String lastName; final String photo; final String jobRoleId; final String? jobRoleName; PaidBy({ required this.id, required this.firstName, required this.lastName, required this.photo, required this.jobRoleId, this.jobRoleName, }); factory PaidBy.fromJson(Map json) => PaidBy( id: json["id"], firstName: json["firstName"], lastName: json["lastName"], photo: json["photo"], jobRoleId: json["jobRoleId"], jobRoleName: json["jobRoleName"], ); Map toJson() => { "id": id, "firstName": firstName, "lastName": lastName, "photo": photo, "jobRoleId": jobRoleId, "jobRoleName": jobRoleName, }; } class CreatedBy { final String id; final String firstName; final String lastName; final String photo; final String jobRoleId; final String? jobRoleName; CreatedBy({ required this.id, required this.firstName, required this.lastName, required this.photo, required this.jobRoleId, this.jobRoleName, }); factory CreatedBy.fromJson(Map json) => CreatedBy( id: json["id"], firstName: json["firstName"], lastName: json["lastName"], photo: json["photo"], jobRoleId: json["jobRoleId"], jobRoleName: json["jobRoleName"], ); Map toJson() => { "id": id, "firstName": firstName, "lastName": lastName, "photo": photo, "jobRoleId": jobRoleId, "jobRoleName": jobRoleName, }; } class Status { final String id; final String name; final String displayName; final String description; final String color; final bool isSystem; Status({ required this.id, required this.name, required this.displayName, required this.description, required this.color, required this.isSystem, }); factory Status.fromJson(Map json) => Status( id: json["id"], name: json["name"], displayName: json["displayName"], description: json["description"], color: json["color"], isSystem: json["isSystem"], ); Map toJson() => { "id": id, "name": name, "displayName": displayName, "description": description, "color": color, "isSystem": isSystem, }; }