import { useState } from 'react'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { toast } from 'sonner'; import { api } from '../lib/api'; import { formatRial, formatNumber } from '../lib/utils'; import Modal from './ui/Modal'; import type { ServiceItem } from '../types'; interface TariffRow { uuid: string; year: number; price_rials: number; is_active: boolean; } interface TariffResponse { current_year: number; default_price_rials: number; data: TariffRow[]; } export default function ServiceTariffModal({ item, onClose }: { item: ServiceItem | null; onClose: () => void }) { const qc = useQueryClient(); const [year, setYear] = useState(''); const [price, setPrice] = useState(''); const { data, isLoading } = useQuery<{ data: TariffResponse }>({ queryKey: ['service-tariffs', item?.uuid], queryFn: () => api.get(`/api/v1/service-items/${item!.uuid}/tariffs`), enabled: !!item, }); const resp = (data as any)?.data as TariffResponse | undefined; const tariffs = resp?.data ?? []; const currentYear = resp?.current_year; const saveMut = useMutation({ mutationFn: () => api.put(`/api/v1/service-items/${item!.uuid}/tariffs/${Number(year)}`, { price_rials: Number(price) || 0, }), onSuccess: () => { toast.success('تعرفه ذخیره شد'); setYear(''); setPrice(''); qc.invalidateQueries({ queryKey: ['service-tariffs', item?.uuid] }); }, onError: (e: Error) => toast.error(e.message), }); return (
{resp && (
قیمت پیش‌فرض خدمت: {formatRial(resp.default_price_rials)}. اگر تعرفه‌ی سالی ثبت نشود، همین قیمت اعمال می‌شود.
)}
setYear(e.target.value)} />
setPrice(e.target.value)} />
{isLoading ? (
در حال بارگذاری...
) : tariffs.length === 0 ? (
هنوز تعرفه‌ی سالانه‌ای ثبت نشده است.
) : (
{tariffs.map((t) => (
سال {formatNumber(t.year)} {t.year === currentYear && جاری} {formatRial(t.price_rials)}
))}
)}
); }