Skip to content
Snippets Groups Projects
Commit 387b80e2 authored by Hobert  Jonatan's avatar Hobert Jonatan
Browse files
parents e2bb8d89 8a6867f0
No related merge requests found
<?php
class GetSearchEpisodeRestController
{
public function call()
{
$episodeModel = new EpisodeModel();
$keyword = "";
$genre = "";
if (isset($_GET["keyword"])){
$keyword = $_GET["keyword"];
}
if (isset($_GET["genre"])){
$genre = $_GET["genre"];
}
$episodes = $episodeModel->getSearchRest($keyword, $genre);
http_response_code(200);
header("Content-Type: application/json");
echo json_encode(["episodes" => $episodes]);
return;
}
}
<?php
class GetSearchPodcastRestController
{
public function call()
{
$podcastModel = new PodcastModel();
$keyword = "";
$genre = "";
if (isset($_GET["keyword"])){
$keyword = $_GET["keyword"];
}
if (isset($_GET["genre"])){
$genre = $_GET["genre"];
}
$podcasts = $podcastModel->getSearchPodcast($keyword, $genre);
http_response_code(200);
header("Content-Type: application/json");
echo json_encode(["podcasts" => $podcasts]);
return;
}
}
......@@ -51,6 +51,9 @@ class App
$router->get("public/episode-by-id", new GetEpisodeController());
$router->get("public/random-podcast", new GetRandomPodcastController());
$router->get("public/rest/search/podcast", new GetSearchPodcastRestController());
$router->get("public/rest/search/episode", new GetSearchEpisodeRestController());
// POST routes
$router->post("public/logout", new LogoutController());
$router->post("public/login", new PostLoginController());
......
......@@ -55,6 +55,8 @@ require_once __DIR__ . "/controllers/seed/post_seed.php";
require_once __DIR__ . "/controllers/podcast/get_podcast.php";
require_once __DIR__ . "/controllers/episode/get_episode.php";
require_once __DIR__ . "/controllers/podcast/get_random_podcast.php";
require_once __DIR__ . "/controllers/search/get_search_rest.php";
require_once __DIR__ . "/controllers/search/get_episode_rest.php";
require_once __DIR__ . "/models/podcast.php";
require_once __DIR__ . "/models/episode.php";
......
......@@ -129,4 +129,23 @@ class EpisodeModel
$episode = $this->db->fetchAll();
return $episode;
}
public function getSearchRest($keyword, $genre)
{
$query = "
SELECT e.id_episode, e.title, e.description, e.url_thumbnail, p.title AS podcast_title
FROM episode e
NATURAL JOIN podcast p
WHERE e.title LIKE :keyword
AND p.category LIKE :genre
";
$this->db->query($query);
$this->db->bind("keyword", '%' . $keyword . '%');
$this->db->bind("genre", $genre == "" ? '%' : $genre);
$podcasts = $this->db->fetchAll();
return $podcasts;
}
}
......@@ -248,4 +248,25 @@ class PodcastModel
$podcast = $this->db->fetchAll();
return $podcast;
}
public function getSearchPodcast($keyword, $genre)
{
$query =
"SELECT p.id_podcast, p.title, p.description, p.url_thumbnail
FROM podcast AS p
LEFT JOIN episode AS e ON p.id_podcast = e.id_podcast
WHERE (p.title LIKE :search_value
OR p.description LIKE :search_value)
AND p.category LIKE :genre
";
$this->db->query($query);
$this->db->bind("search_value", '%' . $keyword . '%');
$this->db->bind("genre", $genre == "" ? '%' : $genre);
$podcasts = $this->db->fetchAll();
return $podcasts;
}
}
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