import { useState, useEffect, useMemo } from 'react'
import { useNavigate, Link } from 'react-router-dom'
import { useAlert } from '../context/AlertContext'
import { useAuth } from '../context/AuthContext'
import { motion } from 'framer-motion'
import FormField from '../components/FormField'
import Forbidden from '../components/Forbidden'
import AdminDatePicker from '../components/AdminDatePicker'
import apiFetch from '../utils/api'
const API_BASE = '/api/admin'
export default function ProjectCreate() {
const navigate = useNavigate()
const alert = useAlert()
const { hasPermission } = useAuth()
const [form, setForm] = useState({
project_number: '',
name: '',
customer_id: null,
customer_name: '',
start_date: new Date().toISOString().split('T')[0]
})
const [saving, setSaving] = useState(false)
const [errors, setErrors] = useState({})
const [loadingNumber, setLoadingNumber] = useState(true)
// Customer selector state
const [customers, setCustomers] = useState([])
const [customerSearch, setCustomerSearch] = useState('')
const [showCustomerDropdown, setShowCustomerDropdown] = useState(false)
// Load initial data
useEffect(() => {
const load = async () => {
try {
const [numRes, custRes] = await Promise.all([
apiFetch(`${API_BASE}/projects.php?action=next_number`),
apiFetch(`${API_BASE}/customers.php`)
])
const numData = await numRes.json()
if (numData.success) {
setForm(prev => ({ ...prev, project_number: numData.data.number }))
}
const custData = await custRes.json()
if (custData.success) {
setCustomers(custData.data.customers)
}
} catch {
alert.error('Chyba při načítání dat')
} finally {
setLoadingNumber(false)
}
}
load()
}, [alert])
// Customer filtering
const filteredCustomers = useMemo(() => {
if (!customerSearch) return customers
const q = customerSearch.toLowerCase()
return customers.filter(c =>
(c.name || '').toLowerCase().includes(q) ||
(c.company_id || '').includes(customerSearch) ||
(c.city || '').toLowerCase().includes(q)
)
}, [customers, customerSearch])
// Close dropdown on outside click
useEffect(() => {
const handleClickOutside = () => setShowCustomerDropdown(false)
if (showCustomerDropdown) {
document.addEventListener('click', handleClickOutside)
return () => document.removeEventListener('click', handleClickOutside)
}
}, [showCustomerDropdown])
if (!hasPermission('projects.create')) return
Ruční vytvoření projektu