110 lines
3.1 KiB
JavaScript
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 };
|
|
};
|