import { add, differenceInDays, isBefore } from "date-fns"; import { ArrowRight, Clock, ClockAlert, XCircle } from "lucide-react"; import toast from "react-hot-toast"; import { Confirm } from "~/components/confirm"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "~/components/ui/alert-dialog"; import { Button } from "~/components/ui/button"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "~/components/ui/card"; import { Tooltip, TooltipContent, TooltipTrigger, } from "~/components/ui/tooltip"; import { useTranslation } from "~/providers/I18nProvider"; import { useServizio } from "~/providers/ServizioProvider"; import { api } from "~/utils/api"; export const DisclaimerInterruzioneServizio = () => { const { servizio, servizioId } = useServizio(); const { t } = useTranslation(); const utils = api.useUtils(); const { mutate: interrompiServizio } = api.servizio.interruzioneServizio.useMutation({ onError: (error) => { console.error(error); toast.error("Errore durante la richiesta di interruzione"); }, onSuccess: async () => { await utils.servizio.invalidate(); toast.success("Interruzione richiesta"); }, }); const { mutate: updateServizio } = api.servizio.updateServizio.useMutation({ onError: (error) => { console.error(error); toast.error("Errore"); }, onSuccess: async () => { await utils.servizio.invalidate(); }, }); if (!servizio.decorrenza) return null; return (

Sono passati {differenceInDays(new Date(), servizio.decorrenza)}{" "} giorni dall'inizio della tua ricerca

Hai trovato qualche immobile interessante?
Ricordati che{" "} se non intendi confermare nessun immobile, puoi interrompere la ricerca entro 14 giorni dalla decorrenza, evitando così di dover pagare il saldo del servizio acquistato.

Continua Continua a cercare casa

Avrai sempre modo di interrompere il servizio usando il pulsante relativo.

Interrompi Termina la tua ricerca ora
  • Terminazione immediata del servizio
  • Nessun addebito aggiuntivo applicato
{ interrompiServizio({ servizioId }); }} title={t.servizio.interruzione.title} >

Hai fino al{" "} {add(servizio.decorrenza, { days: servizio.interruzioneDays, }).toLocaleDateString("it-IT")}{" "} per interrompere il servizio senza costi aggiuntivi.
Se hai bisogno di assistenza, contattaci.

); }; export const InterruzioneServizio = () => { const { servizio, isAdmin } = useServizio(); const { t } = useTranslation(); const utils = api.useUtils(); const { mutate } = api.servizio.interruzioneServizio.useMutation({ onError: (error) => { console.error(error); toast.error("Errore durante la richiesta di interruzione"); }, onSuccess: async () => { await utils.servizio.invalidate(); toast.success("Interruzione richiesta"); }, }); if (!servizio.decorrenza) return null; const fineInterruzione = add(servizio.decorrenza, { days: servizio.interruzioneDays, }); const canInterrompere = !servizio.isInterrotto && (isAdmin || (isBefore(new Date(), fineInterruzione) && servizio.annunci.every((a) => a.accettato_conferma_at === null))); return ( {canInterrompere ? ( ) : (

Periodo di interruzione scaduto, contattaci.

)}
{t.servizio.interruzione.title}

Fine periodo di interruzione:{" "} {fineInterruzione.toLocaleDateString("it-IT")}

{t.servizio.interruzione.description}

{t.annulla} mutate({ servizioId: servizio.servizio_id })} > {t.conferma}
); };