class TaskModel { final String assignmentDate; final WorkItem? workItem; final int plannedTask; final int completedTask; final AssignedBy assignedBy; final List teamMembers; final List comments; // Remove plannedWork and completedWork from direct properties int get plannedWork => workItem?.plannedWork ?? 0; int get completedWork => workItem?.completedWork ?? 0; TaskModel({ required this.assignmentDate, required this.workItem, required this.plannedTask, required this.completedTask, required this.assignedBy, required this.teamMembers, required this.comments, }); factory TaskModel.fromJson(Map json) { final workItemJson = json['workItem']; final workItem = workItemJson != null ? WorkItem.fromJson(workItemJson) : null; return TaskModel( assignmentDate: json['assignmentDate'], workItem: workItem, plannedTask: json['plannedTask'], completedTask: json['completedTask'], assignedBy: AssignedBy.fromJson(json['assignedBy']), teamMembers: (json['teamMembers'] as List) .map((e) => TeamMember.fromJson(e)) .toList(), comments: (json['comments'] as List) .map((e) => Comment.fromJson(e)) .toList(), ); } } class WorkItem { final ActivityMaster? activityMaster; final WorkArea? workArea; // Add plannedWork and completedWork as properties of WorkItem final int? plannedWork; final int? completedWork; WorkItem({ this.activityMaster, this.workArea, this.plannedWork, this.completedWork, }); factory WorkItem.fromJson(Map json) { return WorkItem( activityMaster: json['activityMaster'] != null ? ActivityMaster.fromJson(json['activityMaster']) : null, workArea: json['workArea'] != null ? WorkArea.fromJson(json['workArea']) : null, plannedWork: json['plannedWork'], completedWork: json['completedWork'], ); } } class ActivityMaster { final String activityName; ActivityMaster({required this.activityName}); factory ActivityMaster.fromJson(Map json) { return ActivityMaster(activityName: json['activityName']); } } class WorkArea { final String areaName; final Floor? floor; WorkArea({required this.areaName, this.floor}); factory WorkArea.fromJson(Map json) { return WorkArea( areaName: json['areaName'], floor: json['floor'] != null ? Floor.fromJson(json['floor']) : null, ); } } class Floor { final String floorName; final Building? building; Floor({required this.floorName, this.building}); factory Floor.fromJson(Map json) { return Floor( floorName: json['floorName'], building: json['building'] != null ? Building.fromJson(json['building']) : null, ); } } class Building { final String name; Building({required this.name}); factory Building.fromJson(Map json) { return Building(name: json['name']); } } class AssignedBy { final String firstName; final String? lastName; AssignedBy({required this.firstName, this.lastName}); factory AssignedBy.fromJson(Map json) { return AssignedBy( firstName: json['firstName'], lastName: json['lastName'], ); } } class TeamMember { final String firstName; TeamMember({required this.firstName}); factory TeamMember.fromJson(Map json) { return TeamMember(firstName: json['firstName']); } } class Comment { final String comment; Comment({required this.comment}); factory Comment.fromJson(Map json) { return Comment(comment: json['comment']); } }