feat: enhance user confirmation and data submission; add newEntry function and update MainForm to handle user selection

This commit is contained in:
2026-01-20 18:50:16 +01:00
parent 001999f21d
commit fd37e40253
5 changed files with 57 additions and 34 deletions

View File

@@ -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 };
};

View File

@@ -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);
});

View File

@@ -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 25stelligen 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
);

View File

@@ -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",

View File

@@ -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",