From fd37e40253fac1027cb19cb216b6dc6d906ca8d1 Mon Sep 17 00:00:00 2001 From: Theis Date: Tue, 20 Jan 2026 18:50:16 +0100 Subject: [PATCH] feat: enhance user confirmation and data submission; add newEntry function and update MainForm to handle user selection --- backend/routes/default/frontend.data.js | 33 +++++++++++++++++-- backend/routes/default/frontend.route.js | 9 +++--- backend/scheme.sql | 41 ++++++++++-------------- frontend/src/pages/MainForm.tsx | 2 +- frontend/src/utils/sender.ts | 6 ++-- 5 files changed, 57 insertions(+), 34 deletions(-) diff --git a/backend/routes/default/frontend.data.js b/backend/routes/default/frontend.data.js index 05b950a..30bf2c2 100644 --- a/backend/routes/default/frontend.data.js +++ b/backend/routes/default/frontend.data.js @@ -68,7 +68,7 @@ export const confirmUser = async (username) => { nextID = rows.length > 0 ? rows[0].id + 1 : 1; }; await getNextID(); - return { success: true, nextID }; + return { success: true, nextID, tableName }; } else { return { success: false, message: "Table creation failed" }; } @@ -77,4 +77,33 @@ export const confirmUser = async (username) => { } }; -export const confirmData = async (data) => {}; +export const newEntry = async (formData, username) => { + const confirmation = await confirmUser(username); + + if (!confirmation || !confirmation.success) { + return { success: false, message: "User confirmation failed" }; + } + + const tableName = confirmation.tableName; + + const [result] = await pool.query( + `INSERT INTO ${tableName} (Vorname, Nachname, EMail, Telefonnummer, Lose, Firmenname, Vorname_Geschaeftlich, Nachname_Geschaeftlich, EMail_Geschaeftlich, Telefonnummer_Geschaeftlich, Strasse_Hausnr, Plz_Ort, Zahlungsmethode) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + [ + formData.firstName, + formData.lastName, + formData.email, + formData.phoneNumber, + formData.tickets, + formData.companyName, + formData.cmpFirstName, + formData.cpmLastName, + formData.cpmEmail, + formData.cpmPhoneNumber, + formData.street, + formData.postalCode, + formData.paymentMethod, + ] + ); + + return { success: true, insertId: result.insertId }; +}; diff --git a/backend/routes/default/frontend.route.js b/backend/routes/default/frontend.route.js index b0ff4cc..5db5ac1 100644 --- a/backend/routes/default/frontend.route.js +++ b/backend/routes/default/frontend.route.js @@ -3,15 +3,16 @@ import dotenv from "dotenv"; const router = express.Router(); dotenv.config(); -import { getUser, confirmData, confirmUser } from "./frontend.data.js"; +import { getUser, newEntry, confirmUser } from "./frontend.data.js"; -router.post("/frontend", async (req, res) => { - const result = await confirmData(req.body); +router.post("/new-entry", async (req, res) => { + const username = req.query.username; + const result = await newEntry(req.body, username); if (!result.success) { return res.status(500).json({ message: "Form Data Invalid" }); } console.log(req.body); - console.log(user); + console.log(username); res.sendStatus(204); }); diff --git a/backend/scheme.sql b/backend/scheme.sql index 000cb05..f9f29ce 100644 --- a/backend/scheme.sql +++ b/backend/scheme.sql @@ -1,14 +1,4 @@ CREATE TABLE users ( - id INT AUTO_INCREMENT PRIMARY KEY, - username VARCHAR(100) NOT NULL, - first_name VARCHAR(100) NOT NULL, - last_name VARCHAR(100) NOT NULL, - email VARCHAR(255) NOT NULL UNIQUE, - unique_key CHAR(25) NOT NULL UNIQUE, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); - -CREATE TABLE usersNEW ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(100) NOT NULL UNIQUE, first_name VARCHAR(100) NOT NULL, @@ -16,17 +6,20 @@ CREATE TABLE usersNEW ( created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); --- Trigger zur automatischen Generierung eines 25‑stelligen Keys -DELIMITER $ - -CREATE TRIGGER before_user_insert -BEFORE INSERT ON users -FOR EACH ROW -BEGIN - SET NEW.unique_key = SUBSTRING( - REPLACE(UUID(), '-', '') - -- UUID = 32 Zeichen, wir nehmen 25 davon - , 1, 25); -END$ - -DELIMITER ; +CREATE TABLE xx_DD_MM_YYYY ( + id INT AUTO_INCREMENT PRIMARY KEY, + Vorname VARCHAR(100) NOT NULL, + Nachname Varchar(100) NOT NULL, + EMail Varchar(100) NOT NULL, + Telefonnummer Varchar(100) NOT NULL, + Lose INT NOT NULL, + Firmenname Varchar(100), + Vorname_Geschaeftlich Varchar(100), + Nachname_Geschaeftlich Varchar(100), + EMail_Geschaeftlich Varchar(100), + Telefonnummer_Geschaeftlich Varchar(100), + Strasse_Hausnr Varchar(100), + Plz_Ort Varchar(100), + Zahlungsmethode Varchar(100), + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); diff --git a/frontend/src/pages/MainForm.tsx b/frontend/src/pages/MainForm.tsx index 7baff1a..2e1b396 100644 --- a/frontend/src/pages/MainForm.tsx +++ b/frontend/src/pages/MainForm.tsx @@ -95,7 +95,7 @@ export const MainForm = () => { const handleSubmit = async () => { setIsLoading(true); try { - const result = await submitFormData(formData); + const result = await submitFormData(formData, selectedUser || ""); if (result.success) { setMsg({ type: "success", diff --git a/frontend/src/utils/sender.ts b/frontend/src/utils/sender.ts index beb150b..88debfd 100644 --- a/frontend/src/utils/sender.ts +++ b/frontend/src/utils/sender.ts @@ -14,9 +14,9 @@ interface FormData { paymentMethod: string; } -export const submitFormData = async (data: FormData) => { +export const submitFormData = async (data: FormData, username: string) => { try { - const response = await fetch("/backend/default/frontend", { + const response = await fetch(`http://localhost:8004/default/new-entry?username=${username}`, { method: "POST", headers: { "Content-Type": "application/json", @@ -27,7 +27,7 @@ export const submitFormData = async (data: FormData) => { if (!response.ok) { const errorText = await response.text(); return { success: false, error: `Server error: ${errorText}` }; - } + } return { success: true }; } catch (error) {