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)
}),
});