import { format } from "date-fns"; import { ExternalLink, Mail, MessagesSquare, Paperclip, Search, ShoppingBag, Tickets, UserCog, UserPen, } from "lucide-react"; import Link from "next/link"; import { usePathname } from "next/navigation"; import { useRouter } from "next/router"; import toast from "react-hot-toast"; import { useUserViewContext } from "~/lib/userViewContext"; import { api } from "~/utils/api"; import { WhatsAppIcon2 } from "../svgs"; import { Button } from "../ui/button"; import { Separator } from "../ui/separator"; export const UserViewHeader = () => { const data = useUserViewContext(); const pathname = usePathname(); const router = useRouter(); const { mutate: swap } = api.auth.swapUser.useMutation({ onSuccess: async () => { toast.success("Utente cambiato con successo"); await router.push("/area-riservata/dashboard"); router.reload(); }, }); if (!data) return
Errore
; return (
{data.username}
{data.codice_fiscale ? ( ) : ( )}
); }; const VOCALI = ["A", "E", "I", "O", "U"] as const; const IntestazioneMaker = () => { const data = useUserViewContext(); const { data: comuni = [] } = api.catasto.searchComuniByCatasto.useQuery({ catasto: [data?.luogo_nascita || "", data?.comune_residenza || ""].filter( (f) => f !== "", ), }); const isDisabled = !data.sesso || !data.cognome || !data.nome || !data.data_nascita || !data.luogo_nascita || !data.comune_residenza || !data.via_residenza || !data.civico_residenza; const copyToClipboard = () => { if ( !data.sesso || !data.cognome || !data.nome || !data.data_nascita || !data.luogo_nascita || !data.comune_residenza || !data.via_residenza || !data.civico_residenza ) { toast.error("Dati mancanti"); return; } const comune_nascita = comuni.find((c) => c.catasto === data.luogo_nascita); const comune_residenza = comuni.find( (c) => c.catasto === data.comune_residenza, ); if (!comune_nascita || !comune_residenza) { toast.error("Errore comune non trovato"); return; } // Format names const cognome = titleCase(data.cognome); const nome = titleCase(data.nome); const viaResidenza = titleCase(data.via_residenza); const comuneNascita = titleCase(comune_nascita.nome); const comuneResidenza = titleCase(comune_residenza.nome); // Determine article const isMale = data.sesso === "M"; const articolo = isMale ? "Al Sig." : "Alla Sig.ra"; const natoNata = isMale ? "nato" : "nata"; const preposizione = VOCALI.includes(comuneNascita[0]?.toUpperCase() || "") ? "ad" : "a"; // Build phrase const frase = [ `${articolo} ${cognome} ${nome}`, `${natoNata} il ${format(data.data_nascita, "dd/MM/yyyy")}`, `${preposizione} ${comuneNascita} (${comune_nascita.sigla}),`, `residente in ${viaResidenza}, ${data.civico_residenza}`, `a ${comuneResidenza} (${data.provincia_residenza})`, `CAP ${data.cap_residenza},`, `con codice fiscale: ${data.codice_fiscale}`, ].join(" "); navigator.clipboard .writeText(frase) .then(() => { toast.success("Intestazione copiata negli appunti"); }) .catch(() => { toast.error("Errore nella copia"); }); }; return ( ); }; function titleCase(str: string | null | undefined): string { if (!str) return ""; return str .trim() .toLowerCase() .split(/\s+/) // Handle multiple spaces .map((word) => { if (word.length === 0) return word; return word.charAt(0).toUpperCase() + word.slice(1); }) .join(" "); }