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

Id Ordine: {data.ordine_id}

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

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({ data: { isActive: v === "true" }, ordineId, }); }} value={data.isActive ? "true" : "false"} > Attivo Non Attivo { remove({ ordineId }); }} title="Elimina ordine" >
)}
); };