import toast from "react-hot-toast"; import type { Servizio, ServizioServizioId } from "~/schemas/public/Servizio"; import type { UsersId } from "~/schemas/public/Users"; import { api } from "~/utils/api"; import { LoadingPage } from "~/components/loading"; import { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow, } from "~/components/ui/table"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from "~/components/ui/dropdown-menu"; import { Copy, EllipsisVertical, ExternalLink, Mail, Trash2, Wrench, } from "lucide-react"; import { Button } from "~/components/ui/button"; import { Confirm } from "~/components/confirm"; import Link from "next/link"; import { env } from "~/env.mjs"; import type { AnnunciId } from "~/schemas/public/Annunci"; import { Tooltip, TooltipContent, TooltipTrigger, } from "~/components/ui/tooltip"; import { AddAnnuncio } from "~/components/servizio/servizio_actions"; export const TabServizio = ({ userId, setEditData, setOpen, }: { userId: UsersId; setEditData: (data: Servizio | undefined) => void; setOpen: (open: boolean) => void; }) => { const { data } = api.servizio.getUserServizi.useQuery({ userId }); const utils = api.useUtils(); const { mutate: remove } = api.servizio.deleteServizio.useMutation({ onSuccess: async () => { toast.success("Servizio rimosso con successo"); await utils.servizio.getUserServizi.invalidate(); }, onError: (error) => { toast.error(error.message); }, }); const { mutate: sendEmail } = api.servizio.sendServizioEmail.useMutation({ onSuccess: async () => { toast.success("Servizio rimosso con successo"); await utils.servizio.getUserServizi.invalidate(); }, onError: (error) => { toast.error(error.message); }, }); const { mutate: update } = api.servizio.updateServizio.useMutation({ onSuccess: async () => { toast.success("Servizio modificato con successo"); await utils.servizio.getUserServizi.invalidate(); }, onError: (error) => { toast.error(error.message); }, }); if (!data) return ; return ( {data.length > 0 ? "Lista dai servizi dell'utente" : "Nessun servizio attualmente inserito"} Id Tipologia Creato Il Inviato Status {data.map((servizio, idx) => { const onboardDone = servizio.isSent || servizio.isInterrotto || servizio.isOkAcconto || servizio.decorrenza !== null; return ( {servizio.servizio_id} {servizio.tipologia} {new Date(servizio.created_at).toLocaleDateString("it-IT", { year: "numeric", month: "2-digit", day: "2-digit", })} {servizio.isSent ? ( Inviato ) : ( Non inviato )} {servizio.isInterrotto ? ( Interrotto ) : servizio.isOkAcconto && servizio.decorrenza !== null ? ( Attivo ) : ( Inattivo )} { sendEmail({ servizioId: servizio.servizio_id, userId: userId, }); }} > Status Servizio { console.log(v); update({ servizioId: servizio.servizio_id, data: { isOkAcconto: v === "true", decorrenza: v === "true" ? new Date() : null, }, }); }} > Attivo Disattiva Interruzione { update({ servizioId: servizio.servizio_id, data: { isInterrotto: v === "true", }, }); }} > Interrotto Non Interrotto { setEditData(servizio); setOpen(true); }} > Modifica parametri confirm("Sei sicuro di voler eliminare il servizio?") && remove({ servizioId: servizio.servizio_id }) } > Elimina Servizio ); })}
); }; const AnnunciSection = ({ selectedAnnunci, servizioId, userId, }: { selectedAnnunci: { codice: string; annunci_id: AnnunciId }[]; servizioId: ServizioServizioId; userId: UsersId; }) => { return (
{selectedAnnunci?.length} {selectedAnnunci?.length > 0 ? (
    {selectedAnnunci?.map((annuncio) => (
  • {annuncio.codice}
  • ))}
) : ( Nessun annuncio associato )}
); };