"use client"; import { getDetailAgency } from "@/pages/agencies/lib/api"; import { deleteSupportUser, getSupportUser, updateSupportUser, } from "@/pages/support/lib/api"; // deleteSupportUser import qiling import type { GetSupportUserRes } from "@/pages/support/lib/types"; import formatPhone from "@/shared/lib/formatPhone"; import { Badge } from "@/shared/ui/badge"; import { Button } from "@/shared/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/shared/ui/card"; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from "@/shared/ui/dialog"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { AlertTriangle, Loader2, Phone, Trash2, User } from "lucide-react"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { toast } from "sonner"; const SupportTours = () => { const { t } = useTranslation(); const [selected, setSelected] = useState(null); const [selectedToDelete, setSelectedToDelete] = useState(null); const queryClient = useQueryClient(); const [filterStatus, setFilterStatus] = useState< "" | "pending" | "done" | "failed" >(""); const { data, isLoading, isError, refetch } = useQuery({ queryKey: ["support_user", filterStatus], queryFn: () => getSupportUser({ page: 1, page_size: 99, status: filterStatus }), }); const { data: agency } = useQuery({ queryKey: ["detail_agency", selected?.travel_agency], queryFn: () => getDetailAgency({ id: Number(selected?.travel_agency) }), enabled: !!selected?.travel_agency, }); const updateMutation = useMutation({ mutationFn: ({ body, id }: { id: number; body: GetSupportUserRes }) => updateSupportUser({ body, id }), onSuccess: () => { queryClient.refetchQueries({ queryKey: ["support_user"] }); setSelected(null); }, onError: () => { toast.error(t("Xatolik yuz berdi"), { richColors: true, position: "top-center", }); }, }); const deleteMutation = useMutation({ mutationFn: (id: number) => deleteSupportUser({ id }), onSuccess: () => { queryClient.refetchQueries({ queryKey: ["support_user"] }); setSelectedToDelete(null); toast.success(t("Muvaffaqiyatli o'chirildi"), { richColors: true, position: "top-center", }); }, onError: () => { toast.error(t("O'chirishda xatolik yuz berdi"), { richColors: true, position: "top-center", }); }, }); const handleToggleStatus = (body: GetSupportUserRes) => { updateMutation.mutate({ body: { ...body, status: body.status === "pending" ? "done" : "pending", }, id: body.id, }); }; if (isLoading) { return (

{t("Ma'lumotlar yuklanmoqda...")}

); } if (isError) { return (

{t("Ma'lumotlarni yuklashda xatolik yuz berdi.")}

); } return (

{t("Yordam so'rovlari")}

{/* Status Tabs */}
{[ { label: t("Barchasi"), value: "" }, { label: t("Kutilmoqda"), value: "pending" }, { label: t("done"), value: "done" }, ].map((tab) => ( ))}
{/* Cards */}
{data && data.data.data.results.length === 0 ? (

{t("Natija topilmadi")}

) : ( data?.data.data.results.map((req) => (
{req.name}
{req.status === "pending" ? t("Kutilmoqda") : t("done")}
{req.travel_agency !== null ? ( {t("Agentlikka tegishli")} ) : ( {t("Sayt bo'yicha")} )}
{formatPhone(req.phone_number)}
)) )}
{/* Detail Modal */} setSelected(null)}> {selected?.name}
{selected && formatPhone(selected?.phone_number)}
{selected && selected.travel_agency && agency?.data.data && ( {t("Agentlikka tegishli")}: {agency?.data.data.name} )} {selected?.status === "pending" ? t("Kutilmoqda") : t("Yakunlangan")}
{selected && ( )}
setSelectedToDelete(null)} > {t("Diqqat! O'chirish")}

{t("Siz rostdan ham ushbu so'rovni o'chirmoqchimisiz?")}

); }; export default SupportTours;