'use client'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { useEffect, useState } from 'react'; import axiosInstance from '../../api/axiosInstance'; const CreateReference = ({ setAlert, idHouses, setIdHouses }) => { const queryClient = useQueryClient(); const [formData, setFormData] = useState({ titleUz: '', titleRu: '', shortDescriptionUz: '', shortDescriptionRu: '', price: 0, exchange: 'USD', unit: '', unitValue: 1, cargoType: 'AVIA', }); const resetForm = () => { setFormData({ titleUz: '', titleRu: '', shortDescriptionUz: '', shortDescriptionRu: '', price: 0, exchange: 'USD', unit: '', unitValue: 1, cargoType: '', }); }; const { data, refetch } = useQuery({ queryKey: ['warhouses_one'], queryFn: async () => { return await axiosInstance.get(`/cargo-reference-book/${idHouses}`); }, enabled: !!idHouses, select(data) { return data.data; }, }); useEffect(() => { if (idHouses !== null) { refetch(); } }, [idHouses]); useEffect(() => { if (data) { setFormData({ cargoType: data.cargoType, exchange: data.exchange, price: data.price, shortDescriptionRu: data.shortDescriptionRu, shortDescriptionUz: data.shortDescriptionUz, titleRu: data.titleRu, titleUz: data.titleUz, unit: data.unit, unitValue: data.unitValue, }); } }, [data]); const { mutate: CreateReference } = useMutation({ mutationFn: async (payload) => { return await axiosInstance.post('/cargo-reference-book', payload); }, onSuccess: () => { setAlert({ type: 'success', message: "Narx qo'shildi" }); queryClient.invalidateQueries({ queryKey: ['reference_list'] }); resetForm(); }, onError: () => { setAlert({ type: 'warning', message: "Narx qo'shishida xatolik yuz berdi" }); }, }); const { mutate: updateWarhouses } = useMutation({ mutationFn: async (payload) => { return await axiosInstance.put(`/cargo-reference-book/${idHouses}`, payload); }, onSuccess: () => { setAlert({ type: 'success', message: 'Narx yangilandi' }); queryClient.invalidateQueries({ queryKey: ['reference_list'] }); setIdHouses(null); resetForm(); }, onError: () => { setAlert({ type: 'warning', message: "Narx qo'yangilanshda xatolik yuz berdi" }); }, }); const handleAdd = (e) => { e.preventDefault(); const isFormValid = formData.titleUz.trim() !== '' && formData.titleRu.trim() !== '' && formData.shortDescriptionUz.trim() !== '' && formData.shortDescriptionRu.trim() !== '' && formData.unit.trim() !== '' && formData.cargoType.trim() !== '' && formData.price > 0 && formData.unitValue > 0; if (!isFormValid) { setAlert({ type: 'warning', message: "Iltimos barcha maydonlarni to'ldiring!" }); return; } else { CreateReference({ titleUz: formData.titleUz, titleRu: formData.titleRu, shortDescriptionUz: formData.shortDescriptionUz, shortDescriptionRu: formData.shortDescriptionRu, price: formData.price, exchange: formData.exchange, unit: formData.unit, unitValue: formData.unitValue, cargoType: formData.cargoType, }); } }; const handleUpdate = (e) => { e.preventDefault(); const isFormValid = formData.titleUz.trim() !== '' && formData.titleRu.trim() !== '' && formData.shortDescriptionUz.trim() !== '' && formData.shortDescriptionRu.trim() !== '' && formData.unit.trim() !== '' && formData.cargoType.trim() !== '' && formData.price > 0 && formData.unitValue > 0; if (!isFormValid) { setAlert({ type: 'warning', message: "Iltimos barcha maydonlarni to'ldiring!" }); return; } else { updateWarhouses({ titleUz: formData.titleUz, titleRu: formData.titleRu, shortDescriptionUz: formData.shortDescriptionUz, shortDescriptionRu: formData.shortDescriptionRu, price: formData.price, exchange: formData.exchange, unit: formData.unit, unitValue: formData.unitValue, cargoType: formData.cargoType, }); } }; const handleChange = (e) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value })); }; return (