feat: add isAdmin parameter to interruzioneServizio and update related components

This commit is contained in:
Marco Pedone 2026-03-31 09:24:22 +02:00
parent a11fc1241c
commit aec6860cbd
3 changed files with 22 additions and 7 deletions

View file

@ -135,7 +135,7 @@ export const DisclaimerInterruzioneServizio = () => {
<Confirm
description={t.servizio.interruzione.description}
onConfirm={() => {
interrompiServizio({ servizioId });
interrompiServizio({ servizioId, isAdmin: false });
}}
title={t.servizio.interruzione.title}
>
@ -177,7 +177,16 @@ export const InterruzioneServizio = () => {
toast.success("Interruzione richiesta");
},
});
if (!servizio.decorrenza) return null;
if (!servizio.decorrenza)
return (
<Button
aria-label="Request Interruzione"
className="w-full"
disabled={true}
>
<ClockAlert /> <span>{t.servizio.interruzione.btn}</span>
</Button>
);
const fineInterruzione = add(servizio.decorrenza, {
days: servizio.interruzioneDays,
});
@ -238,7 +247,9 @@ export const InterruzioneServizio = () => {
<AlertDialogCancel>{t.annulla}</AlertDialogCancel>
<AlertDialogAction
aria-label="Confirm Interruzione"
onClick={() => mutate({ servizioId: servizio.servizio_id })}
onClick={() =>
mutate({ servizioId: servizio.servizio_id, isAdmin })
}
>
{t.conferma}
</AlertDialogAction>

View file

@ -244,10 +244,11 @@ export const servizioRouter = createTRPCRouter({
.input(
z.object({
servizioId: zServizioId,
isAdmin: z.boolean(),
}),
)
.mutation(async ({ input }) => {
return await interruzioneServizio(input.servizioId);
return await interruzioneServizio(input.servizioId, input.isAdmin);
}),
processServizioOnboard: protectedProcedure

View file

@ -889,7 +889,10 @@ export const SbloccaContatti = async ({
}
};
export const interruzioneServizio = async (servizioId: ServizioServizioId) => {
export const interruzioneServizio = async (
servizioId: ServizioServizioId,
isAdmin: boolean,
) => {
try {
const servizio = await getServizioById(servizioId);
@ -918,8 +921,8 @@ export const interruzioneServizio = async (servizioId: ServizioServizioId) => {
days: servizio.interruzioneDays,
}),
);
if (!isWithinRipensamento) {
//se non è admin deve essere entro il periodo di ripensamento per poter interrompere il servizio
if (!isWithinRipensamento && !isAdmin) {
throw new TRPCError({
code: "BAD_REQUEST",
message: "Periodo di ripensamento scaduto",