task-managment / src / server / routers / areas.ts
areas.ts
Raw
import {
  router,
  publicProcedure,
  isAdminMiddleware,
} from "../trpc";
import { z } from "zod";
import { projectAreaSchema } from "@/lib/schemas/projectAreaSchema";
import { v4 as uuidv4 } from 'uuid';
import { projectServiceFacade } from "../project/application/facade";



export const areasRouter = router({
  createProjectArea: publicProcedure
    .use(isAdminMiddleware)
    .input(projectAreaSchema.extend({
      id:z.string().default(()=>uuidv4())
    }))
    .mutation(async ({ input, ctx }) => {
      const {projectId,...rest}=input
      const userId={value:ctx.user.userId}
     return await projectServiceFacade.createProjectArea(input as any,userId)
    }),
  updateProjectArea: publicProcedure
    .use(isAdminMiddleware)
    .input(projectAreaSchema.partial().extend({
      id:z.string().uuid({message:'area id not valid'})
    }))
    .mutation(async ({ input, ctx }) => {
      const userId={value:ctx.user.userId}
      return await projectServiceFacade.updateProjectArea(input as any,userId)
    }),
  deleteProjectArea: publicProcedure
    .use(isAdminMiddleware)
    .input(
      z.object({
        id: z.string().uuid(),
      })
    )
    .mutation(async ({ input, ctx }) => {
      const { id } = input;
      const areaId={value:id}
      const userId={value:ctx.user.userId}
      return await projectServiceFacade.deleteProjectArea(areaId,userId)
    }),
});