feat: update Servizio component to integrate AdminServizioActions and enhance user actions

This commit is contained in:
Marco Pedone 2026-03-20 13:54:29 +01:00
parent 8c7f0cd9b3
commit 8f662c56c1
3 changed files with 49 additions and 48 deletions

View file

@ -52,7 +52,7 @@ import {
import { SaldoButton } from "./annuncio_actions";
import { AnnuncioCard, AnnuncioDisplay } from "./annuncio_card";
import { AnnunciCompatibili } from "./compatibili_dialog";
import { ServizioInfos } from "./servizio_actions";
import { AdminServizioActions, ServizioInfos } from "./servizio_actions";
export const ServizioList = ({
data,
@ -317,8 +317,9 @@ const Content = () => {
</span>
</div>
</div>
<ServizioInfos />
<AdminServizioActions />
</div>
<ServizioInfos />
<Main />
</div>

View file

@ -59,7 +59,7 @@ import {
} from "~/forms/FormEditServizioAdmin";
import { FormNewOrder } from "~/forms/FormNewOrdine";
import { FormServizio, type FormValues } from "~/forms/FormServizio";
import { cn, formatCurrency } from "~/lib/utils";
import { formatCurrency } from "~/lib/utils";
import { useTranslation } from "~/providers/I18nProvider";
import { useServizio } from "~/providers/ServizioProvider";
import type { AnnunciId } from "~/schemas/public/Annunci";
@ -68,7 +68,6 @@ import TipologiaPosizioneEnum from "~/schemas/public/TipologiaPosizioneEnum";
import type { UsersId } from "~/schemas/public/Users";
import { api } from "~/utils/api";
import { Confirm } from "../confirm";
import { Separator } from "../ui/separator";
import {
Table,
TableBody,
@ -82,51 +81,52 @@ export const ServizioInfos = () => {
return (
<div className="grid w-full grid-cols-2 gap-2 sm:grid-cols-4">
<ServizioPrezzo />
<ServizioActions />
<UserActions />
{/* <ServizioActions /> */}
<ServizioOrders />
</div>
);
};
const ServizioActions = () => {
const { isAdmin } = useServizio();
return (
<Dialog>
<DialogTrigger asChild>
<Button className="flex-1" variant="outline">
<SlidersHorizontal />
<span>Impostazioni</span>
</Button>
</DialogTrigger>
<DialogContent className="sm:max-w-2xl">
<DialogHeader>
<DialogTitle>Azioni Servizio</DialogTitle>
<DialogDescription className="sr-only">
Azioni disponibili per questo servizio
</DialogDescription>
</DialogHeader>
<div className="flex flex-col items-center gap-4">
{isAdmin && (
<div className="w-full text-center">
<span>Azioni Admin</span>
<Separator />
</div>
)}
<AdminActions />
{isAdmin && (
<div className="w-full text-center">
<span>Azioni Utente</span>
<Separator />
</div>
)}
<UserActions />
</div>
</DialogContent>
</Dialog>
);
};
// const ServizioActions = () => {
// const { isAdmin } = useServizio();
// return (
// <Dialog>
// <DialogTrigger asChild>
// <Button className="flex-1" variant="outline">
// <SlidersHorizontal />
// <span>Impostazioni</span>
// </Button>
// </DialogTrigger>
// <DialogContent className="sm:max-w-2xl">
// <DialogHeader>
// <DialogTitle>Azioni Servizio</DialogTitle>
// <DialogDescription className="sr-only">
// Azioni disponibili per questo servizio
// </DialogDescription>
// </DialogHeader>
// <div className="flex flex-col items-center gap-4">
// {isAdmin && (
// <div className="w-full text-center">
// <span>Azioni Admin</span>
// <Separator />
// </div>
// )}
// <AdminServizioActions />
// {isAdmin && (
// <div className="w-full text-center">
// <span>Azioni Utente</span>
// <Separator />
// </div>
// )}
// <UserActions />
// </div>
// </DialogContent>
// </Dialog>
// );
// };
const AdminActions = () => {
export const AdminServizioActions = () => {
const { servizio, isAdmin, userId } = useServizio();
if (!isAdmin) return null;
return (
@ -137,7 +137,7 @@ const AdminActions = () => {
);
};
const UserActions = ({ className }: { className?: string }) => {
const UserActions = () => {
const { servizio, isAdmin } = useServizio();
const canUserEdit = servizio.isOkAcconto && servizio.decorrenza !== null;
@ -149,10 +149,10 @@ const UserActions = ({ className }: { className?: string }) => {
if (isAdmin || canUserEdit) {
return (
<div className={cn("flex flex-wrap items-center gap-2", className)}>
<>
<EditParametri />
<InterruzioneServizio />
</div>
</>
);
}
return null;
@ -676,7 +676,7 @@ const EditParametri = () => {
<CredenzaTrigger asChild>
<Button
aria-label="Parametri di ricerca"
className=""
className="w-full"
disabled={
!isAdmin &&
(servizio.isInterrotto ||

View file

@ -1336,7 +1336,7 @@ export const it: LangDict = {
},
parametri: {
title: "Parametri di ricerca",
btn: "Parametri",
btn: "Parametri ricerca",
},
interruzione: {
btn: "Interruzione",