WIP teilnahme
This commit is contained in:
parent
e5637d4929
commit
3dc185b667
@ -18,6 +18,13 @@
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-link {
|
||||
text-decoration: underline;
|
||||
background-color: transparent;
|
||||
color: var(--brand-white);
|
||||
border: none;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background: var(--brand-primary);
|
||||
border-radius: 3px;
|
||||
|
@ -267,7 +267,7 @@ class UserController{
|
||||
|
||||
$currentUser = $this->db->getUserById($userId);
|
||||
if(!$currentUser){
|
||||
throw new \Exception("User nicht gefunden");
|
||||
new \Blog\Library\ErrorMsg("User nicht gefunden");
|
||||
}
|
||||
|
||||
$validData = [
|
||||
@ -296,7 +296,7 @@ class UserController{
|
||||
|
||||
$currentUser = $this->db->getUserById($userId);
|
||||
if (!$currentUser) {
|
||||
throw new \Exception('User nicht gefunden');
|
||||
new \Blog\Library\ErrorMsg('User nicht gefunden');
|
||||
}
|
||||
|
||||
$submitted = [
|
||||
@ -388,5 +388,20 @@ class UserController{
|
||||
|
||||
}
|
||||
|
||||
public function enroll() {
|
||||
$courseId = $_POST['id'] ?? null;
|
||||
$userId = $_SESSION['user_id'] ?? null;
|
||||
|
||||
if ($userId === null) {
|
||||
new \Blog\Library\ErrorMsg("Nicht eingeloggt.");
|
||||
}
|
||||
|
||||
if ($courseId === null) {
|
||||
new \Blog\Library\ErrorMsg("Kein Kurs ausgewählt");
|
||||
}
|
||||
|
||||
$this->db->enroll($courseId, $userId);
|
||||
|
||||
$this->view->setDoMethodName("showEnrollmentConfirmation");
|
||||
}
|
||||
}
|
@ -192,15 +192,32 @@ class UserModel extends Database
|
||||
}
|
||||
public function getAllCourses() {
|
||||
$pdo = $this->linkDB();
|
||||
$userId = $_SESSION['user_id'] ?? null;
|
||||
|
||||
if ($userId === null) {
|
||||
$sql = "SELECT
|
||||
k.id, k.name, k.preis, k.dauer, k.rabatt, k.kategorie, k.beschreibung, k.ort_id,
|
||||
o.stadt, o.strasse, o.plz, b.note, b.kommentar,
|
||||
0 AS isTeilnehmer
|
||||
FROM kurs AS k
|
||||
JOIN ort AS o ON o.id = k.ort_id
|
||||
LEFT JOIN bewertungen AS b ON b.kurs_id = k.id";
|
||||
$params = [];
|
||||
} else {
|
||||
$sql = "SELECT
|
||||
k.id, k.name, k.preis, k.dauer, k.rabatt, k.kategorie, k.beschreibung, k.ort_id,
|
||||
o.stadt, o.strasse, o.plz, b.note, b.kommentar,
|
||||
CASE WHEN ku.user_id IS NULL THEN 0 ELSE 1 END AS isTeilnehmer
|
||||
FROM kurs AS k
|
||||
JOIN ort AS o ON o.id = k.ort_id
|
||||
LEFT JOIN bewertungen AS b ON b.kurs_id = k.id
|
||||
LEFT JOIN kurs_user AS ku ON ku.kurs_id = k.id AND ku.user_id = :userId";
|
||||
$params = ['userId' => $userId];
|
||||
}
|
||||
|
||||
$sql = "SELECT k.id, k.name, k.preis, k.dauer, k.rabatt, k.kategorie, k.beschreibung, k.ort_id,
|
||||
o.stadt, o.strasse, o.plz, b.note, b.kommentar
|
||||
FROM kurs AS k
|
||||
JOIN ort AS o ON o.id = k.ort_id
|
||||
LEFT JOIN bewertungen AS b ON b.kurs_id = k.id";
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute();
|
||||
$sth->execute($params);
|
||||
return $sth->fetchAll(\PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Lesen der Daten.", $e);
|
||||
@ -208,7 +225,6 @@ class UserModel extends Database
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function updateCourse($course) {
|
||||
$pdo = $this->linkDB();
|
||||
|
||||
@ -278,4 +294,35 @@ class UserModel extends Database
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function enroll($courseId, $userId) {
|
||||
$pdo = $this->linkDB();
|
||||
|
||||
try {
|
||||
$checkSql = "SELECT COUNT(*) FROM kurs_user WHERE user_id = :user_id AND kurs_id = :kurs_id";
|
||||
$checkStmt = $pdo->prepare($checkSql);
|
||||
$checkStmt->execute([
|
||||
':user_id' => $userId,
|
||||
':kurs_id' => $courseId
|
||||
]);
|
||||
|
||||
if ($checkStmt->fetchColumn() > 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$insertSql = "INSERT INTO kurs_user (user_id, kurs_id) VALUES (:user_id, :kurs_id)";
|
||||
$insertStmt = $pdo->prepare($insertSql);
|
||||
$insertStmt->execute([
|
||||
':user_id' => $userId,
|
||||
':kurs_id' => $courseId
|
||||
]);
|
||||
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Einschreiben in den Kurs.", $e);
|
||||
die;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
12
Views/User/showEnrollmentConfirmation.phtml
Normal file
12
Views/User/showEnrollmentConfirmation.phtml
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
include dirname(__DIR__).'/header.phtml';
|
||||
?>
|
||||
|
||||
<div class="msg">
|
||||
<p>Erfolgreich aufgenommen!</p>
|
||||
<a href="?controller=welcome">Weiter</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<?php include dirname(__DIR__).'/footer.phtml'; ?>
|
@ -59,46 +59,37 @@ $location = $_GET['location'] ?? '';
|
||||
if (!empty($filteredKurse)) {
|
||||
echo '<div class="courses-view">';
|
||||
foreach ($filteredKurse as $kurs) {
|
||||
$courseCard = $doc->createElement('div');
|
||||
$courseCard->setAttribute('class', 'course-card');
|
||||
|
||||
$courseImage = $doc->createElement('div');
|
||||
$courseImage->setAttribute('class', 'course-image');
|
||||
$courseCard->appendChild($courseImage);
|
||||
foreach ($filteredKurse as $kurs) {
|
||||
$id = htmlspecialchars($kurs['id']);
|
||||
$note = htmlspecialchars($kurs['note'] ?? 'Keine Bewertung') . ' ★';
|
||||
$name = htmlspecialchars($kurs['name']);
|
||||
$address = htmlspecialchars($kurs['strasse'] . ', ' . $kurs['stadt'] . ' ' . $kurs['plz']);
|
||||
$preis = htmlspecialchars($kurs['preis']) . ' €';
|
||||
$kategorie = htmlspecialchars($kurs['kategorie'] ?? 'Keine Kategorie');
|
||||
|
||||
$courseContent = $doc->createElement('div');
|
||||
$courseContent->setAttribute('class', 'course-content');
|
||||
$courseCard->appendChild($courseContent);
|
||||
|
||||
$courseLeft = $doc->createElement('div');
|
||||
$courseLeft->setAttribute('class', 'course-left');
|
||||
$courseContent->appendChild($courseLeft);
|
||||
|
||||
$note = $doc->createElement('div', htmlspecialchars($kurs['note'] ?? 'Keine Bewertung') . ' ★');
|
||||
$courseLeft->appendChild($note);
|
||||
|
||||
$name = $doc->createElement('div', htmlspecialchars($kurs['name']));
|
||||
$courseLeft->appendChild($name);
|
||||
|
||||
$address = $doc->createElement('div', htmlspecialchars($kurs['strasse'] . ', ' . $kurs['stadt'] . ' ' . $kurs['plz']));
|
||||
$courseLeft->appendChild($address);
|
||||
|
||||
$courseRight = $doc->createElement('div');
|
||||
$courseRight->setAttribute('class', 'course-right');
|
||||
$courseContent->appendChild($courseRight);
|
||||
|
||||
$price = $doc->createElement('div', htmlspecialchars($kurs['preis']) . ' €');
|
||||
$courseRight->appendChild($price);
|
||||
|
||||
$category = $doc->createElement('div', htmlspecialchars($kurs['kategorie'] ?? 'Keine Kategorie'));
|
||||
$courseRight->appendChild($category);
|
||||
|
||||
$editLink = $doc->createElement('a', "Bearbeiten");
|
||||
$editLink->setAttribute('href', '?controller=User&do=showUserAccountPage&id=' . $kurs['id']);
|
||||
$editLink->setAttribute('class', 'course-card-link');
|
||||
$courseRight->appendChild($editLink);
|
||||
|
||||
echo $doc->saveHTML($courseCard);
|
||||
echo <<<HTML
|
||||
<div class="course-card">
|
||||
<div class="course-image"></div>
|
||||
<div class="course-content">
|
||||
<div class="course-left">
|
||||
<div>$note</div>
|
||||
<div>$name</div>
|
||||
<div>$address</div>
|
||||
</div>
|
||||
<div class="course-right">
|
||||
<div>$preis</div>
|
||||
<div>$kategorie</div>
|
||||
<form method="POST" class="course-card-form">
|
||||
<input type="hidden" name="do" value="enroll">
|
||||
<input type="hidden" name="controller" value="user">
|
||||
<input type="hidden" name="id" value="$id">
|
||||
<button type="submit" class="btn-link">Teilnehmen</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
HTML;
|
||||
}
|
||||
}
|
||||
echo '</div>';
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user