Semi-stable version with old variable names
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
<?php
|
||||
|
||||
use Shuchkin\SimpleXLSX;
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
if (!isset($baseDir))
|
||||
$baseDir = $_SERVER['DOCUMENT_ROOT'];
|
||||
|
||||
require_once $baseDir . '/../scripts/session_functions.php';
|
||||
|
||||
ini_wkvs_session();
|
||||
|
||||
check_user_permission('trainer');
|
||||
|
||||
verify_csrf();
|
||||
|
||||
require $baseDir . '/../scripts/db/db-functions.php';
|
||||
require $baseDir . '/../scripts/db/db-tables.php';
|
||||
|
||||
require $baseDir . '/../composer/vendor/autoload.php';
|
||||
|
||||
$type = 'tr';
|
||||
|
||||
$dbconnection = require $baseDir . '/../scripts/db/db-verbindung-script.php';
|
||||
|
||||
if ($dbconnection['success'] !== true) {
|
||||
echo 'Critical DB Error.';
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($_FILES['xlsx_file']['error'] !== UPLOAD_ERR_OK) {
|
||||
echo json_encode(['success' => false, 'message' => 'Fehler beim Datei-Upload']);
|
||||
http_response_code(400);
|
||||
exit;
|
||||
}
|
||||
|
||||
$tmpName = $_FILES['xlsx_file']['tmp_name'];
|
||||
|
||||
if (!class_exists('Shuchkin\\SimpleXLSX')) {
|
||||
echo json_encode(['success' => false, 'message' => 'Fehler beim Laden des Plugins']);
|
||||
http_response_code(400);
|
||||
exit;
|
||||
}
|
||||
|
||||
$xlsx = SimpleXLSX::parse($tmpName);
|
||||
|
||||
$rows = $xlsx->rows();
|
||||
|
||||
$vereine_rows = db_select($mysqli, $tableVereine, 'verein', '', [], 'verein ASC');
|
||||
$vereine = array_column($vereine_rows, 'verein');
|
||||
|
||||
if (count($rows) < 2) {
|
||||
echo json_encode(['success' => false, 'message' => 'Die Excel-Datei muss mindestens einen Eintrag enthalten']);
|
||||
http_response_code(400);
|
||||
exit;
|
||||
}
|
||||
|
||||
$selectedverein = $_SESSION['selectedFreigabeTrainer'] ?? '';
|
||||
|
||||
$isAdmin = $selectedverein === "admin";
|
||||
|
||||
$columnMap = [
|
||||
'Nachname' => 'name',
|
||||
'Vorname' => 'vorname',
|
||||
'Geburtsdatum' => 'geburtsdatum',
|
||||
'Programm' => 'programm'
|
||||
];
|
||||
|
||||
if ($isAdmin) {
|
||||
$columnMap['Verein'] = 'verein';
|
||||
}
|
||||
|
||||
$header_row = false;
|
||||
|
||||
foreach ($rows as $row_index => $row) {
|
||||
$formated_row = array_map('trim', $row);
|
||||
|
||||
$columnIndexes = [];
|
||||
|
||||
$column_not_found = false;
|
||||
|
||||
foreach ($columnMap as $excelHeader => $dbColumn) {
|
||||
$index = array_search($excelHeader, $formated_row);
|
||||
if ($index === false) {
|
||||
$column_not_found = true;
|
||||
break;
|
||||
}
|
||||
$columnIndexes[$dbColumn] = $index;
|
||||
}
|
||||
|
||||
if ($column_not_found) {
|
||||
continue;
|
||||
} else {
|
||||
$header_row = $row_index;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$header_row) {
|
||||
echo json_encode(['success' => false, 'message' => 'Es wurde keine vollständige Header-Zeile gefunden']);
|
||||
http_response_code(400);
|
||||
exit;
|
||||
}
|
||||
|
||||
for ($i = 0; $i <= (max($header_row, 1)); $i++) {
|
||||
unset($rows[$i]);
|
||||
}
|
||||
|
||||
$programme_db = db_select($mysqli, $tableProgramme, 'programm', 'aktiv = ?', [1], 'programm ASC');
|
||||
|
||||
$programme = array_column($programme_db, 'programm');
|
||||
|
||||
$mysqli->begin_transaction();
|
||||
|
||||
$columns = ['name', 'vorname', 'geburtsdatum', 'programm', 'verein'];
|
||||
|
||||
$set = implode(', ', array_map(fn($col) => "$col = ?", $columns));
|
||||
|
||||
$sql = "INSERT INTO $tableTeilnehmende SET $set";
|
||||
|
||||
$stmt = $mysqli->prepare($sql);
|
||||
|
||||
$types = str_repeat('s', count($columns));
|
||||
|
||||
try {
|
||||
foreach ($rows as $row) {
|
||||
if (!array_filter($row))
|
||||
continue;
|
||||
|
||||
$data = [];
|
||||
foreach ($columnIndexes as $dbCol => $excel_column_index) {
|
||||
$data[$dbCol] = isset($row[$excel_column_index]) ? trim($row[$excel_column_index]) : null;
|
||||
}
|
||||
|
||||
if (!$isAdmin) {
|
||||
$data['verein'] = $selectedverein;
|
||||
} else {
|
||||
if (!in_array($data['verein'], $vereine)) {
|
||||
echo json_encode(['success' => false, 'message' => $data['verein'] . " existiert nicht im System"]);
|
||||
http_response_code(400);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$raw = trim($data['geburtsdatum']);
|
||||
|
||||
$temp = DateTime::createFromFormat('d.m.Y', $raw);
|
||||
|
||||
if ($temp && $temp->format('d.m.Y') === $raw) {
|
||||
$data['geburtsdatum'] = $temp->format('Y-m-d');
|
||||
} else {
|
||||
$data['geburtsdatum'] = substr($raw, 0, 10);
|
||||
}
|
||||
|
||||
|
||||
if (is_array($programme) && !(in_array($data['programm'], $programme))) {
|
||||
echo json_encode(['success' => false, 'message' => "Programm '{$data['programm']}' nicht valide bei " . $personEinzahl . " " . $data['name'] . " " . $data['vorname']]);
|
||||
http_response_code(400);
|
||||
exit;
|
||||
}
|
||||
|
||||
$values = array_values($data);
|
||||
|
||||
$stmt->bind_param($types, ...$values);
|
||||
|
||||
if (!$stmt->execute()) {
|
||||
echo json_encode(['success' => false, 'message' => "Fehler beim Einfügen eines Datensatzes"]);
|
||||
http_response_code(400);
|
||||
exit;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$stmt->close();
|
||||
|
||||
$mysqli->commit();
|
||||
} catch (Exception $e) {
|
||||
$mysqli->rollback();
|
||||
echo json_encode(['success' => false, 'message' => "Fehler beim Einfügen der Datensätze"]);
|
||||
http_response_code(400);
|
||||
exit;
|
||||
}
|
||||
|
||||
echo json_encode(['success' => true, 'message' => count($rows) . " Datensätze importiert"]);
|
||||
http_response_code(200);
|
||||
exit;
|
||||
@@ -47,7 +47,7 @@ foreach ($arrayids as $id) {
|
||||
exit;
|
||||
}
|
||||
|
||||
$sql = "SELECT bezahlt FROM $tableTurnerinnen WHERE id = ?";
|
||||
$sql = "SELECT bezahlt FROM $tableTeilnehmende WHERE id = ?";
|
||||
|
||||
$checkstmt = $mysqli->prepare($sql);
|
||||
$checkstmt->bind_param("i", $id);
|
||||
@@ -108,7 +108,7 @@ if (!$success) {
|
||||
|
||||
// Prepare statements once
|
||||
$sSql = "SELECT `name`, `vorname`, `programm`
|
||||
FROM $tableTurnerinnen
|
||||
FROM $tableTeilnehmende
|
||||
WHERE id = ?";
|
||||
|
||||
$pSql = "SELECT preis
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
if (!isset($baseDir))
|
||||
$baseDir = $_SERVER['DOCUMENT_ROOT'];
|
||||
|
||||
require_once $baseDir . '/../scripts/session_functions.php';
|
||||
|
||||
ini_wkvs_session();
|
||||
|
||||
check_user_permission('trainer');
|
||||
|
||||
verify_csrf();
|
||||
|
||||
require $baseDir . '/../scripts/db/db-functions.php';
|
||||
require $baseDir . '/../scripts/db/db-tables.php';
|
||||
|
||||
$type = 'tr';
|
||||
|
||||
$dbconnection = require $baseDir . '/../scripts/db/db-verbindung-script.php';
|
||||
|
||||
if ($dbconnection['success'] !== true) {
|
||||
echo 'Critical DB Error.';
|
||||
exit;
|
||||
}
|
||||
|
||||
$personen_ids_json = $_POST['personen_ids'] ?? '';
|
||||
|
||||
$personen_ids = json_decode($personen_ids_json) ?? [];
|
||||
|
||||
$personen_ids = !is_array($personen_ids) ? array(intval($personen_ids)) : array_map('intval', $personen_ids);
|
||||
|
||||
if (count($personen_ids) < 1) {
|
||||
echo json_encode(['success' => false, 'message' => "Keine Personen angegeben"]);
|
||||
http_response_code(422);
|
||||
exit;
|
||||
}
|
||||
|
||||
$userid = intval($_SESSION['user_id_trainer'] ?? 0);
|
||||
$arrayfreigaben = [];
|
||||
|
||||
if ($userid > 0) {
|
||||
$freigabe_json = db_get_var($mysqli, "SELECT freigabe FROM $tableInternUsers WHERE id = ?", [$userid]);
|
||||
|
||||
if (is_string($freigabe_json) && $freigabe_json !== '') {
|
||||
$arrayfreigaben = json_decode($freigabe_json, true) ?: [];
|
||||
|
||||
$arrayfreigaben = $arrayfreigaben['freigabenTrainer'] ?? [];
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($arrayfreigaben)) {
|
||||
$selectedverein = $_SESSION['selectedFreigabeTrainer'] ?? '';
|
||||
|
||||
if (!in_array($selectedverein, $arrayfreigaben)) {
|
||||
$selectedverein = $arrayfreigaben[0];
|
||||
$_SESSION['selectedFreigabeTrainer'] = $selectedverein;
|
||||
}
|
||||
}
|
||||
|
||||
$isAdmin = $selectedverein === "admin";
|
||||
|
||||
$mysqli->begin_transaction();
|
||||
|
||||
try {
|
||||
if (!$isAdmin) {
|
||||
$stmt = $mysqli->prepare("DELETE FROM $tableTeilnehmende WHERE `id` = ? AND `verein` = ?");
|
||||
foreach ($personen_ids as $s_id) {
|
||||
$stmt->bind_param("is", $s_id, $selectedverein);
|
||||
$stmt->execute();
|
||||
}
|
||||
} else {
|
||||
$stmt = $mysqli->prepare("DELETE FROM $tableTeilnehmende WHERE `id` = ?");
|
||||
foreach ($personen_ids as $s_id) {
|
||||
$stmt->bind_param("i", $s_id);
|
||||
$stmt->execute();
|
||||
}
|
||||
}
|
||||
$stmt->close();
|
||||
$mysqli->commit();
|
||||
} catch (Exception $e) {
|
||||
$mysqli->rollback();
|
||||
echo json_encode(['success' => false, 'message' => "Datenbankfehler beim Löschen"]);
|
||||
http_response_code(500);
|
||||
exit;
|
||||
}
|
||||
|
||||
echo json_encode(['success' => true, 'message' => count($personen_ids) . " Datensätze gelöscht"]);
|
||||
http_response_code(200);
|
||||
exit;
|
||||
@@ -70,7 +70,7 @@ require $baseDir . '/../scripts/db/db-tables.php';
|
||||
|
||||
$sql = "SELECT bi.id AS basket_id, bi.item_id, p.programm AS programm_name, p.preis, bi.id
|
||||
FROM $tableBasketItems bi
|
||||
LEFT JOIN $tableTurnerinnen t ON bi.item_id = t.id
|
||||
LEFT JOIN $tableTeilnehmende t ON bi.item_id = t.id
|
||||
LEFT JOIN $tableProgramme p ON p.programm = t.programm
|
||||
WHERE bi.user_id = ?";
|
||||
|
||||
|
||||
@@ -12,9 +12,13 @@ check_user_permission('trainer');
|
||||
|
||||
verify_csrf();
|
||||
|
||||
if (!isset($_POST['musicId']) || !isset($_POST['turnerinId']) || intval($_POST['musicId']) < 1 || intval($_POST['turnerinId']) < 1) {
|
||||
echo json_encode(['success' => false]);
|
||||
http_response_code(422);
|
||||
$audiofileId = intval($_POST['musicId'] ?? 0);
|
||||
$personId = intval($_POST['turnerinId'] ?? 0);
|
||||
$geraetId = intval($_POST['geraetId'] ?? 0);
|
||||
|
||||
if ($audiofileId < 1 || $personId < 1 || $geraetId < 1) {
|
||||
echo json_encode(['success' => false, 'message' => 'Ungültige Eingabe.']);
|
||||
http_response_code(400);
|
||||
exit;
|
||||
}
|
||||
|
||||
@@ -30,13 +34,10 @@ if ($data['success'] === false){
|
||||
|
||||
require $baseDir . '/../scripts/db/db-tables.php';
|
||||
|
||||
$musicId = intval($_POST['musicId']);
|
||||
$turnerinId = intval($_POST['turnerinId']);
|
||||
|
||||
$sql = "UPDATE $tableTurnerinnen SET bodenmusik = ? WHERE id = ?";
|
||||
$sql = "INSERT INTO $tableTeilnehmendeAudiofiles (`person_id`, `geraet_id`, `audiofile_id`) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE `audiofile_id` = VALUES(`audiofile_id`)";
|
||||
|
||||
$stmt = $mysqli->prepare($sql);
|
||||
$stmt->bind_param("ss", $musicId, $turnerinId);
|
||||
$stmt->bind_param("iii", $personId, $geraetId, $audiofileId);
|
||||
|
||||
if (!$stmt->execute()) {
|
||||
http_response_code(500);
|
||||
@@ -45,7 +46,7 @@ if (!$stmt->execute()) {
|
||||
|
||||
$stmt->close();
|
||||
|
||||
$sql = "SELECT name, vorname FROM $tableTurnerinnen WHERE id = ?";
|
||||
$sql = "SELECT name, vorname FROM $tableTeilnehmende WHERE id = ?";
|
||||
|
||||
$stmt = $mysqli->prepare($sql);
|
||||
$stmt->bind_param("s", $turnerinId);
|
||||
|
||||
@@ -82,6 +82,9 @@ $rechnungenOrt = db_get_var($mysqli, "SELECT `value` FROM $tableVar WHERE `name`
|
||||
$rechnungenIBAN = db_get_var($mysqli, "SELECT `value` FROM $tableVar WHERE `name` = ?", ['rechnungenIBAN']);
|
||||
$linkWebseite = db_get_var($mysqli, "SELECT `value` FROM $tableVar WHERE `name` = ?", ['linkWebseite']);
|
||||
|
||||
$rechnungenPostversand = db_get_var($mysqli, "SELECT `value` FROM $tableVar WHERE `name` = ?", ['rechnungenPostversand']);
|
||||
$rechnungenPostversandKosten = db_get_var($mysqli, "SELECT `value` FROM $tableVar WHERE `name` = ?", ['rechnungenPostversandKosten']);
|
||||
|
||||
|
||||
$dbresult = $dbresult[0];
|
||||
|
||||
@@ -222,7 +225,7 @@ $totalPreis = 0.00;
|
||||
$dbdata = [];
|
||||
|
||||
foreach ($turnerinnnenIds as $singleid){
|
||||
$newdbresult = db_select($mysqli, $tableTurnerinnen, 'name, vorname, programm, verein', 'id = ?', [$singleid]);
|
||||
$newdbresult = db_select($mysqli, $tableTeilnehmende, 'name, vorname, programm, verein', 'id = ?', [$singleid]);
|
||||
if ($newdbresult && count($newdbresult) === 1){
|
||||
$dbdata[$singleid] = $newdbresult;
|
||||
$pdf->SetFont('', '', 10);
|
||||
@@ -322,26 +325,25 @@ foreach ($dbdata as $singleid => $newdbresult){
|
||||
$pdf->SetDrawColor(0, 0, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
if (isset($_POST['postversand'])) {
|
||||
if ($rechnungenPostversand && isset($_POST['postversand'])) {
|
||||
$pdf->SetFont('', '', 10);
|
||||
|
||||
$text = 'Postversand der Rechnung durch WKVS';
|
||||
$text = 'Postversand der Rechnung';
|
||||
$pdf->Cell($columns['name']['max_width'], 10, $text, 0, 0, 'L');
|
||||
$pdf->Cell($columns['programm']['max_width'], 10, '', 0, 0, 'L');
|
||||
$pdf->Cell($columns['verein']['max_width'], 10, '', 0, 0, 'L');
|
||||
|
||||
$pdf->SetFillColor(100, 100, 100);
|
||||
|
||||
$pdf->Cell($columns['preis']['max_width'], 10, 'CHF 2.50', 0, 1, 'C');
|
||||
$pdf->Cell($columns['preis']['max_width'], 10, 'CHF '. number_format(floatval($rechnungenPostversandKosten ?? 0), 2), 0, 1, 'C');
|
||||
|
||||
$pdf->SetDrawColor(100, 100, 100);
|
||||
$pdf->Line(15, $pdf->getY(), 210 - 15, $pdf->getY());
|
||||
$pdf->SetDrawColor(0, 0, 0);
|
||||
|
||||
$totalPreis += 2.5;
|
||||
$totalPreis += floatval($rechnungenPostversandKosten ?? 0);
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
if ($totalPreis !== 0) {
|
||||
require __DIR__ . '/ajax-neu_qr_rechnung.php';
|
||||
|
||||
Reference in New Issue
Block a user