import React, { useState, useEffect } from "react"; import SelectionDialog from "../components/SelectionDialog.jsx"; import { useNavigate } from "react-router-dom"; import { getAuthToken } from "../api.jsx"; import { getAccessories, createAccessory, updateAccessory, deleteAccessory, getCities, } from "../api.jsx"; const Accessories = () => { const [accessories, setAccessories] = useState([]); const [cities, setCities] = useState([]); const [newAccessory, setNewAccessory] = useState({ name: "", volume: "", weight: "", period: "", city_id: "", }); const [editingAccessoryId, setEditingAccessoryId] = useState(null); const [error, setError] = useState(null); const [showCityDialog, setShowCityDialog] = useState(false); const navigate = useNavigate(); useEffect(() => { fetchAccessories(); fetchCities(); }, []); const fetchAccessories = async () => { try { const data = await getAccessories(); console.log(data); setAccessories(data); } catch (error) { console.error("Ошибка при загрузке аксессуаров:", error); } }; const fetchCities = async () => { try { const data = await getCities(); setCities(data); } catch (error) { console.error("Ошибка при загрузке городов:", error); } }; const handleInputChange = (e) => { const { name, value } = e.target; setNewAccessory({ ...newAccessory, [name]: value }); }; const handleSubmit = async (e) => { e.preventDefault(); if ( !newAccessory.name || !newAccessory.volume || !newAccessory.weight || !newAccessory.period || !newAccessory.city_id ) { setError("Пожалуйста, заполните все поля."); return; } try { if (editingAccessoryId) { await updateAccessory(editingAccessoryId, newAccessory); } else { await createAccessory(newAccessory); } fetchAccessories(); resetForm(); } catch (error) { console.error("Ошибка при добавлении или обновлении аксессуара:", error); } }; const handleEdit = (accessory) => { setNewAccessory({ name: accessory.name, volume: accessory.volume, weight: accessory.weight, period: accessory.period, city_id: accessory.city_id, city_name: accessory.city_name, }); setEditingAccessoryId(accessory.id); }; const handleDelete = async (accessoryId) => { try { await deleteAccessory(accessoryId); fetchAccessories(); } catch (error) { console.error("Ошибка при удалении аксессуара:", error); } }; const resetForm = () => { setNewAccessory({ name: "", volume: "", weight: "", period: "", city_id: "", }); setEditingAccessoryId(null); }; const handleDialogSelectCity = (selectedItem) => { setNewAccessory({ ...newAccessory, city_id: selectedItem.id, city_name: selectedItem.name, }); setShowCityDialog(false); }; if (getAuthToken() === null) { navigate("/login"); } return (
| Название | Объем | Вес | Период | Город | Действия |
|---|---|---|---|---|---|
| {accessory.name} | {accessory.volume} | {accessory.weight} | {accessory.period} | {accessory.city_name} | {" "}
|