- Implement DailyTaskController for managing daily tasks and fetching projects. - Create TaskModel to represent task data structure. - Develop DailyTaskScreen for displaying tasks with filtering options. - Update routes to include Daily Task navigation. - Enhance DashboardScreen to link to Daily Task. - Add Daily Task option in the left navigation bar.
154 lines
3.7 KiB
Dart
154 lines
3.7 KiB
Dart
class TaskModel {
|
|
final String assignmentDate;
|
|
final WorkItem? workItem;
|
|
final int plannedTask;
|
|
final int completedTask;
|
|
final AssignedBy assignedBy;
|
|
final List<TeamMember> teamMembers;
|
|
final List<Comment> 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<String, dynamic> 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<String, dynamic> 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<String, dynamic> json) {
|
|
return ActivityMaster(activityName: json['activityName']);
|
|
}
|
|
}
|
|
|
|
class WorkArea {
|
|
final String areaName;
|
|
final Floor? floor;
|
|
|
|
WorkArea({required this.areaName, this.floor});
|
|
|
|
factory WorkArea.fromJson(Map<String, dynamic> 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<String, dynamic> 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<String, dynamic> json) {
|
|
return Building(name: json['name']);
|
|
}
|
|
}
|
|
|
|
class AssignedBy {
|
|
final String firstName;
|
|
final String? lastName;
|
|
|
|
AssignedBy({required this.firstName, this.lastName});
|
|
|
|
factory AssignedBy.fromJson(Map<String, dynamic> json) {
|
|
return AssignedBy(
|
|
firstName: json['firstName'],
|
|
lastName: json['lastName'],
|
|
);
|
|
}
|
|
}
|
|
|
|
class TeamMember {
|
|
final String firstName;
|
|
|
|
TeamMember({required this.firstName});
|
|
|
|
factory TeamMember.fromJson(Map<String, dynamic> json) {
|
|
return TeamMember(firstName: json['firstName']);
|
|
}
|
|
}
|
|
|
|
class Comment {
|
|
final String comment;
|
|
|
|
Comment({required this.comment});
|
|
|
|
factory Comment.fromJson(Map<String, dynamic> json) {
|
|
return Comment(comment: json['comment']);
|
|
}
|
|
}
|