import { Credenza, CredenzaContent, CredenzaHeader, CredenzaTitle, CredenzaDescription, CredenzaBody, CredenzaFooter, CredenzaClose, } from "~/components/custom_ui/credenza"; import { PaymentsTable } from "~/components/tables/payments-table"; import type { OrdiniOrdineId } from "~/schemas/public/Ordini"; import { api } from "~/utils/api"; import { Confirm } from "~/components/confirm"; import { Button } from "~/components/ui/button"; import { CircleCheck, CircleSlash, ReceiptText, Trash2 } from "lucide-react"; import toast from "react-hot-toast"; import type { UsersId } from "~/schemas/public/Users"; import { cn } from "~/lib/utils"; import { DropdownMenu, DropdownMenuContent, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "~/components/ui/dropdown-menu"; import PaymentStatusEnum from "~/schemas/public/PaymentStatusEnum"; import Link from "next/link"; import OrderTypeEnum from "~/schemas/public/OrderTypeEnum"; export const OrdiniModal = ({ isAdmin, open, setModalOpen, ordineId, userId, }: { isAdmin: boolean; open: boolean; setModalOpen: (open: boolean) => void; ordineId: OrdiniOrdineId; userId: UsersId | undefined; }) => { const utils = api.useUtils(); const { mutate: remove } = api.servizio.removeOrder.useMutation({ onSuccess: async () => { toast.success("Ordine rimosso con successo!"); await utils.servizio.getOrdini.invalidate({ userId, }); setModalOpen(false); }, onError: (error) => { toast.error(`Errore durante la rimozione ordine: ${error.message}`); }, }); const { mutate: update } = api.servizio.updateOrder.useMutation({ onSuccess: async (data) => { if (data.type === OrderTypeEnum.Acconto && data.isActive) { updateServizio({ servizioId: data.servizio_id, data: { isOkAcconto: true, decorrenza: new Date(), }, }); } toast.success("Ordine aggiornato con successo!"); await utils.servizio.getOrdini.invalidate({ userId, }); await utils.servizio.getOrdineById.invalidate({ ordineId, }); }, onError: (error) => { toast.error(`Errore durante la modifica: ${error.message}`); }, }); const { mutate: updateServizio } = api.servizio.updateServizio.useMutation({ onSuccess: async () => { toast.success("Servizio modificato con successo"); await utils.servizio.getUserServizi.invalidate(); }, onError: (error) => { toast.error(error.message); }, }); const { data } = api.servizio.getOrdineById.useQuery({ ordineId, }); if (!data) return null; return ( { setModalOpen(b); }} > Dettagli Ordine Visualizza i dettagli e i pagamenti associati.

Id Ordine: {data.ordine_id}

Data Ordine: {new Date(data.created_at).toLocaleDateString("it-IT", { year: "numeric", month: "2-digit", day: "2-digit", })}

Tipologia: {data.type.toString()}

Pack ID: {data.packid}

Stato:{" "} {data.isActive ? ( Attivo ) : ( Non Attivo )}

{data.isActive && data.pagamenti.find( (p) => p.paymentstatus === PaymentStatusEnum.success, ) && (
)}
{isAdmin && (
Status { update({ ordineId, data: { isActive: v === "true" }, }); }} > Attivo Non Attivo { remove({ ordineId }); }} >
)}
); };