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 { 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 ( Attiva il Servizio Ora! {isAdmin && ( updateServizio({ data: { decorrenza: new Date(), isOkAcconto: true, }, servizioId: servizio.servizio_id, }) } variant="success" > Attiva Manualmente (Azione Admin) )} {isAdmin && } } header={ Servizio non ancora attivato } /> ); } 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 ( {/* Contatti sbloccati {openContattiAnnunci.length} / 10 Durata servizio: {`${new Date(servizio.decorrenza).toLocaleDateString("it-IT")} - ${new Date(add(servizio.decorrenza, { days: 60 })).toLocaleDateString("it-IT")}`} */} {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" /> ); };
Servizio interrotto
Non è possibile riutilizzare questo servizio, poichè è stato interrotto.
aggiunto il{" "} {servizio.created_at.toLocaleDateString("it", { day: "2-digit", month: "2-digit", year: "numeric", })}