import { ExternalLink, Eye, FileBadge, FileText, FolderKanban, PackageCheck, Pointer, Printer, Trash2, } from "lucide-react"; import Link from "next/link"; import { useRouter } from "next/router"; import toast from "react-hot-toast"; import { Button, type ButtonConfigs } from "~/components/ui/button"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "~/components/ui/tooltip"; import { cn } from "~/lib/utils"; import { useServizio, useServizioAnnuncio } from "~/providers/ServizioProvider"; import type { AnnunciId } from "~/schemas/public/Annunci"; import { api } from "~/utils/api"; import { Confirm } from "../confirm"; import { AdminLavoraConferma } from "./admin_conferma"; import { AdminContratto } from "./admin_contratto"; import { ConfermaAnnuncioModal, ConfermaInLavorazioneModal } from "./conferma"; import { ContattiProprietarioModal } from "./modale_contatti"; export const AdminActions = () => { const { servizioId, userId, isAdmin } = useServizio(); const { data, annuncioId } = useServizioAnnuncio(); const utils = api.useUtils(); const { mutate } = api.servizio.removeAnnuncioServizio.useMutation({ onError: (error) => { console.error(error); toast.error("Errore durante la rimozione dell'annuncio"); }, onSuccess: async () => { await utils.servizio.getAllServizioAnnunci.invalidate({ userId }); await utils.servizio.getCompatibileAnnunci.invalidate({ servizioId, }); toast.success("Annuncio rimosso"); }, }); if (!isAdmin) return null; return (
{data.user_confirmed_at != null && } {data.accettato_conferma_at != null && ( <> {data.gestionale_id && ( )} )} { mutate({ annuncioId, servizioId, }); }} title="Elimina annuncio" >
); }; export const UserActions = () => { const { servizioId } = useServizio(); const { data, annuncioId } = useServizioAnnuncio(); const ContattiSbloccati = data.open_contatti_at !== null; const ConfermaUtente = data.user_confirmed_at !== null; const ConfermaLavorata = data.doc_conferma_added && data.hasConfermaAdmin; const AccettatoConferma = data.accettato_conferma_at !== null; return ( <>
{ConfermaUtente ? !data.hasConfermaAdmin && : ContattiSbloccati && } {AccettatoConferma ? ( ) : ( ConfermaLavorata && (data.doc_conferma_ref ? ( ) : (

Il documento non è più disponibile

Se hai bisogno di una copia, contattaci via email o chat.

)) )}
{data.accettato_conferma_at != null && } ); }; const PostConfermaSection = () => { const { servizio, servizioId } = useServizio(); const { data, annuncioId } = useServizioAnnuncio(); const saldoPaid = servizio.isOkSaldo; const consulenzaPaid = servizio.isOkConsulenza; if (!saldoPaid) { return (

Questo annuncio è stato confermato, procedi al saldo:

); } if (!data.doc_contratto_added) { return (

Ci siamo quasi! Stiamo preparando il contratto per te.

Una volta pronto, riceverai una notifica via email.

); } return (

{consulenzaPaid ? "Il contratto è pronto, puoi visualizzarlo:" : "Il contratto è pronto, puoi visualizzarlo e procedere al saldo:"}

{data.doc_contratto_ref ? ( ) : (

Il documento non è più disponibile

Se hai bisogno di una copia, contattaci via email o chat.

)} {!consulenzaPaid && data.contratto_tipo && } {data.doc_registrazione_added && (data.doc_registrazione_ref ? ( ) : (

Il documento non è più disponibile

Se hai bisogno di una copia, contattaci via email o chat.

))}
); }; export const SaldoButton = ({ annuncioId, variant = "info", className, }: { annuncioId: AnnunciId; variant?: ButtonConfigs["variant"]; className?: string; }) => { const { servizioId } = useServizio(); const router = useRouter(); const { mutate } = api.servizio.setupSaldoServizio.useMutation({ onMutate: () => { toast.loading("Caricamento ...", { id: "preparazioneSaldo" }); }, onSuccess: async (data) => { toast.success("Pagamento saldo preparato", { id: "preparazioneSaldo", }); await router.push(`/servizio/pagamento/${data}`); }, }); return ( ); }; const SaldoConsulenzaButton = ({ variant = "info", className, }: { variant?: ButtonConfigs["variant"]; className?: string; }) => { const { annuncioId } = useServizioAnnuncio(); const { servizioId } = useServizio(); const router = useRouter(); const { mutate } = api.servizio.setupSaldoConsulenzaServizio.useMutation({ onMutate: () => { toast.loading("Caricamento ...", { id: "preparazioneSaldo" }); }, onSuccess: async (data) => { toast.success("Pagamento saldo preparato", { id: "preparazioneSaldo", }); await router.push(`/servizio/pagamento/${data}`); }, }); return ( ); };