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.enum.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 && }
);
};
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 (
);
};
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 (
);
};