import { add, formatDuration, intervalToDuration } from "date-fns"; import { it } from "date-fns/locale"; import { ArrowRight, CalendarClock, Clock, PackageCheck } from "lucide-react"; import Link from "next/link"; import { useRouter } from "next/router"; import { useState } from "react"; import toast from "react-hot-toast"; import { Button } from "~/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from "~/components/ui/dialog"; import { FormRinnovo } from "~/forms/FormRinnovo"; import { useRinnovo } from "~/providers/RinnovoProvider"; import OrderTypeEnum from "~/schemas/public/OrderTypeEnum"; import type { UsersId } from "~/schemas/public/Users"; import { api } from "~/utils/api"; export const Rinnovo = () => { const { rinnovo, isAdmin } = useRinnovo(); const hasPaid = rinnovo.ordini .filter((o) => o.type === OrderTypeEnum.Rinnovo) .find((o) => o.isActive); return (

Rinnovo permanenza {rinnovo.codice}

Decorrenza: {rinnovo.decorrenza.toLocaleDateString("it-IT")}
Scadenza: {rinnovo.scadenza.toLocaleDateString("it-IT")}

Permanenza:{" "} {formatDuration( intervalToDuration({ start: new Date(rinnovo.decorrenza), end: add(new Date(rinnovo.scadenza), { days: 1 }), }), { locale: it, format: ["years", "months", "days"] }, )}

{isAdmin && }
{hasPaid ? (

Pagamento ricevuto!

) : (
)}
); }; const EditRinnovoModal = () => { const { rinnovo, userId } = useRinnovo(); const utils = api.useUtils(); const router = useRouter(); const { mutate: edit } = api.servizio.updateRinnovo.useMutation({ onError: (error) => { toast.error(error.message); }, onSuccess: async () => { toast.success("Rinnovo modificato con successo"); await utils.servizio.invalidate(); }, }); const { mutate: remove } = api.servizio.removeRinnovo.useMutation({ onError: (error) => { toast.error(error.message); }, onMutate: async () => { await router.push(`/area-riservata/admin/user-view/ricerca/${userId}`); }, onSuccess: async () => { toast.success("Rinnovo modificato con successo"); await utils.servizio.invalidate(); }, }); return ( Modifica Rinnovo desc remove({ rinnovoId: rinnovo.id })} onSubmit={(v) => edit({ rinnovoId: rinnovo.id, data: v })} /> ); }; export const NewRinnovoModal = ({ userId }: { userId: UsersId }) => { const [open, setOpen] = useState(false); const utils = api.useUtils(); const { mutate: add } = api.servizio.createRinnovo.useMutation({ onError: (error) => { toast.error(error.message); }, onSuccess: async () => { toast.success("Rinnovo creato con successo"); await utils.servizio.invalidate(); setOpen(false); }, }); return ( Creazione Rinnovo desc add({ data: { userId, ...v } })} /> ); };