import React, { useState } from 'react'; import { Trash2 } from 'lucide-react'; import { useTourStore } from './useTourStore.js'; export const CreateTourModal = ({ isOpen, onClose, onSuccess }: { isOpen: boolean, onClose: () => void, onSuccess: (tour: any) => void }) => { const [title, setTitle] = useState(''); const [startDate, setStartDate] = useState(''); const [endDate, setEndDate] = useState(''); const [isLoading, setIsLoading] = useState(false); const createTour = useTourStore((state) => state.createTour); const [members, setMembers] = useState([]); const [query, setQuery] = useState(''); const [results, setResults] = useState([]); const [error, setError] = useState(''); if (!isOpen) return null; const searchUsers = async (value: string) => { setQuery(value); if (!value.trim()) { setResults([]); return; } try { const API_BASE = `http://${window.location.hostname}:3001`; const res = await fetch(`${API_BASE}/api/v1/users?q=${encodeURIComponent(value)}`, { headers: { Authorization: `Bearer ${localStorage.getItem('token')}` }, }); if (!res.ok) throw new Error('Không thể tải người dùng'); const data = await res.json(); setResults(Array.isArray(data) ? data : []); } catch (e: any) { setResults([]); setError(e.message || 'Không thể tải người dùng'); } }; const confirmAddMember = (user: any) => { setMembers((prev) => (prev.some((m) => m.id === user.id) ? prev : [...prev, user])); setQuery(''); setResults([]); setError(''); }; const removeMember = (userId: string) => { setMembers((prev) => prev.filter((m) => m.id !== userId)); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsLoading(true); setError(''); try { const memberIds = members.map((m) => m.id); const tour = await createTour({ title, startDate, endDate, memberIds }); onSuccess(tour); onClose(); } catch (e: any) { setError(e.message || 'Lỗi khi tạo tour'); } finally { setIsLoading(false); } }; return (

Tạo Tour mới

setTitle(e.target.value)} placeholder="VD: Khám phá Đà Lạt" />
setStartDate(e.target.value)} />
setEndDate(e.target.value)} />
{members.map((m) => (
{m.name}
{m.name}
))}
searchUsers(e.target.value)} /> {results.length > 0 && (
{results.map((u) => ( ))}
)}
{error &&

{error}

}
); };