2025-08-07 14:50:40 +02:00
|
|
|
import { z } from "zod/v4";
|
2025-08-04 17:45:44 +02:00
|
|
|
import type {
|
2025-08-28 18:27:07 +02:00
|
|
|
NewPrezziario,
|
|
|
|
|
PrezziarioUpdate,
|
2025-08-04 17:45:44 +02:00
|
|
|
} from "~/schemas/public/Prezziario";
|
|
|
|
|
import TipologiaPosizioneEnum from "~/schemas/public/TipologiaPosizioneEnum";
|
|
|
|
|
import {
|
2025-08-28 18:27:07 +02:00
|
|
|
adminProcedure,
|
|
|
|
|
createTRPCRouter,
|
|
|
|
|
publicProcedure,
|
2025-08-04 17:45:44 +02:00
|
|
|
} from "~/server/api/trpc";
|
2025-08-27 12:33:14 +02:00
|
|
|
|
2025-08-04 17:45:44 +02:00
|
|
|
import { db } from "~/server/db";
|
|
|
|
|
import {
|
2025-08-28 18:27:07 +02:00
|
|
|
addPrezziario,
|
|
|
|
|
getPrezziario,
|
|
|
|
|
getPrezziarioByIdHandler,
|
|
|
|
|
getPrezziarioByTipologia,
|
|
|
|
|
getPrezziarioConsulenza,
|
|
|
|
|
updatePrezziario,
|
2025-08-04 17:45:44 +02:00
|
|
|
} from "~/server/services/prezziario.service";
|
|
|
|
|
import { zPrezziarioId } from "~/server/utils/zod_types";
|
|
|
|
|
// Create a new ratelimiter, that allows 10 requests per 10 seconds
|
|
|
|
|
/*
|
|
|
|
|
const ratelimit = new RateLimiterHandler({
|
|
|
|
|
maxRequests: 10,
|
|
|
|
|
windowSize: 60,
|
|
|
|
|
analytics: false,
|
|
|
|
|
});
|
|
|
|
|
*/
|
|
|
|
|
export const prezziarioRouter = createTRPCRouter({
|
2025-08-28 18:27:07 +02:00
|
|
|
addPrezziario: adminProcedure
|
|
|
|
|
.input(
|
|
|
|
|
z.object({
|
|
|
|
|
data: z.custom<NewPrezziario>(),
|
|
|
|
|
}),
|
|
|
|
|
)
|
|
|
|
|
.mutation(async ({ input }) => {
|
|
|
|
|
return await addPrezziario({ db, input: input.data });
|
|
|
|
|
}),
|
2026-03-05 12:32:03 +01:00
|
|
|
// deletePrezziario: adminProcedure
|
|
|
|
|
// .input(
|
|
|
|
|
// z.object({
|
|
|
|
|
// idprezziario: zPrezziarioId,
|
|
|
|
|
// }),
|
|
|
|
|
// )
|
|
|
|
|
// .mutation(async ({ input }) => {
|
|
|
|
|
// return await deletePrezziario({
|
|
|
|
|
// db,
|
|
|
|
|
// prezziarioId: input.idprezziario,
|
|
|
|
|
// });
|
|
|
|
|
// }),
|
2025-08-29 16:18:32 +02:00
|
|
|
getPrezziario: publicProcedure.query(async () => {
|
|
|
|
|
return await getPrezziario();
|
|
|
|
|
}),
|
|
|
|
|
getPrezziPerTipologia: publicProcedure
|
2025-08-28 18:27:07 +02:00
|
|
|
.input(
|
|
|
|
|
z.object({
|
2025-08-29 16:18:32 +02:00
|
|
|
tipologia: z.custom<TipologiaPosizioneEnum>(),
|
2025-08-28 18:27:07 +02:00
|
|
|
}),
|
|
|
|
|
)
|
2025-08-29 16:18:32 +02:00
|
|
|
.query(async ({ input }) => {
|
|
|
|
|
return await getPrezziarioByTipologia({
|
2025-08-28 18:27:07 +02:00
|
|
|
db,
|
2025-08-29 16:18:32 +02:00
|
|
|
tipologia: input.tipologia,
|
2025-08-28 18:27:07 +02:00
|
|
|
});
|
|
|
|
|
}),
|
2025-08-04 17:45:44 +02:00
|
|
|
|
2025-08-28 18:27:07 +02:00
|
|
|
getPrezziPerTipologiaAll: publicProcedure.query(async () => {
|
|
|
|
|
return {
|
2025-08-29 16:18:32 +02:00
|
|
|
consulenza: await getPrezziarioConsulenza({
|
2025-08-28 18:27:07 +02:00
|
|
|
db,
|
|
|
|
|
}),
|
|
|
|
|
stabile: await getPrezziarioByTipologia({
|
|
|
|
|
db,
|
|
|
|
|
tipologia: TipologiaPosizioneEnum.Stabile,
|
|
|
|
|
}),
|
2025-08-29 16:18:32 +02:00
|
|
|
transitorio: await getPrezziarioByTipologia({
|
2025-08-28 18:27:07 +02:00
|
|
|
db,
|
2025-08-29 16:18:32 +02:00
|
|
|
tipologia: TipologiaPosizioneEnum.Transitorio,
|
2025-08-28 18:27:07 +02:00
|
|
|
}),
|
|
|
|
|
};
|
|
|
|
|
}),
|
2025-08-29 16:18:32 +02:00
|
|
|
getPrezzoPerServizio: publicProcedure
|
|
|
|
|
.input(z.object({ idprezziario: zPrezziarioId }))
|
|
|
|
|
.query(async ({ input }) => {
|
2026-03-08 01:02:57 +01:00
|
|
|
return await getPrezziarioByIdHandler(input.idprezziario);
|
2025-08-29 16:18:32 +02:00
|
|
|
}),
|
|
|
|
|
updatePrezziario: adminProcedure
|
2025-08-28 18:27:07 +02:00
|
|
|
.input(
|
|
|
|
|
z.object({
|
2025-08-29 16:18:32 +02:00
|
|
|
data: z.custom<PrezziarioUpdate>(),
|
|
|
|
|
idprezziario: zPrezziarioId,
|
2025-08-28 18:27:07 +02:00
|
|
|
}),
|
|
|
|
|
)
|
2025-08-29 16:18:32 +02:00
|
|
|
.mutation(async ({ input }) => {
|
|
|
|
|
return await updatePrezziario({
|
2025-08-28 18:27:07 +02:00
|
|
|
db,
|
2025-08-29 16:18:32 +02:00
|
|
|
input: input.data,
|
|
|
|
|
prezziarioId: input.idprezziario,
|
2025-08-28 18:27:07 +02:00
|
|
|
});
|
|
|
|
|
}),
|
2025-08-04 17:45:44 +02:00
|
|
|
});
|