import { TextField, FormControlLabel, Checkbox, Button, Alert, CircularProgress, Autocomplete, Chip, } from "@mui/material"; import { useTranslation } from "react-i18next"; import { useState, useEffect } from "react"; import { submitFormData } from "../utils/sender"; import Cookies from "js-cookie"; interface Message { type: "error" | "info" | "success" | "warning"; headline: string; text: string; } export const MainForm = () => { const { t } = useTranslation(); const [invoice, setInvoice] = useState(false); const [msg, setMsg] = useState(null); const [isLoading, setIsLoading] = useState(false); const [nextID, setNextID] = useState(null); const [formData, setFormData] = useState({ firstName: "", lastName: "", email: "", phoneNumber: "", tickets: 1, companyName: "", cmpFirstName: "", cpmLastName: "", cpmEmail: "", cpmPhoneNumber: "", street: "", postalCode: "", paymentMethod: "", }); const [users, setUsers] = useState([]); const [selectedUser, setSelectedUser] = useState(null); useEffect(() => { // Fetch user data or any other data needed for the form try { const fetchUsers = async () => { const response = await fetch("http://localhost:8004/default/users"); const data = await response.json(); setUsers(data.users); }; fetchUsers(); console.log(users); } catch (error) { setMsg({ type: "error", headline: t("error"), text: t("failed-to-load-users"), }); console.error("Error fetching users:", error); } if (Cookies.get("selectedUser")) { const cookieUser = Cookies.get("selectedUser")!; setSelectedUser(cookieUser); confirmUser(cookieUser); } }, []); const handleChange = (e: React.ChangeEvent) => { setFormData({ ...formData, [e.target.name]: e.target.value }); }; const confirmUser = async (selectedUser: string) => { try { const response = await fetch( `http://localhost:8004/default/confirm-user?username=${selectedUser}` ); const data = await response.json(); setNextID(data.nextID); } catch (error) { console.error("Error confirming user:", error); } }; const handleUserSelection = (selectedUser: string | null) => { if (!selectedUser) return; setSelectedUser(selectedUser); confirmUser(selectedUser); Cookies.set("selectedUser", selectedUser); }; const handleSubmit = async () => { setIsLoading(true); try { const result = await submitFormData(formData); if (result.success) { setMsg({ type: "success", headline: t("success"), text: t("form-submitted-successfully"), }); } else { setMsg({ type: "error", headline: t("error"), text: result.error || t("form-submission-failed"), }); } } finally { setIsLoading(false); } }; return ( <>
{ e.preventDefault(); handleSubmit(); }} > } onChange={(_event, value) => handleUserSelection(value)} onKeyDown={(event) => { if (event.key === "Enter") { event.defaultMuiPrevented = true; } }} /> setInvoice(e.target.checked)} /> } label={t("invoice")} /> {invoice && ( <> )} {/* Payment methods - only one must be selected */} } label={t("cash")} /> } label={t("paypal")} /> } label={t("transfer")} /> {isLoading && } {msg && ( {msg.headline}: {msg.text} )} ); };