From a7562d26819d544938ec52f92d027065b6b5540b Mon Sep 17 00:00:00 2001 From: Muhammad Rifko Favian <13521075@std.stei.itb.ac.id> Date: Mon, 13 Nov 2023 04:45:00 +0700 Subject: [PATCH] feat: subscription model --- app/Controllers/SubscriptionController.php | 25 +++++++++++++++++ app/Models/Subscription.php | 32 ++++++++++++++++++++++ db/init.sql | 9 ++++++ 3 files changed, 66 insertions(+) create mode 100644 app/Controllers/SubscriptionController.php create mode 100644 app/Models/Subscription.php diff --git a/app/Controllers/SubscriptionController.php b/app/Controllers/SubscriptionController.php new file mode 100644 index 0000000..b42c39a --- /dev/null +++ b/app/Controllers/SubscriptionController.php @@ -0,0 +1,25 @@ +<?php +ob_start(); +require_once(__DIR__ . '/../Models/Subscription.php'); + + +class SubscriptionController { + private $subscriptionModel; + + public function __construct() { + $this->subscriptionModel = new SubscriptionModel(); + } + + public function createSubscription($creator_id, $subscriber_id, $creator_name) { + return $this->subscriptionModel->createSubscription($creator_id, $subscriber_id, $creator_name); + } + + public function getSubscription($subscriber_id) { + return $this->subscriptionModel->getSubscription($subscriber_id); + } + + public function updateSubscription($creator_id, $subscriber_id, $status) { + return $this->subscriptionModel->updateSubscription($creator_id, $subscriber_id, $status); + } +} +?> \ No newline at end of file diff --git a/app/Models/Subscription.php b/app/Models/Subscription.php new file mode 100644 index 0000000..46dcabc --- /dev/null +++ b/app/Models/Subscription.php @@ -0,0 +1,32 @@ +<?php + require_once(__DIR__ . '/../../db/connect.php'); + + class SubscriptionModel { + public function createSubscription($creator_id, $subscriber_id, $creator_name) { + global $db; + + $stmt = $db->prepare("INSERT INTO subscription (creator_id, subscriber_id, creator_name) VALUES (?, ?, ?)"); + if ($stmt->execute([$creator_id, $subscriber_id, $creator_name])) { + return "Subscription created successfully"; + } + } + + public function getSubscription($subscriber_id) { + global $db; + + $stmt = $db->prepare("SELECT * FROM subscription WHERE subscriber_id = ?"); + $stmt->execute([$subscriber_id]); + + return $stmt->fetchAll(PDO::FETCH_ASSOC); + } + + public function updateSubscription($creator_id, $subscriber_id, $status) { + global $db; + + $stmt = $db->prepare("UPDATE subscription SET status = ? WHERE creator_id = ? AND subscriber_id = ?"); + if ($stmt->execute([$status, $creator_id, $subscriber_id])) { + return "Subscription updated successfully"; + } + } + } +?> \ No newline at end of file diff --git a/db/init.sql b/db/init.sql index 2260e60..0beaedf 100644 --- a/db/init.sql +++ b/db/init.sql @@ -36,4 +36,13 @@ CREATE TABLE IF NOT EXISTS pembelian ( pembelian_created_time DATETIME, FOREIGN KEY (ticket_id) REFERENCES tickets(ticket_id), FOREIGN KEY (user_id) REFERENCES users(user_ID) ON DELETE SET NULL +); + +CREATE TABLE IF NOT EXISTS subscription ( + creator_id int NOT NULL, + subscriber_id int NOT NULL, + status enum('PENDING','ACCEPTED','REJECTED') NOT NULL DEFAULT 'PENDING', + creator_name char(255) NOT NULL, + PRIMARY KEY (creator_id, subscriber_id), + FOREIGN KEY (subscriber_id) REFERENCES users(user_ID) ON DELETE CASCADE ); \ No newline at end of file -- GitLab