Skip to content
Snippets Groups Projects
Commit a40ab405 authored by Kenneth Ezekiel's avatar Kenneth Ezekiel
Browse files

add: final push before migration

parent 86739d38
Branches
Tags
No related merge requests found
...@@ -4,7 +4,8 @@ EXPOSE 8008 ...@@ -4,7 +4,8 @@ EXPOSE 8008
# (php mysql) # (php mysql)
RUN rm -f /etc/apt/apt.conf.d/docker-clean \ RUN rm -f /etc/apt/apt.conf.d/docker-clean \
&& apt-get update \ && apt-get update \
&& apt install libxml2-dev -y && apt install libxml2-dev -y \
&& docker-php-ext-install soap
RUN docker-php-ext-install pdo pdo_mysql RUN docker-php-ext-install pdo pdo_mysql
......
...@@ -32,7 +32,7 @@ services: ...@@ -32,7 +32,7 @@ services:
- MYSQL_PASSWORD=${password} - MYSQL_PASSWORD=${password}
- USE_DOCKER_CONFIG=true - USE_DOCKER_CONFIG=true
ports: ports:
- "9907:3306" - "9907:3307"
phpmyadmin: phpmyadmin:
container_name: tubes-1-phpmyadmin container_name: tubes-1-phpmyadmin
image: phpmyadmin/phpmyadmin image: phpmyadmin/phpmyadmin
......
This diff is collapsed.
...@@ -498,6 +498,11 @@ textarea { ...@@ -498,6 +498,11 @@ textarea {
margin-top: 20px; margin-top: 20px;
} }
select {
border-radius: 10px;
margin-left: 20px;
}
@media only screen and (max-width: 800px) { @media only screen and (max-width: 800px) {
.form-container { .form-container {
width: 100%; width: 100%;
......
const search_bar = document.getElementById("search-input") const search_bar = document.getElementById("search-input");
const sort_by = document.getElementById("sort-by") const sort_by = document.getElementById("sort-by");
const sort_order = document.getElementById("sort-order") const sort_order = document.getElementById("sort-order");
const genre = document.getElementById("filter-genre") const genre = document.getElementById("filter-genre");
const released_year = document.getElementById("filter-year") const released_year = document.getElementById("filter-year");
const urlParams = new URLSearchParams(window.location.search); const urlParams = new URLSearchParams(window.location.search);
const paginationData = document.getElementById('pagination-data'); const paginationData = document.getElementById("pagination-data");
let totalPageCount = paginationData.getAttribute('data-total-pages'); let totalPageCount = paginationData.getAttribute("data-total-pages");
let currentPage = parseInt(urlParams.get('page')) || 1; let currentPage = parseInt(urlParams.get("page")) || 1;
const film_cards = document.getElementById("film-card-list") const film_cards = document.getElementById("film-card-list");
const utils = new Utils() const utils = new Utils();
async function searchFilterHandler() { async function searchFilterHandler() {
try try {
{ const httpClient = new HttpClient();
const httpClient = new HttpClient(); const search = search_bar.value !== undefined ? search_bar.value : "";
const search = search_bar.value !== undefined ? search_bar.value : ""; let url = `/search?q=${search_bar.value}&genre=${genre.value}&year=${released_year.value}&order=${sort_by.value}&sort=${sort_order.value}&page=${currentPage}`;
let url = `/search?q=${search_bar.value}&genre=${genre.value}&year=${released_year.value}&order=${sort_by.value}&sort=${sort_order.value}&page=${currentPage}`
httpClient.get(url).then( httpClient.get(url).then((response) => {
(response) => { console.log(response);
console.log(response) if (response.status === 200) {
if (response.status === 200) { const responseData = response.data;
const responseData = response.data; updateFilmCards(responseData["films"]);
updateFilmCards(responseData['films']); totalPageCount = responseData["total_page"];
totalPageCount = responseData['total_page']; generatePaginationLinks();
generatePaginationLinks() } else {
} else { console.error("Error:", response);
console.error("Error:", response); }
} });
} } catch (e) {
) console.error("Error: ", e);
} catch (e) }
{
console.error("Error: ", e)
}
} }
function generatePaginationLinks() { function generatePaginationLinks() {
const paginationContainer = document.getElementById("pagination-container") const paginationContainer = document.getElementById("pagination-container");
paginationContainer.innerHTML = ""; paginationContainer.innerHTML = "";
console.log(totalPageCount) console.log(totalPageCount);
for (let i = 1; i <= totalPageCount; i++) {
const pageLink = document.createElement("a");
pageLink.textContent = i;
pageLink.href = `?page=${i}`;
pageLink.classList.add("page-number");
if (i === currentPage) {
pageLink.classList.add("active");
}
pageLink.addEventListener('click', (e) => {
e.preventDefault();
currentPage = i;
searchFilterHandler();
});
paginationContainer.appendChild(pageLink); for (let i = 1; i <= totalPageCount; i++) {
const pageLink = document.createElement("a");
pageLink.textContent = i;
pageLink.href = `?page=${i}`;
pageLink.classList.add("page-number");
if (i === currentPage) {
pageLink.classList.add("active");
} }
pageLink.addEventListener("click", (e) => {
e.preventDefault();
currentPage = i;
searchFilterHandler();
});
paginationContainer.appendChild(pageLink);
}
} }
function updateFilmCards(films) { function updateFilmCards(films) {
film_cards.innerHTML = "" film_cards.innerHTML = "";
film_cards.innerHTML = films.map((film) => ` film_cards.innerHTML = films
.map(
(film) => `
<div class='film-card'> <div class='film-card'>
<a href='/film-details?film_id=${film.film_id}'>
<div class='film-image' style="background-image: url('public/${film.image_path}');"></div> <div class='film-image' style="background-image: url('public/${film.image_path}');"></div>
<div class='film-title'>${film.title}</div> <div class='film-title'>${film.title}</div>
</div> </div>
`).join(''); `
)
.join("");
} }
for (let i = 1; i <= totalPageCount; i++) { for (let i = 1; i <= totalPageCount; i++) {
const pageLink = document.getElementById(`page-${i}`); const pageLink = document.getElementById(`page-${i}`);
if (pageLink) { if (pageLink) {
pageLink.addEventListener('click', (e) => { pageLink.addEventListener("click", (e) => {
e.preventDefault(); e.preventDefault();
currentPage = i; currentPage = i;
searchFilterHandler(); searchFilterHandler();
}); });
} }
} }
search_bar.addEventListener('input', utils.debounce(searchFilterHandler, 300)); search_bar.addEventListener("input", utils.debounce(searchFilterHandler, 300));
sort_by.addEventListener('change', utils.debounce(searchFilterHandler, 300)); sort_by.addEventListener("change", utils.debounce(searchFilterHandler, 300));
sort_order.addEventListener('change', utils.debounce(searchFilterHandler, 300)); sort_order.addEventListener("change", utils.debounce(searchFilterHandler, 300));
genre.addEventListener('change', utils.debounce(searchFilterHandler, 300)); genre.addEventListener("change", utils.debounce(searchFilterHandler, 300));
released_year.addEventListener('change', utils.debounce(searchFilterHandler, 300)); released_year.addEventListener(
generatePaginationLinks() "change",
\ No newline at end of file utils.debounce(searchFilterHandler, 300)
);
generatePaginationLinks();
docker compose up docker compose up -d
docker cp migrations/db/wbd.sql tubes-1-database:/wbd.sql docker cp migrations/db/wbd.sql tubes-1-database:/wbd.sql
docker exec -it tubes-1-database mysql -u root -p docker exec -it tubes-1-database mysql -u root -p
use mysql_database; use mysql_database;
source wbd.sql; source wbd.sql;
insert into user values(4, 'adm@email.com', 'adm', '$2y$10$gRlxyhscKHw7pB0IkgjxZOBVQStt2ZibucW5/RQVpQxuv4de8Bcm.', 'admin');
# can now log in using username adm and password admin
exit; exit;
...@@ -24,22 +24,22 @@ class FilmController extends BaseController ...@@ -24,22 +24,22 @@ class FilmController extends BaseController
$this->favorite_handler = FavoriteService::getInstance(); $this->favorite_handler = FavoriteService::getInstance();
} }
protected function get($urlParams) protected function get($urlParams)
{ {
$uri = Request::getURL(); $uri = Request::getURL();
$page = (isset($_GET['page']) and (int) $_GET['page'] >= 1) ? $_GET['page'] : 1; $page = (isset($_GET['page']) and (int) $_GET['page'] >= 1) ? $_GET['page'] : 1;
$word = $_GET['q'] ?? ""; $word = $_GET['q'] ?? "";
$genre = $_GET['genre'] ?? 'all'; $genre = $_GET['genre'] ?? 'all';
$released_year = $_GET['year'] ?? 'all'; $released_year = $_GET['year'] ?? 'all';
$isDesc = $_GET['sort'] ?? "asc"; $isDesc = $_GET['sort'] ?? "asc";
$order = $_GET['order'] ?? 'title'; $order = $_GET['order'] ?? 'title';
$data = $this->service->searchAndFilter($word, $order, $isDesc, $genre, $released_year, $page); $data = $this->service->searchAndFilter($word, $order, $isDesc, $genre, $released_year, $page);
$row_count = $this->service->countRowBySearchAndFilter($word, $genre, $released_year); $row_count = $this->service->countRowBySearchAndFilter($word, $genre, $released_year);
if ($uri == "/films") { if ($uri == "/films") {
$data['genres'] = $this->service->getAllCategoryValues('genre'); $data['genres'] = $this->service->getAllCategoryValues('genre');
$data['released_years'] = $this->service->getAllCategoryValues('released_year'); $data['released_years'] = $this->service->getAllCategoryValues('released_year');
$data['total_page'] = ceil($row_count/4); $data['total_page'] = ceil($row_count / 10);
parent::render($data, 'films', "layouts/base"); parent::render($data, 'films', "layouts/base");
} elseif ($uri == '/film-details') { } elseif ($uri == '/film-details') {
...@@ -54,7 +54,7 @@ class FilmController extends BaseController ...@@ -54,7 +54,7 @@ class FilmController extends BaseController
$films[] = $film->toResponse(); $films[] = $film->toResponse();
} }
$data['films'] = $films; $data['films'] = $films;
$data['total_page'] = ceil($row_count/4); $data['total_page'] = ceil($row_count / 10);
response::send_json_response($data); response::send_json_response($data);
} }
...@@ -72,8 +72,7 @@ class FilmController extends BaseController ...@@ -72,8 +72,7 @@ class FilmController extends BaseController
$this->favorite_handler->addToFavorite($_SESSION['user_id'], $film_id); $this->favorite_handler->addToFavorite($_SESSION['user_id'], $film_id);
$data['isFavorite'] = true; $data['isFavorite'] = true;
parent::render($data, 'film-details', "layouts/base"); parent::render($data, 'film-details', "layouts/base");
} } else {
else {
$this->favorite_handler->removeFromFavorite($_SESSION['user_id'], $film_id); $this->favorite_handler->removeFromFavorite($_SESSION['user_id'], $film_id);
$data['isFavorite'] = false; $data['isFavorite'] = false;
parent::render($data, 'film-details', "layouts/base"); parent::render($data, 'film-details', "layouts/base");
......
...@@ -6,6 +6,7 @@ use app\base\BaseController; ...@@ -6,6 +6,7 @@ use app\base\BaseController;
use app\Request; use app\Request;
use app\services\UserService; use app\services\UserService;
use Exception; use Exception;
use SoapHeader;
class LoginController extends BaseController class LoginController extends BaseController
{ {
...@@ -16,6 +17,26 @@ class LoginController extends BaseController ...@@ -16,6 +17,26 @@ class LoginController extends BaseController
protected function get($urlParams) protected function get($urlParams)
{ {
$apikey = getenv('api_key');
// Stream context to add HTTP headers
$streamContext = stream_context_create([
'http' => [
'header' => "Authorization: Bearer $apikey",
],
]);
// Options for the SOAP client
$options = [
'stream_context' => $streamContext,
'trace' => 1, // Enable trace to view request and response headers
'cache_wsdl' => WSDL_CACHE_NONE
];
$soapclient = new \SoapClient(getenv('soap_url'), $options);
$params = ["userId" => 1];
$check_example = $soapclient->cancelRegister($params);
echo "<pre>";
var_dump($check_example);
echo "</pre>";
// var_dump(phpinfo());
$uri = Request::getURL(); $uri = Request::getURL();
if ($uri == "/login") { if ($uri == "/login") {
......
...@@ -29,10 +29,16 @@ class FilmRepository extends BaseRepository ...@@ -29,10 +29,16 @@ class FilmRepository extends BaseRepository
return $this->findOne(['film_id' => [$film_id, PDO::PARAM_INT]]); return $this->findOne(['film_id' => [$film_id, PDO::PARAM_INT]]);
} }
public function getAllBySearchAndFilter($word, $order = 'title', $isDesc= "asc", $genre = 'all', public function getAllBySearchAndFilter(
$released_year = 'all', $pageNo = 1, $limit = 4) $word,
{ $order = 'title',
$where = []; $isDesc = "asc",
$genre = 'all',
$released_year = 'all',
$pageNo = 1,
$limit = 10
) {
$where = [];
if (isset($genre) and !empty($genre) and $genre != 'all') { if (isset($genre) and !empty($genre) and $genre != 'all') {
$where['genre'] = [$genre, PDO::PARAM_STR, 'LIKE']; $where['genre'] = [$genre, PDO::PARAM_STR, 'LIKE'];
......
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