regenrates pages
This commit is contained in:
+90
-56
@@ -1,63 +1,97 @@
|
||||
<?php
|
||||
// Connessione al database (assicurati di avere le tue credenziali)
|
||||
include('Connections/bkngstm.php');
|
||||
require_once('include/headscript.php');
|
||||
|
||||
ini_set('display_errors', '1');
|
||||
ini_set('display_startup_errors', '1');
|
||||
error_reporting(E_ALL);
|
||||
// Crea una connessione al database
|
||||
$conn = new mysqli($servername, $username, $password, $dbname);
|
||||
/**
|
||||
* Inserisce un partecipante in una classe (bookingclass).
|
||||
* Se l'utente non esiste ancora (userid mancante), lo crea in auth_users
|
||||
* riusando un eventuale account con la stessa email. Tutto in transazione.
|
||||
*/
|
||||
$pdo = DBHandlerSelect::getInstance()->getConnection();
|
||||
|
||||
// Verifica la connessione al database
|
||||
if ($conn->connect_error) {
|
||||
die("Connessione al database fallita: " . $conn->connect_error);
|
||||
}
|
||||
// --- Input ---
|
||||
$name = trim($_POST['name'] ?? '');
|
||||
$surname = trim($_POST['surname'] ?? '');
|
||||
$email = trim($_POST['email'] ?? '');
|
||||
$userid = isset($_POST['userid']) ? (int) $_POST['userid'] : 0;
|
||||
$idserviceschedule = isset($_POST['idserviceschedule']) ? (int) $_POST['idserviceschedule'] : 0;
|
||||
$status = trim($_POST['status'] ?? 'booked');
|
||||
$idorder = isset($_POST['idorder']) ? (int) $_POST['idorder'] : 0;
|
||||
$idservice = isset($_POST['idservice']) ? (int) $_POST['idservice'] : 0;
|
||||
$bookingstart = trim($_POST['bookingstart'] ?? '');
|
||||
|
||||
// Ottieni i dati dal form
|
||||
$name = $_POST["name"];
|
||||
$surname = $_POST["surname"];
|
||||
$email = $_POST["email"];
|
||||
$userid = $_POST["userid"];
|
||||
$idserviceschedule = $_POST["idserviceschedule"];
|
||||
$status = $_POST["status"];
|
||||
$idorder = $_POST["idorder"];
|
||||
$idservice = $_POST["idservice"];
|
||||
$bookingstart = $_POST["bookingstart"];
|
||||
|
||||
// Se $userid non esiste o è 0, inserisci prima nella tabella auth_users
|
||||
if (!$userid || $userid == 0) {
|
||||
$password = "YogiBook159";
|
||||
$role_id = 2;
|
||||
$user_status = "Active";
|
||||
$created_at = date('Y-m-d H:i:s'); // Data e ora attuali
|
||||
$avatar = "mediationb.png";
|
||||
|
||||
$sql_user = "INSERT INTO auth_users (first_name, last_name, email, password, role_id, status, created_at, avatar)
|
||||
VALUES ('$name', '$surname', '$email', '$password', '$role_id', '$user_status', '$created_at', '$avatar')";
|
||||
|
||||
|
||||
if ($conn->query($sql_user) === TRUE) {
|
||||
$userid = $conn->insert_id; // Ottieni l'ID dell'ultimo record inserito
|
||||
} else {
|
||||
// In caso di errore, gestiscilo appropriatamente
|
||||
echo "Errore durante l'inserimento dell'utente: " . $conn->error;
|
||||
$conn->close();
|
||||
exit; // Termina lo script se c'è stato un errore
|
||||
}
|
||||
}
|
||||
|
||||
// Esegui la query per inserire il record nella tabella "bookingclass"
|
||||
$sql = "INSERT INTO bookingclass (iduser, idserviceschedule, status, idorder, idservice, bookingstart)
|
||||
VALUES ('$userid', '$idserviceschedule', '$status', '$idorder', '$idservice', '$bookingstart')";
|
||||
|
||||
if ($conn->query($sql) === TRUE) {
|
||||
// Inserimento riuscito, reindirizza l'utente a "adminpanel.php"
|
||||
header("Location: adminpanel.php");
|
||||
// --- Validazione minima ---
|
||||
if ($idserviceschedule <= 0 || $idservice <= 0) {
|
||||
header('Location: adminpanel.php?error=missingdata');
|
||||
exit;
|
||||
} else {
|
||||
// In caso di errore, gestiscilo appropriatamente
|
||||
echo "Errore durante l'inserimento del record: " . $conn->error;
|
||||
}
|
||||
|
||||
// Chiudi la connessione al database
|
||||
$conn->close();
|
||||
try {
|
||||
$pdo->beginTransaction();
|
||||
|
||||
// Se non abbiamo un userid valido, dobbiamo risolvere/creare l'utente
|
||||
if ($userid <= 0) {
|
||||
|
||||
// 1) Se è stata fornita un'email, controlliamo se l'utente esiste già
|
||||
if ($email !== '') {
|
||||
$check = $pdo->prepare("SELECT id FROM auth_users WHERE email = :email LIMIT 1");
|
||||
$check->execute([':email' => $email]);
|
||||
$existing = $check->fetchColumn();
|
||||
if ($existing) {
|
||||
$userid = (int) $existing;
|
||||
}
|
||||
}
|
||||
|
||||
// 2) Se ancora non c'è, creiamo un nuovo utente
|
||||
if ($userid <= 0) {
|
||||
// Password casuale hashata (questi account non usano una password condivisa)
|
||||
$randomPassword = bin2hex(random_bytes(8));
|
||||
$hashed = password_hash($randomPassword, PASSWORD_BCRYPT);
|
||||
|
||||
$insUser = $pdo->prepare(
|
||||
"INSERT INTO auth_users
|
||||
(first_name, last_name, email, password, role_id, status, created_at, avatar)
|
||||
VALUES
|
||||
(:first, :last, :email, :password, :role, :status, :created, :avatar)"
|
||||
);
|
||||
$insUser->execute([
|
||||
':first' => $name,
|
||||
':last' => $surname,
|
||||
':email' => $email !== '' ? $email : null,
|
||||
':password' => $hashed,
|
||||
':role' => 2,
|
||||
':status' => 'Active',
|
||||
':created' => date('Y-m-d H:i:s'),
|
||||
':avatar' => 'mediationb.png',
|
||||
]);
|
||||
$userid = (int) $pdo->lastInsertId();
|
||||
}
|
||||
}
|
||||
|
||||
// 3) Inserimento della prenotazione
|
||||
$insBooking = $pdo->prepare(
|
||||
"INSERT INTO bookingclass
|
||||
(iduser, idserviceschedule, status, idorder, idservice, bookingstart)
|
||||
VALUES
|
||||
(:iduser, :idschedule, :status, :idorder, :idservice, :bookingstart)"
|
||||
);
|
||||
$insBooking->execute([
|
||||
':iduser' => $userid,
|
||||
':idschedule' => $idserviceschedule,
|
||||
':status' => $status,
|
||||
':idorder' => $idorder,
|
||||
':idservice' => $idservice,
|
||||
':bookingstart' => $bookingstart !== '' ? $bookingstart : null,
|
||||
]);
|
||||
|
||||
$pdo->commit();
|
||||
|
||||
header('Location: adminpanel.php?success=added');
|
||||
exit;
|
||||
} catch (Throwable $ex) {
|
||||
if ($pdo->inTransaction()) {
|
||||
$pdo->rollBack();
|
||||
}
|
||||
error_log('inserisci_record error: ' . $ex->getMessage());
|
||||
header('Location: adminpanel.php?error=insert');
|
||||
exit;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user