admin
This commit is contained in:
@@ -40,12 +40,12 @@ const AdminEquipment = () => {
|
||||
try {
|
||||
setLoading(true);
|
||||
const [equipmentResponse, typesResponse] = await Promise.all([
|
||||
equipmentAPI.getEquipment(),
|
||||
equipmentAPI.getEquipmentTypes()
|
||||
equipmentAPI.getAll(),
|
||||
equipmentAPI.getTypes()
|
||||
]);
|
||||
|
||||
setEquipment(equipmentResponse.data.data.equipment || []);
|
||||
setEquipmentTypes(typesResponse.data.data.types || []);
|
||||
setEquipmentTypes(typesResponse.data.data.equipmentTypes || []);
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch equipment:', error);
|
||||
toast.error('Failed to load equipment');
|
||||
@@ -57,7 +57,7 @@ const AdminEquipment = () => {
|
||||
const handleCreate = async (e) => {
|
||||
e.preventDefault();
|
||||
try {
|
||||
await equipmentAPI.createEquipment(formData);
|
||||
await equipmentAPI.create(formData);
|
||||
toast.success('Equipment created successfully');
|
||||
setShowCreateModal(false);
|
||||
resetForm();
|
||||
@@ -71,7 +71,7 @@ const AdminEquipment = () => {
|
||||
const handleUpdate = async (e) => {
|
||||
e.preventDefault();
|
||||
try {
|
||||
await equipmentAPI.updateEquipment(selectedEquipment.id, formData);
|
||||
await equipmentAPI.update(selectedEquipment.id, formData);
|
||||
toast.success('Equipment updated successfully');
|
||||
setShowEditModal(false);
|
||||
resetForm();
|
||||
@@ -84,7 +84,7 @@ const AdminEquipment = () => {
|
||||
|
||||
const handleDelete = async () => {
|
||||
try {
|
||||
await equipmentAPI.deleteEquipment(selectedEquipment.id);
|
||||
await equipmentAPI.delete(selectedEquipment.id);
|
||||
toast.success('Equipment deleted successfully');
|
||||
setShowDeleteModal(false);
|
||||
setSelectedEquipment(null);
|
||||
|
||||
@@ -20,7 +20,6 @@ const AdminProducts = () => {
|
||||
const [searchTerm, setSearchTerm] = useState('');
|
||||
const [categoryFilter, setCategoryFilter] = useState('all');
|
||||
const [typeFilter, setTypeFilter] = useState('all');
|
||||
const [productTypeFilter, setProductTypeFilter] = useState('all'); // shared vs custom
|
||||
const [selectedProduct, setSelectedProduct] = useState(null);
|
||||
const [showCreateModal, setShowCreateModal] = useState(false);
|
||||
const [showEditModal, setShowEditModal] = useState(false);
|
||||
@@ -43,7 +42,7 @@ const AdminProducts = () => {
|
||||
try {
|
||||
setLoading(true);
|
||||
const [productsResponse, categoriesResponse] = await Promise.all([
|
||||
productsAPI.getProducts({
|
||||
adminAPI.getProducts({
|
||||
search: searchTerm,
|
||||
category: categoryFilter !== 'all' ? categoryFilter : '',
|
||||
type: typeFilter !== 'all' ? typeFilter : ''
|
||||
@@ -51,8 +50,8 @@ const AdminProducts = () => {
|
||||
productsAPI.getCategories()
|
||||
]);
|
||||
|
||||
setProducts(productsResponse.data.data.sharedProducts || []);
|
||||
setUserProducts(productsResponse.data.data.userProducts || []);
|
||||
setProducts(productsResponse.data.data.products || []);
|
||||
setUserProducts([]); // Admin can only manage shared products for now
|
||||
setCategories(categoriesResponse.data.data.categories || []);
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch products:', error);
|
||||
@@ -162,11 +161,8 @@ const AdminProducts = () => {
|
||||
}));
|
||||
};
|
||||
|
||||
// Filter products based on shared/custom filter
|
||||
const allProducts = [
|
||||
...(productTypeFilter === 'custom' ? [] : products.map(p => ({ ...p, isShared: true }))),
|
||||
...(productTypeFilter === 'shared' ? [] : userProducts.map(p => ({ ...p, isShared: false })))
|
||||
];
|
||||
// Only show shared products for admin management
|
||||
const allProducts = products.map(p => ({ ...p, isShared: true }));
|
||||
|
||||
const ProductForm = ({ onSubmit, submitText }) => (
|
||||
<form onSubmit={onSubmit} className="space-y-4">
|
||||
@@ -381,15 +377,6 @@ const AdminProducts = () => {
|
||||
<option value="seed">Seed</option>
|
||||
<option value="powder">Powder</option>
|
||||
</select>
|
||||
<select
|
||||
value={productTypeFilter}
|
||||
onChange={(e) => setProductTypeFilter(e.target.value)}
|
||||
className="px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"
|
||||
>
|
||||
<option value="all">Shared & Custom</option>
|
||||
<option value="shared">Shared Only</option>
|
||||
<option value="custom">Custom Only</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user