From 8e3386d4879a1f39026d8b05db439af3f6a59eb3 Mon Sep 17 00:00:00 2001 From: debbyalmadea <almadeaputri@gmail.com> Date: Fri, 6 Oct 2023 20:53:48 +0700 Subject: [PATCH] fix: catalog edit --- src/public/js/editCatalog.js | 2 +- .../app/Controller/CatalogController.php | 24 ++++++++++--------- src/server/app/Model/CatalogCreateRequest.php | 6 ++--- .../Model/catalog/CatalogUpdateRequest.php | 10 ++++++++ src/server/app/Service/CatalogService.php | 16 ++++++++++++- 5 files changed, 42 insertions(+), 16 deletions(-) create mode 100644 src/server/app/Model/catalog/CatalogUpdateRequest.php diff --git a/src/public/js/editCatalog.js b/src/public/js/editCatalog.js index 8bb3c98..b3003d1 100644 --- a/src/public/js/editCatalog.js +++ b/src/public/js/editCatalog.js @@ -12,10 +12,10 @@ function updateCatalog(form) { const xhttp = new XMLHttpRequest(); xhttp.open("POST", apiUrl, true); - xhttp.setRequestHeader("Content-Type", "multipart/form-data"); xhttp.onreadystatechange = function () { if (xhttp.readyState === 4) { + console.log(xhttp); if (xhttp.status === 200) { showToast("Success", "Catalog updated", "success"); setTimeout(() => { diff --git a/src/server/app/Controller/CatalogController.php b/src/server/app/Controller/CatalogController.php index 10360e6..97d602b 100644 --- a/src/server/app/Controller/CatalogController.php +++ b/src/server/app/Controller/CatalogController.php @@ -12,6 +12,7 @@ require_once __DIR__ . '/../Repository/UserRepository.php'; require_once __DIR__ . '/../Repository/SessionRepository.php'; require_once __DIR__ . '/../Model/CatalogCreateRequest.php'; +require_once __DIR__ . '/../Model/catalog/CatalogUpdateRequest.php'; require_once __DIR__ . '/../Model/CatalogSearchRequest.php'; class CatalogController @@ -151,7 +152,7 @@ class CatalogController public function postEdit($uuid): void { - $request = new CatalogCreateRequest(); + $request = new CatalogUpdateRequest(); $request->title = $_POST['title']; $request->description = $_POST['description']; $request->category = $_POST['category']; @@ -218,17 +219,11 @@ class CatalogController throw new ValidationException("You are not authorized to update this catalog."); } - $json = file_get_contents('php://input'); - $data = json_decode($json); - - if ($data === null) { - throw new ValidationException("Invalid request body."); - } + $request = new CatalogUpdateRequest(); - $request = new CatalogCreateRequest(); - $request->title = $data->title; - $request->description = $data->description; - $request->category = $data->category; + $request->title = $_POST['title']; + $request->description = $_POST['description']; + $request->category = $_POST['category']; if (isset($_FILES['poster'])) { $request->poster = $_FILES['poster']; @@ -239,6 +234,13 @@ class CatalogController } $this->catalogService->update($uuid, $request); + http_response_code(200); + $response = [ + "status" => 200, + "message" => "Successfully update catalog", + ]; + + echo json_encode($response); } catch (ValidationException $exception) { http_response_code(400); $response = [ diff --git a/src/server/app/Model/CatalogCreateRequest.php b/src/server/app/Model/CatalogCreateRequest.php index 9ceb0f3..13ccdaa 100644 --- a/src/server/app/Model/CatalogCreateRequest.php +++ b/src/server/app/Model/CatalogCreateRequest.php @@ -2,9 +2,9 @@ class CatalogCreateRequest { - public ?string $title = null; - public ?string $description = null; + public string $title; + public string $description; public $poster = null; public $trailer = null; - public ?string $category = null; + public string $category; } \ No newline at end of file diff --git a/src/server/app/Model/catalog/CatalogUpdateRequest.php b/src/server/app/Model/catalog/CatalogUpdateRequest.php new file mode 100644 index 0000000..a7a004b --- /dev/null +++ b/src/server/app/Model/catalog/CatalogUpdateRequest.php @@ -0,0 +1,10 @@ +<?php + +class CatalogUpdateRequest +{ + public string $title; + public string $description; + public $poster = null; + public $trailer = null; + public string $category; +} \ No newline at end of file diff --git a/src/server/app/Service/CatalogService.php b/src/server/app/Service/CatalogService.php index 5c1b3f3..ac82f4f 100644 --- a/src/server/app/Service/CatalogService.php +++ b/src/server/app/Service/CatalogService.php @@ -6,6 +6,7 @@ require_once __DIR__ . '/../Utils/FileUploader.php'; require_once __DIR__ . '/../Utils/UUIDGenerator.php'; require_once __DIR__ . '/../Model/CatalogCreateRequest.php'; +require_once __DIR__ . '/../Model/catalog/CatalogUpdateRequest.php'; require_once __DIR__ . '/../Model/CatalogSearchRequest.php'; require_once __DIR__ . '/../Model/CatalogCreateResponse.php'; @@ -116,7 +117,7 @@ class CatalogService } } - public function update(string $uuid, CatalogCreateRequest $request) + public function update(string $uuid, CatalogUpdateRequest $request) { try { Database::beginTransaction(); @@ -152,6 +153,19 @@ class CatalogService } } + private function validateCatalogUpdateRequest(CatalogUpdateRequest $request) + { + if ( + $request->title == null || trim($request->title) == "" + ) { + throw new ValidationException("Title cannot be blank."); + } + + if ($request->category == null || trim($request->category) == "") { + throw new ValidationException("Category cannot be blank."); + } + } + public function search(CatalogSearchRequest $catalogSearchRequest): CatalogSearchResponse { $this->validateCatalogSearchRequest($catalogSearchRequest); -- GitLab