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