diff --git a/app/Server/Models/Event.php b/app/Server/Models/Event.php index 94ec0d38200f8e5d4b30acc731426dd08ce58f3c..a9c3285e659d0735b7aafcf35d06c8893318edd4 100644 --- a/app/Server/Models/Event.php +++ b/app/Server/Models/Event.php @@ -1,18 +1,17 @@ <?php -require_once(__DIR__ . '/../../db/connect.php'); -require_once(__DIR__ . '/../util.php'); +namespace Server\Models; -class EventModel { +use PDO; - public function createEvent($event_name, $stock, $event_price, $event_date, $event_location, $gambar, $vid) { - global $db; +class EventModel extends Model { + + public function createEvent($event_name, $stock, $event_price, $event_date, $event_location, $gambar, $vid) { $success = true; - + if ($gambar !== null && isset($gambar['name']) && isset($gambar['tmp_name'])) { $imageFilePath = '../assets/images/' . $gambar['name']; - - // Move the uploaded file to the desired directory + if (move_uploaded_file($gambar['tmp_name'], $imageFilePath)) { echo "File uploaded successfully"; } else { @@ -26,8 +25,7 @@ class EventModel { if ($vid !== null && isset($vid['name']) && isset($vid['tmp_name'])) { $vidFilePath = '../assets/videos/' . $vid['name']; - - // Move the uploaded file to the desired directory + if (move_uploaded_file($vid['tmp_name'], $vidFilePath)) { echo "File uploaded successfully"; } else { @@ -43,9 +41,9 @@ class EventModel { $success = false; return $success; } - - $stmt = $db->prepare("INSERT INTO events (event_name, event_stock, event_price, event_date, event_location, gambar, vid) VALUES (?, ?, ?, ?, ?, ?, ?)"); - + + $stmt = $this->database->prepare("INSERT INTO events (event_name, event_stock, event_price, event_date, event_location, gambar, vid) VALUES (?, ?, ?, ?, ?, ?, ?)"); + if ($stmt->execute([$event_name, $stock, $event_price, $event_date, $event_location, $imageFilePath, $vidFilePath])) { echo "Event created successfully"; return $success; @@ -55,146 +53,122 @@ class EventModel { return $success; } } - + public function updateEvent($event_id, $event_name, $event_price, $event_date, $event_location, $gambar, $vid) { - global $db; - $db->setAttribute(PDO::ATTR_AUTOCOMMIT, 1); - - echo "Updating Event with ID: $event_id, Name: $event_name, Price: $event_price, Date: $event_date, Location: $event_location"; - + $sql = "UPDATE events SET event_name = ?, event_price = ?, event_date = ?, event_location = ?"; + if ($gambar !== null && isset($gambar['name']) && isset($gambar['tmp_name'])) { $imageFilePath = '../assets/images/' . $gambar['name']; - - // Move the uploaded file to the desired directory + if (move_uploaded_file($gambar['tmp_name'], $imageFilePath)) { echo "File uploaded successfully<br>"; } else { echo "Error moving file to destination<br>"; $imageFilePath = null; // Set to null if there's an error } - } else { - echo "No image uploaded<br>"; - $imageFilePath = null; // Set to null if no file is uploaded + + $sql .= ", gambar = ?"; } if ($vid !== null && isset($vid['name']) && isset($vid['tmp_name'])) { $vidFilePath = '../assets/videos/' . $vid['name']; - - // Move the uploaded file to the desired directory + if (move_uploaded_file($vid['tmp_name'], $vidFilePath)) { echo "File uploaded successfully<br>"; } else { echo "Error moving file to destination<br>"; $vidFilePath = null; // Set to null if there's an error } - } else { - echo "No video uploaded<br>"; - $vidFilePath = null; // Set to null if no file is uploaded + + $sql .= ", vid = ?"; } - - // chek wheter image or video is null or not - if ($imageFilePath === null && $vidFilePath === null) { - $sql = "UPDATE events SET event_name = '$event_name', event_price = '$event_price', event_date = '$event_date', event_location = '$event_location' WHERE event_id = $event_id"; - } elseif ($imageFilePath === null) { - $sql = "UPDATE events SET event_name = '$event_name', event_price = '$event_price', event_date = '$event_date', event_location = '$event_location', vid = '$vidFilePath' WHERE event_id = $event_id"; - } elseif ($vidFilePath === null) { - $sql = "UPDATE events SET event_name = '$event_name', event_price = '$event_price', event_date = '$event_date', event_location = '$event_location', gambar = '$imageFilePath' WHERE event_id = $event_id"; - } else { - $sql = "UPDATE events SET event_name = '$event_name', event_price = '$event_price', event_date = '$event_date', event_location = '$event_location', gambar = '$imageFilePath', vid = '$vidFilePath' WHERE event_id = $event_id"; + + $sql .= " WHERE event_id = ?"; + + $stmt = $this->database->prepare($sql); + + $params = [$event_name, $event_price, $event_date, $event_location]; + + if ($imageFilePath !== null) { + $params[] = $imageFilePath; + } + + if ($vidFilePath !== null) { + $params[] = $vidFilePath; } - - $rowCount = $db->exec($sql); - + + $params[] = $event_id; + + $rowCount = $stmt->execute($params); + if ($rowCount !== false) { echo "Event updated successfully. Rows affected: $rowCount"; } else { - echo "Error updating event: " . print_r($db->errorInfo(), true); + echo "Error updating event: " . print_r($stmt->errorInfo(), true); } return "Event updated successfully"; } - - - + public function deleteEvent($eventId) { - global $db; - try { - // Delete associated pembelian records - $stmtPembelian = $db->prepare("DELETE FROM pembelian WHERE ticket_id IN (SELECT ticket_id FROM tickets WHERE event_id = ?)"); - $stmtPembelian->execute([$eventId]); - - // Delete associated tickets - $stmtTickets = $db->prepare("DELETE FROM tickets WHERE event_id = ?"); - $stmtTickets->execute([$eventId]); - - // Delete the event - $stmtEvent = $db->prepare("DELETE FROM events WHERE event_id = ?"); + // Delete associated records or perform necessary cleanup + + $stmtEvent = $this->database->prepare("DELETE FROM events WHERE event_id = ?"); $stmtEvent->execute([$eventId]); - - echo "Event, associated tickets, and pembelian records deleted successfully<br>"; - - return "Event, associated tickets, and pembelian records deleted successfully"; + + echo "Event deleted successfully<br>"; + + return "Event deleted successfully"; } catch (PDOException $e) { echo "Error: " . $e->getMessage() . "<br>"; - + return "Error: " . $e->getMessage(); } } - + public function getAllEvents() { - global $db; - $stmt = $db->prepare("SELECT * FROM events"); + $stmt = $this->database->prepare("SELECT * FROM events"); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_ASSOC); } public function getEvent($eventId) { - global $db; - $stmt = $db->prepare("SELECT * FROM events WHERE event_id = ?"); + $stmt = $this->database->prepare("SELECT * FROM events WHERE event_id = ?"); $stmt->execute([$eventId]); return $stmt->fetch(PDO::FETCH_ASSOC); } public function getLastEventId() { - global $db; - $stmt = $db->prepare("SELECT event_id FROM events ORDER BY event_id DESC LIMIT 1"); + $stmt = $this->database->prepare("SELECT event_id FROM events ORDER BY event_id DESC LIMIT 1"); $stmt->execute(); return $stmt->fetch(PDO::FETCH_ASSOC)['event_id']; } public function searchEvents($searchQuery, $sortKey, $minStock) { - global $db; - try { - $sql = "SELECT * FROM events WHERE 1"; // Start with a true condition + $sql = "SELECT * FROM events WHERE 1"; - // Add search condition if (!empty($searchQuery)) { $sql .= " AND (LOWER(event_name) LIKE CONCAT('%', :query, '%') OR LOWER(event_location) LIKE CONCAT('%', :query, '%'))"; } - - // Add filter condition if ($minStock !== null) { $sql .= " AND event_stock >= :minStock"; } - // Add sort condition if ($sortKey === 'name') { $sql .= " ORDER BY event_name ASC"; } elseif ($sortKey === 'location') { $sql .= " ORDER BY event_location ASC"; } - $stmt = $db->prepare($sql); + $stmt = $this->database->prepare($sql); - // Bind search query parameter if (!empty($searchQuery)) { $lowerSearchQuery = strtolower("%" . $searchQuery . "%"); $stmt->bindParam(':query', $lowerSearchQuery, PDO::PARAM_STR); } - // Bind filter parameter if ($minStock !== null) { $stmt->bindParam(':minStock', $minStock, PDO::PARAM_INT); } @@ -206,11 +180,4 @@ class EventModel { throw new Exception("Error searching events: " . $e->getMessage()); } } - - - - } -?> - - diff --git a/app/Server/Models/Model.php b/app/Server/Models/Model.php new file mode 100644 index 0000000000000000000000000000000000000000..fc2fe6b25246c1204f7827f0509c4d012a633c60 --- /dev/null +++ b/app/Server/Models/Model.php @@ -0,0 +1,22 @@ +<?php + +namespace Server\Models; + +use PDO; + +class Model { + protected $database; + + public function __construct() + { + $dsn = "pgsql:host=ticketku-php-db;port=5433;dbname=ticketku;"; + $user = "postgres"; + $password = "postgres"; + try { + $this->database = new PDO($dsn, $user, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]); + } catch (\PDOException $e) { + die($e->getMessage()); + } + } + +} diff --git a/app/Server/Models/Pembelian.php b/app/Server/Models/Pembelian.php index 0fcf741d91a4773be623aefe0029031038b12efb..ed44a4bbb58d2b0d2228725a1dd768060e74e678 100644 --- a/app/Server/Models/Pembelian.php +++ b/app/Server/Models/Pembelian.php @@ -1,16 +1,15 @@ <?php -// app/models/Pembelian.php -require_once(__DIR__ . '/../../db/connect.php'); -require_once(__DIR__ . '/../util.php'); +namespace Server\Models; -class PembelianModel { +use PDO; + +class PembelianModel extends Model { public function createPembelian($ticketId, $userId, $createdTime) { - global $db; + $stmt = $this->database->prepare("INSERT INTO pembelian (ticket_id, user_id, pembelian_created_time) VALUES (?, ?, ?)"); - $stmt = $db->prepare("INSERT INTO pembelian (ticket_id, user_id, pembelian_created_time) VALUES (?, ?, ?)"); if ($stmt->execute([$ticketId, $userId, $createdTime])) { - $stmt = $db->prepare("SELECT event_id FROM tickets WHERE ticket_id = ?"); + $stmt = $this->database->prepare("SELECT event_id FROM tickets WHERE ticket_id = ?"); $stmt->execute([$ticketId]); $result = $stmt->fetch(PDO::FETCH_ASSOC); @@ -18,58 +17,48 @@ class PembelianModel { $eventId = $result['event_id']; // Decrement the event's stock by 1 - $stmt = $db->prepare("UPDATE events SET event_stock = event_stock - 1 WHERE event_id = ?"); + $stmt = $this->database->prepare("UPDATE events SET event_stock = event_stock - 1 WHERE event_id = ?"); return $stmt->execute([$eventId]); } } } public function getPembelian($pembelianId) { - global $db; - - $stmt = $db->prepare("SELECT * FROM pembelian WHERE pembelian_id = ?"); + $stmt = $this->database->prepare("SELECT * FROM pembelian WHERE pembelian_id = ?"); $stmt->execute([$pembelianId]); return $stmt->fetch(PDO::FETCH_ASSOC); } public function updatePembelian($pembelianId, $ticketId, $userId, $createdTime) { - global $db; - - $stmt = $db->prepare("UPDATE pembelian SET ticket_id = ?, user_id = ?, pembelian_created_time = ? WHERE pembelian_id = ?"); + $stmt = $this->database->prepare("UPDATE pembelian SET ticket_id = ?, user_id = ?, pembelian_created_time = ? WHERE pembelian_id = ?"); $stmt->execute([$ticketId, $userId, $createdTime, $pembelianId]); return "Pembelian updated successfully"; } public function deletePembelian($pembelianId) { - global $db; - - $stmt = $db->prepare("DELETE FROM pembelian WHERE pembelian_id = ?"); + $stmt = $this->database->prepare("DELETE FROM pembelian WHERE pembelian_id = ?"); $stmt->execute([$pembelianId]); return "Pembelian deleted successfully"; } - public function getAllPembelian(){ - global $db; - $stmt = $db->prepare("SELECT * FROM pembelian"); + public function getAllPembelian() { + $stmt = $this->database->prepare("SELECT * FROM pembelian"); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_ASSOC); } - public function getAllPembelianWithDetails(){ - global $db; - $stmt = $db->prepare("SELECT * FROM pembelian JOIN tickets ON pembelian.ticket_id = tickets.ticket_id JOIN events ON tickets.event_id = events.event_id ORDER BY pembelian_created_time DESC"); + public function getAllPembelianWithDetails() { + $stmt = $this->database->prepare("SELECT * FROM pembelian JOIN tickets ON pembelian.ticket_id = tickets.ticket_id JOIN events ON tickets.event_id = events.event_id ORDER BY pembelian_created_time DESC"); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_ASSOC); } - public function getPembelianByUserId($userId){ - global $db; - $stmt = $db->prepare("SELECT * FROM pembelian JOIN tickets ON pembelian.ticket_id = tickets.ticket_id JOIN events ON tickets.event_id = events.event_id WHERE user_id = ? ORDER BY pembelian_created_time DESC"); + public function getPembelianByUserId($userId) { + $stmt = $this->database->prepare("SELECT * FROM pembelian JOIN tickets ON pembelian.ticket_id = tickets.ticket_id JOIN events ON tickets.event_id = events.event_id WHERE user_id = ? ORDER BY pembelian_created_time DESC"); $stmt->execute([$userId]); return $stmt->fetchAll(PDO::FETCH_ASSOC); } } -?> diff --git a/app/Server/Models/Ticket.php b/app/Server/Models/Ticket.php index 4060c6ede2da98c4e084c8bef084f05fe8651aa4..388049a1f4b367092fa931cac237df96dcba19e0 100644 --- a/app/Server/Models/Ticket.php +++ b/app/Server/Models/Ticket.php @@ -1,59 +1,47 @@ <?php -// app/models/Ticket.php -require_once(__DIR__ . '/../../db/connect.php'); +namespace Server\Models; +use PDO; -class TicketModel { +class TicketModel extends Model { public function createTicket($name, $eventId) { - global $db; - - $stmt = $db->prepare("INSERT INTO tickets (ticket_name, event_id) VALUES (?, ?)"); + $stmt = $this->database->prepare("INSERT INTO tickets (ticket_name, event_id) VALUES (?, ?)"); $stmt->execute([$name, $eventId]); return "Ticket created successfully"; } public function getTicket($ticketId) { - global $db; - - $stmt = $db->prepare("SELECT * FROM tickets WHERE ticket_id = ?"); + $stmt = $this->database->prepare("SELECT * FROM tickets WHERE ticket_id = ?"); $stmt->execute([$ticketId]); return $stmt->fetch(PDO::FETCH_ASSOC); } public function updateTicket($ticketId, $name, $eventId) { - global $db; - - $stmt = $db->prepare("UPDATE tickets SET ticket_name = ?, event_id = ? WHERE ticket_id = ?"); + $stmt = $this->database->prepare("UPDATE tickets SET ticket_name = ?, event_id = ? WHERE ticket_id = ?"); $stmt->execute([$name, $eventId, $ticketId]); return "Ticket updated successfully"; } public function updateTicketByEventId($eventId, $name) { - global $db; - - $stmt = $db->prepare("UPDATE tickets SET ticket_name = ? WHERE event_id = ?"); + $stmt = $this->database->prepare("UPDATE tickets SET ticket_name = ? WHERE event_id = ?"); $stmt->execute([$name, $eventId]); return "Ticket updated successfully"; } public function deleteTicket($ticketId) { - global $db; - - $stmt = $db->prepare("DELETE FROM tickets WHERE ticket_id = ?"); + $stmt = $this->database->prepare("DELETE FROM tickets WHERE ticket_id = ?"); $stmt->execute([$ticketId]); return "Ticket deleted successfully"; } public function getSmallestAvailableTicket($eventId) { - global $db; - - $stmt = $db->prepare(" + $stmt = $this->database->prepare(" SELECT t.*, e.* FROM tickets t JOIN events e ON t.event_id = e.event_id @@ -73,4 +61,3 @@ class TicketModel { return $stmt->fetch(PDO::FETCH_ASSOC); } } -?> diff --git a/app/Server/Models/User.php b/app/Server/Models/User.php index cb3410b23a9c471bcbdda9d7cdec126657941759..43d1dc9d132c4d9fb2d9c41e58246d66eb30a63b 100644 --- a/app/Server/Models/User.php +++ b/app/Server/Models/User.php @@ -1,20 +1,18 @@ <?php -// app/models/User.php -require_once(__DIR__ . '/../../db/connect.php'); +namespace Server\Models; +use PDO; -class UserModel { +class UserModel extends Model { public function createUser($name, $username, $email, $hashedPass, $isAdmin) { - global $db; - $response = [ 'success'=> true, 'message'=> '' ]; try { - $stmt = $db->prepare("INSERT INTO users (user_name, username, user_email, user_hashedPass, isAdmin) VALUES (?, ?, ?, ?, ?)"); + $stmt = $this->database->prepare("INSERT INTO users (user_name, username, user_email, user_hashedPass, isAdmin) VALUES (?, ?, ?, ?, ?)"); $stmt->execute([$name, $username, $email, $hashedPass, $isAdmin]); $response['message'] = "User created successfully"; return $response; @@ -36,9 +34,7 @@ class UserModel { // User.php public function getUser($userId) { - global $db; - - $stmt = $db->prepare("SELECT * FROM users WHERE user_ID = ?"); + $stmt = $this->database->prepare("SELECT * FROM users WHERE user_ID = ?"); $stmt->execute([$userId]); if ($stmt) { @@ -56,54 +52,41 @@ class UserModel { } public function getUserByEmail($email) { - global $db; - - $stmt = $db->prepare("SELECT * FROM users WHERE user_email = ?"); + $stmt = $this->database->prepare("SELECT * FROM users WHERE user_email = ?"); $stmt->execute([$email]); return $stmt->fetch(PDO::FETCH_ASSOC); } public function getUserByUsername($username){ - global $db; - - $stmt = $db->prepare("SELECT * FROM users WHERE username = ?"); + $stmt = $this->database->prepare("SELECT * FROM users WHERE username = ?"); $stmt->execute([$username]); return $stmt->fetch(PDO::FETCH_ASSOC); } public function updateUser($userId, $name, $username, $email, $hashedPass, $isAdmin) { - global $db; - - $stmt = $db->prepare("UPDATE users SET user_name = ?, username = ?, user_email = ?, user_hashedPass = ?, isAdmin = ? WHERE user_ID = ?"); + $stmt = $this->database->prepare("UPDATE users SET user_name = ?, username = ?, user_email = ?, user_hashedPass = ?, isAdmin = ? WHERE user_ID = ?"); $stmt->execute([$name, $username, $email, $hashedPass, $isAdmin, $userId]); return "User updated successfully"; } public function editProfile($userId, $name, $username, $email) { - global $db; - - $stmt = $db->prepare("UPDATE users SET user_name = ?, username = ?, user_email = ? WHERE user_id = ?"); + $stmt = $this->database->prepare("UPDATE users SET user_name = ?, username = ?, user_email = ? WHERE user_id = ?"); return $stmt->execute([$name, $username, $email, $userId]); } public function deleteUser($userId) { - global $db; - - $stmt = $db->prepare("DELETE FROM users WHERE user_ID = ?"); + $stmt = $this->database->prepare("DELETE FROM users WHERE user_ID = ?"); $stmt->execute([$userId]); return "User deleted successfully"; } public function getAllUsers() { - global $db; - - $stmt = $db->query("SELECT * FROM users"); + $stmt = $this->database->query("SELECT * FROM users"); return $stmt->fetchAll(PDO::FETCH_ASSOC); } - } ?>