class TaskModel { final String assignmentDate; final String id; final WorkItem? workItem; final String workItemId; final int plannedTask; final int completedTask; final AssignedBy assignedBy; final List teamMembers; final List comments; int get plannedWork => workItem?.plannedWork ?? 0; int get completedWork => workItem?.completedWork ?? 0; TaskModel({ required this.assignmentDate, required this.id, required this.workItem, required this.workItemId, 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'], id: json['id'] ?? '', workItemId: json['workItemId'], 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; 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; final String? lastName; TeamMember({required this.firstName, this.lastName}); factory TeamMember.fromJson(Map json) { return TeamMember( firstName: json['firstName'], lastName: json['lastName'], ); } } class Comment { final String comment; final TeamMember commentedBy; final String timestamp; Comment({ required this.comment, required this.commentedBy, required this.timestamp, }); factory Comment.fromJson(Map json) { return Comment( comment: json['comment'], commentedBy: TeamMember.fromJson(json['employee']), timestamp: json['commentDate'], ); } }