import { router, publicProcedure, isSigninMiddleware, isAdminMiddleware, } from "../trpc"; import { z } from "zod"; import { paramsSchema } from "./projects"; import { taskServiceFacade } from "../task/application/facade"; import { createTaskSchema, updateTaskSchema } from "@/lib/schemas/taskSchema"; export const taskRouter = router({ getProjectTasks: publicProcedure .input(paramsSchema) .query(async ({ input, ctx }) => { return await taskServiceFacade.getProjectTasks(input as any); }), getRecentModifiedTasks: publicProcedure .use(isSigninMiddleware) .query(async ({ ctx }) => { return await taskServiceFacade.getRecentModifiedTasks(); }), getTasks: publicProcedure .use(isSigninMiddleware) .input( z.object({ status: z .enum(["pendiente", "expirada", "completada"]) .optional() .default("pendiente"), searchQuery: z.string().optional().default(""), limit: z.number().default(50).optional(), onlyUserTask: z.boolean().optional(), onlyRecentModifiedTask: z.boolean().optional(), }) ) .query(async ({ input, ctx }) => { const userId={value:ctx.user.userId} return await taskServiceFacade.getAllTasks(input,userId) }), createTask: publicProcedure .use(isAdminMiddleware) .input(createTaskSchema) .mutation(async ({ input, ctx }) => { const userId={value:ctx.user.userId} return await taskServiceFacade.createTask(input,userId) }), updateTask: publicProcedure .use(isSigninMiddleware) .input(updateTaskSchema) .mutation(async ({ input, ctx }) => { const userId={value:ctx.user.userId} return await taskServiceFacade.updateTask(input,userId) }), deleteTask: publicProcedure .use(isAdminMiddleware) .input( z.object({ value: z.string().uuid(), }) ) .mutation(async ({ input, ctx }) => { const userId={value:ctx.user.userId} return await taskServiceFacade.deleteTask(input,userId) }), });