import { plans_api } from "@/features/plan/lib/api"; import type { Task } from "@/features/plan/lib/data"; import { groupByDate } from "@/features/plan/lib/filteDareHelper"; import { AddPlans } from "@/features/plan/ui/addPlans"; import { PlanDetailsDialog } from "@/features/plan/ui/PlanDetailsDialogProps"; import formatDate from "@/shared/lib/formatDate"; import { Alert, AlertDescription, AlertTitle } from "@/shared/ui/alert"; import { Button } from "@/shared/ui/button"; import { Calendar } from "@/shared/ui/calendar"; import { Card, CardContent, CardHeader, CardTitle } from "@/shared/ui/card"; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/shared/ui/dialog"; import { Skeleton } from "@/shared/ui/skeleton"; import { DashboardLayout } from "@/widgets/dashboard-layout/ui"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import type { AxiosError } from "axios"; import clsx from "clsx"; import { CalendarIcon, Loader2, Pencil, TriangleAlert } from "lucide-react"; import { useState } from "react"; import { toast } from "sonner"; export default function Plans() { const [taskEdit, setTaskEdit] = useState(null); const queryClient = useQueryClient(); const [selectedDate, setSelectedDate] = useState(null); const [tempDate, setTempDate] = useState(null); const { data, isLoading, isError } = useQuery({ queryKey: ["my_plans", selectedDate], queryFn: () => plans_api.getMyPloans({ date: selectedDate ? formatDate.format(selectedDate, "YYYY-MM-DD") : "", }), }); const { mutate, isPending } = useMutation({ mutationFn: (id: number) => plans_api.delete(id), onSuccess: () => { toast.success("Reja o‘chirildi"); queryClient.refetchQueries({ queryKey: ["my_plans", selectedDate] }); setDeleteDialogOpen(false); }, onError: (error: AxiosError) => { const data = error.response?.data as { message?: string }; const errorData = error.response?.data as { messages?: { token_class: string; token_type: string; message: string; }[]; }; const errorName = error.response?.data as { data?: { name: string[]; }; }; const message = Array.isArray(errorName.data?.name) && errorName.data.name.length ? errorName.data.name[0] : data?.message || (Array.isArray(errorData?.messages) && errorData.messages.length ? errorData.messages[0].message : undefined) || "Xatolik yuz berdi"; toast.error(message); }, }); const [isAddDialogOpen, setIsAddDialogOpen] = useState(false); const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); const [isPlanDetailsOpen, setIsPlanDetailsOpen] = useState(false); const [isDateDialogOpen, setIsDateDialogOpen] = useState(false); const [newTask, setNewTask] = useState({ title: "", description: "", date: new Date(), }); const [selectedTask, setSelectedTask] = useState(null); const openTaskDetails = (task: Task) => { setSelectedTask(task); setIsPlanDetailsOpen(true); }; // const handleDeleteTask = (task: Task) => { // setSelectedTask(task); // setDeleteDialogOpen(true); // }; const grouped = groupByDate(data?.data.data || []); return (

Kunlik Reja

setTempDate(date ?? null)} initialFocus />
{isLoading && (
{[1, 2, 3].map((i) => (
))}
)} {isError && ( Xatolik! Ma'lumotlarni yuklashda muammo yuz berdi. Qayta urinib ko‘ring. )} {!isLoading && !isError && data && Object.keys(grouped).length === 0 && ( Ma'lumot yo‘q Tanlangan sana bo‘yicha reja topilmadi. )} {data && Object.entries(grouped).map(([date, items]) => ( {formatDate.format(new Date(date), "DD.MM.YYYY")} {items.map((item) => (
openTaskDetails(item)} className="flex flex-col gap-3 p-3 rounded-md border bg-white group hover:bg-gray-50 transition-colors" >
{/*

{item.title}

*/}

{item.description}

{/* */}
))}
))} Rejani o‘chirish

Siz haqiqatdan ham {selectedTask?.title} rejani o‘chirmoqchimisiz?

); }