"use client"; import { countryList, getAllAmenities, hotelBadge, hotelFeature, hotelFeatureType, hotelMealList, hotelTarif, hotelTransport, hotelType, regionList, } from "@/pages/tours/lib/api"; import Amenities from "@/pages/tours/ui/Amenities"; import BadgeTable from "@/pages/tours/ui/BadgeTable"; import CountryTable from "@/pages/tours/ui/CountryTable"; import FeaturesTable from "@/pages/tours/ui/FeaturesTable"; import FeaturesTableType from "@/pages/tours/ui/FeaturesTableType"; import HotelType from "@/pages/tours/ui/HotelType"; import MealTable from "@/pages/tours/ui/MealTable"; import RegionTable from "@/pages/tours/ui/RegionTable"; import TarifTable from "@/pages/tours/ui/TarifTable"; import TransportTable from "@/pages/tours/ui/TransportTable"; import { Button } from "@/shared/ui/button"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/shared/ui/tabs"; import { useQuery } from "@tanstack/react-query"; import { AlertTriangle, Loader2 } from "lucide-react"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate, useSearchParams } from "react-router-dom"; // Error Component const ErrorDisplay: React.FC<{ message: string; onRetry: () => void }> = ({ message, onRetry, }) => { const { t } = useTranslation(); return (

{message}

); }; // Loading Component const LoadingDisplay: React.FC<{ message?: string }> = ({ message }) => { const { t } = useTranslation(); return (

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

); }; const ToursSetting: React.FC = () => { const { t } = useTranslation(); const [searchParams] = useSearchParams(); const [activeTab, setActiveTab] = useState("badge"); const [featureId, setFeatureId] = useState(null); const [countryId, setCountryId] = useState(null); const navigate = useNavigate(); const page = parseInt(searchParams.get("page") || "1", 10); const pageSize = parseInt(searchParams.get("pageSize") || "10", 10); const { data, isLoading, isError, refetch } = useQuery({ queryKey: ["all_badge", page, pageSize], queryFn: () => hotelBadge({ page, page_size: pageSize }), select: (res) => res.data.data, }); const pageTarif = parseInt(searchParams.get("pageTarif") || "1", 10); const pageSizeTarif = parseInt(searchParams.get("pageTarifSize") || "10", 10); const { data: tarifData, isLoading: tarifLoad, isError: tarifError, refetch: tarifRef, } = useQuery({ queryKey: ["all_tarif", pageTarif, pageSizeTarif], queryFn: () => hotelTarif({ page: pageTarif, page_size: pageSizeTarif }), select: (res) => res.data.data, }); const pageTransport = parseInt(searchParams.get("pageTransport") || "1", 10); const pageSizeTransport = parseInt( searchParams.get("pageTransportSize") || "10", 10, ); const { data: transportData, isLoading: transportLoad, isError: transportError, refetch: transportRef, } = useQuery({ queryKey: ["all_transport", pageTransport, pageSizeTransport], queryFn: () => hotelTransport({ page: pageTransport, page_size: pageSizeTransport }), select: (res) => res.data.data, }); const pageType = parseInt(searchParams.get("pageType") || "1", 10); const pageSizeType = parseInt(searchParams.get("pageTypeSize") || "10", 10); const { data: typeData, isLoading: typeLoad, isError: typeError, refetch: typeRef, } = useQuery({ queryKey: ["all_type", pageType, pageSizeType], queryFn: () => hotelType({ page: pageType, page_size: pageSizeType }), select: (res) => res.data.data, }); const pageCountry = parseInt(searchParams.get("pageCountry") || "1", 10); const pageSizeCountry = parseInt( searchParams.get("pageSizeCountry") || "10", 10, ); const { data: countryData, isLoading: countryLoad, isError: countryError, refetch: countryRef, } = useQuery({ queryKey: ["all_country", pageCountry, pageSizeCountry], queryFn: () => countryList({ page: pageCountry, page_size: pageSizeCountry }), select: (res) => res.data.data, }); const pageRegion = parseInt(searchParams.get("pageRegion") || "1", 10); const pageSizeRegion = parseInt( searchParams.get("pageSizeRegion") || "10", 10, ); const { data: regionData, isLoading: regionLoad, isError: regionError, refetch: regionRef, } = useQuery({ queryKey: ["all_region", pageRegion, pageSizeRegion, countryId], queryFn: () => regionList({ page: pageRegion, page_size: pageSizeRegion, country: countryId!, }), select: (res) => res.data.data, enabled: !!countryId, }); const pageFeature = parseInt(searchParams.get("pageFeature") || "1", 10); const pageSizeFeature = parseInt( searchParams.get("pageSizeFeature") || "10", 10, ); const { data: featureData, isLoading: featureLoad, isError: featureError, refetch: featureRef, } = useQuery({ queryKey: ["all_feature", pageFeature, pageSizeFeature], queryFn: () => hotelFeature({ page: pageFeature, page_size: pageSizeFeature }), select: (res) => res.data.data, }); const { data: featureTypeData, isLoading: featureTypeLoad, isError: featureTypeError, refetch: featureTypeRef, } = useQuery({ queryKey: ["all_feature_type", pageFeature, pageSizeFeature, featureId], queryFn: () => hotelFeatureType({ page: pageFeature, page_size: pageSizeFeature, feature_type: featureId!, }), select: (res) => res.data.data, enabled: !!featureId, }); const pageAmenities = parseInt(searchParams.get("pageAmenities") || "1", 10); const pageSizeAmenities = parseInt( searchParams.get("pageSizeAmenities") || "10", 10, ); const { data: amenitiesData, isLoading: amenitiesLoad, isError: amenitiesError, refetch: amenitiesRef, } = useQuery({ queryKey: ["all_amenities", pageAmenities, pageSizeAmenities], queryFn: () => getAllAmenities({ page: pageAmenities, page_size: pageSizeAmenities }), select: (res) => res.data.data, }); const pageMeal = parseInt(searchParams.get("pageMeal") || "1", 10); const pageSizeMeal = parseInt(searchParams.get("pageSizeMeal") || "10", 10); const { data: mealData, isLoading: mealLoad, isError: mealError, refetch: mealRef, } = useQuery({ queryKey: ["all_meal", pageMeal, pageSizeMeal], queryFn: () => hotelMealList({ page: pageMeal, page_size: pageSizeMeal }), select: (res) => res.data.data, }); const handleTabChange = (value: string) => { setActiveTab(value); navigate({ pathname: window.location.pathname, search: "", }); }; return (
{t("Belgilar (Badge)")} {t("Ovqatlanish turlari")} {t("Tariflar")} {t("Transport")} {t("Qulayliklar")} {t("Otel turlari")} {t("Otel sharoitlari")} {t("Davlatlar")} {isLoading ? ( ) : isError ? ( ) : ( )} {tarifLoad ? ( ) : tarifError ? ( ) : ( )} {transportLoad ? ( ) : transportError ? ( ) : ( )} {amenitiesLoad ? ( ) : amenitiesError ? ( ) : ( )} {typeLoad ? ( ) : typeError ? ( ) : ( )} {mealLoad ? ( ) : mealError ? ( ) : ( )} {featureLoad ? ( ) : featureError ? ( ) : ( )} {featureTypeLoad ? ( ) : featureTypeError ? ( ) : ( )} {countryLoad ? ( ) : countryError ? ( ) : ( )} {regionLoad ? ( ) : regionError ? ( ) : ( )}
); }; export default ToursSetting;