marco.pms.mobileapp/lib/model/daily_task_model.dart
Vaibhav Surve db0b525e87 Add Daily Task feature with controller, model, and UI integration
- 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.
2025-05-12 11:13:22 +05:30

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']);
}
}