import { UserId } from "@/server/user/domain/models"; import { FilterTasks, MonthlyActivity, ProjectTaskQueryResult, Task, TaskId, TasksByDate, User, WeeklyActivity, } from "../domain/models"; import { TaskService } from "./task-service-definition"; import { defaultTaskService } from "./task-service-impl"; import { UserService } from "@/server/user/application/service-definition"; import { defaultUserService } from "@/server/user/application/user-service-impl"; class TaskFacadeImpl { constructor( private taskService: TaskService, private userService: UserService ) {} async getAllTasks(filter: FilterTasks, userId?: UserId): Promise { try { return await this.taskService.getAllTasks(filter, userId); } catch (error) { console.log('error geting all tasks',error) throw new Error("Error getting all task"); } } async getUserCompleatedTasks(filter: FilterTasks): Promise{ return await this.taskService.getUserCompleatedTasks(filter) } getRecentModifiedTasks(): Promise { return this.taskService.getRecentModifiedTasks(); } getProjectTasks(filter: FilterTasks): Promise { return this.taskService.getProjectTasks(filter); } async createTask(input: Task, userId: UserId): Promise { try { return await this.taskService.createTask(input, userId); } catch (error) { throw error } } async updateTask( input: Partial, userId: UserId ): Promise> { let userAssigned: User | undefined = undefined; if (input?.userId) { userAssigned = await this.userService.getUserById(userId); } return this.taskService.updateTask( { ...input, user: userAssigned }, userId ); } deleteTask(taskId: TaskId, userId: UserId): Promise { return this.taskService.deleteTask(taskId, userId); } getUserWeeklyActivity(userId: UserId): Promise { return this.taskService.getUserWeeklyActivity(userId); } async getUserMonthActivity(userId: UserId): Promise { try { return await this.taskService.getUserMonthActivity(userId); } catch (error) { console.log('err getting month act',error) throw new Error('Error getting monthly activity') } } } export const taskServiceFacade = new TaskFacadeImpl( defaultTaskService, defaultUserService );