Skip to content
Snippets Groups Projects
Commit 2f7ddf59 authored by Bitha17's avatar Bitha17
Browse files

refactor: changing db

parent 3d0027f7
Branches
No related merge requests found
<?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());
}
}
}
?>
<?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());
}
}
}
<?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);
}
}
?>
<?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);
}
}
?>
<?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);
}
}
?>
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment