Files
ca-lose/backend/routes/default/frontend.data.js
2026-01-21 14:27:24 +01:00

110 lines
3.1 KiB
JavaScript

import mysql from "mysql2";
import dotenv from "dotenv";
dotenv.config();
const pool = mysql
.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
})
.promise();
export const getUser = async () => {
const [rows] = await pool.query("SELECT username FROM users");
if (rows.length > 0) {
const users = rows.map((r) => r.username);
return { users };
} else {
return { users: [], message: "No data found" };
}
};
export const confirmUser = async (username) => {
const [rows] = await pool.query("SELECT * FROM users WHERE username = ?", [
username,
]);
if (rows.length > 0) {
// creating userTicketTable
const d = new Date();
const day = d.getDate();
const month = d.getMonth() + 1;
const year = d.getFullYear();
const date = `${day}_${month}_${year}`;
const tableName = `${username}_${date}`;
console.log(tableName);
const [createTable] = await pool.query(
`CREATE TABLE IF NOT EXISTS ${tableName} (
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
)`
);
if (createTable) {
let nextID;
const getNextID = async () => {
const [rows] = await pool.query(
`SELECT id FROM ${tableName} ORDER BY id DESC LIMIT 1`
);
nextID = rows.length > 0 ? rows[0].id + 1 : 1;
};
await getNextID();
return { success: true, nextID, tableName };
} else {
return { success: false, message: "Table creation failed" };
}
} else {
return null;
}
};
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 };
};