import { ArrowRight, Package, PackageCheck } from "lucide-react"; import Link from "next/link"; import { useRouter } from "next/router"; import { useEffect } from "react"; import toast from "react-hot-toast"; import { AnnuncioCard } from "~/components/servizio/annuncio_card"; import { SaldoButton } from "~/components/servizio/interactions"; import { ServizioActions } from "~/components/servizio/servizio_actions"; import { Button } from "~/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "~/components/ui/card"; import { cn } from "~/lib/utils"; import { ServizioAnnuncioProvider, useServizio, } from "~/providers/ServizioProvider"; import { api } from "~/utils/api"; import { AlarmClockSVG } from "../svgs"; import { AnnunciCompatibili } from "./compatibili_dialog"; import { AnnunciSelezionatiAccordion, AnnunciSelezionatiDialog, } from "./servizio_annunci_accordions"; const ServizioCard = ({ cardClassName, header, headerClassName, content, contentClassName, }: { cardClassName?: string; header: React.ReactNode; headerClassName?: string; content: React.ReactNode; contentClassName?: string; }) => { return ( {header} {content} ); }; export const ServizioContent = () => { const { servizio, isAdmin, userId } = useServizio(); const utils = api.useUtils(); const { mutate: updateServizio } = api.servizio.updateServizio.useMutation({ onError: (error) => { toast.error(error.message); }, onSuccess: async () => { toast.success("Servizio modificato con successo"); await utils.servizio.getAllServizioAnnunci.invalidate({ userId }); }, }); const router = useRouter(); useEffect(() => { const id = router.asPath.split("#")[1]; if (id) { document.getElementById(id)?.scrollIntoView({ behavior: "smooth", }); } }, []); if (servizio.isInterrotto) { return (

Servizio interrotto

Non è possibile riutilizzare questo servizio, poichè è stato interrotto.

} header={ <>
Cerco Affitto {servizio.tipologia}

aggiunto il{" "} {servizio.created_at.toLocaleDateString("it", { day: "2-digit", month: "2-digit", year: "numeric", })}

} /> ); } if (!servizio.isOkAcconto || servizio.decorrenza === null) { return (

Servizio non ancora attivato

{isAdmin && ( )}
{isAdmin && } } contentClassName={cn(!isAdmin && "gap-0")} header={
} headerClassName={cn(!isAdmin && "pb-0")} /> ); } const annuncioConfermato = servizio.annunci.filter( (a) => a.accettato_conferma_at !== null, ); if (servizio.isOkSaldo && annuncioConfermato.length > 0) { return ( {annuncioConfermato.map((data) => { return ( ); })} } header={ <> } /> ); } const annunciSelezionati = servizio.annunci.filter( (a) => a.user_confirmed_at === null, ); const annunciInConferma = servizio.annunci.filter( (a) => a.user_confirmed_at !== null, ); return ( {annuncioConfermato.length > 0 && (
Saldi in attesa:
{servizio.annunci .filter((a) => a.accettato_conferma_at !== null) .map((a) => (

{a.codice} - confermato il:{" "} {a.accettato_conferma_at && new Date(a.accettato_conferma_at).toLocaleDateString( "it", { day: "2-digit", hour: "2-digit", minute: "2-digit", month: "2-digit", year: "numeric", }, )}

))}
)}
{annunciInConferma.map((data) => { return ( ); })}
{annunciSelezionati.length > 0 && ( )}
} header={ <> } headerClassName="pb-0" /> ); };