import React, { useState } from 'react'; import { filamentService } from '@/src/services/api'; import { Filament } from '@/src/types/filament'; interface SaleManagerProps { filaments: Filament[]; selectedFilaments: Set; onSaleUpdate: () => void; } export function SaleManager({ filaments, selectedFilaments, onSaleUpdate }: SaleManagerProps) { const [showSaleModal, setShowSaleModal] = useState(false); const [salePercentage, setSalePercentage] = useState(10); const [saleStartDate, setSaleStartDate] = useState(''); const [saleEndDate, setSaleEndDate] = useState(''); const [enableSale, setEnableSale] = useState(true); const [applyToAll, setApplyToAll] = useState(false); const [loading, setLoading] = useState(false); const handleSaleUpdate = async () => { setLoading(true); try { const filamentIds = applyToAll ? undefined : Array.from(selectedFilaments); try { await filamentService.updateBulkSale({ filamentIds, salePercentage, saleStartDate: saleStartDate || undefined, saleEndDate: saleEndDate || undefined, enableSale }); } catch (error: any) { // If bulk endpoint fails, fall back to individual updates if (error.response?.status === 404) { alert('Bulk sale endpoint not available yet. Please update the API server with the latest code.'); return; } throw error; } onSaleUpdate(); setShowSaleModal(false); setSalePercentage(10); setSaleStartDate(''); setSaleEndDate(''); setEnableSale(true); setApplyToAll(false); } catch (error) { console.error('Error updating sale:', error); alert('Greška pri ažuriranju popusta'); } finally { setLoading(false); } }; // Get current date/time in local timezone for datetime-local input const getCurrentDateTime = () => { const now = new Date(); now.setMinutes(now.getMinutes() - now.getTimezoneOffset()); return now.toISOString().slice(0, 16); }; return ( <> {showSaleModal && (

Upravljanje popustima

{!applyToAll && (

Izabrano: {selectedFilaments.size} filament{selectedFilaments.size === 1 ? '' : 'a'}

)}
setSalePercentage(parseInt(e.target.value) || 0)} className="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100" />
setSaleStartDate(e.target.value)} min={getCurrentDateTime()} className="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100" />
setSaleEndDate(e.target.value)} min={saleStartDate || getCurrentDateTime()} className="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100" />
)} ); }