diff --git a/src/controller/GymFilterController.php b/src/controller/GymFilterController.php new file mode 100644 index 0000000000000000000000000000000000000000..2e98cf08fb78d47e4dc0481c97a758797d63a5fd --- /dev/null +++ b/src/controller/GymFilterController.php @@ -0,0 +1,88 @@ +<?php + +require __DIR__ . "/../inc/bootstrap.php"; +require_once PROJECT_ROOT_PATH . "/controller/BaseController.php"; +require_once PROJECT_ROOT_PATH . "/services/GymService.php"; +require_once PROJECT_ROOT_PATH . "/services/MultimediaService.php"; + + + +class GymFilterController extends BaseController +{ + + public function respond() + { + + $strErrorDesc = ''; + $requestMethod = strtoupper($_SERVER["REQUEST_METHOD"]); + $arrQueryStringParams = $this->getQueryStringParams(); + $responseData = []; + + try { + switch ($requestMethod) { + case 'PUT': + $jsonData = file_get_contents("php://input"); + $params = json_decode($jsonData, true); + + $currentPage = $params['page']; + $selectedCity = $params['cityId']; + $selectedSorting = $params['sorting']; + $selectedPriceRange = $params['priceRange']; + $sortingOption = $params['sortingOption']; + $priceRangeOption = $params['priceRangeOption']; + $itemInPage = $params['gymCountInPage']; + $searching = $params['searching']; + + $gyms = GymService::getInstance()->getFiltered( + [ + 'page' => $currentPage, + 'cityId' => $selectedCity, + 'sorting' => $selectedSorting, + 'priceRange' => $selectedPriceRange, + 'sortingOption' => $sortingOption, + 'priceRangeOption' => $priceRangeOption, + 'gymCountInPage' => $itemInPage, + 'searching' => $searching + ] + ); + // make it gyms -> a,b,c + // and itemCount -> 3 in response data + $gyms_response = []; + foreach ($gyms['gyms'] as $gym) { + array_push($gyms_response, $gym->toResponse()); + } + $responseData['gyms'] = $gyms_response; + $responseData['itemCount'] = $gyms['itemCount']; + + break; + default: + $strErrorDesc = 'Method not supported'; + $strErrorHeader = 'HTTP/1.1 400 Bad Request'; + break; + } + + } catch (Error $e) { + $strErrorDesc = $e->getMessage() . 'Something went wrong!'; + $strErrorHeader = 'HTTP/1.1 500 Internal Server Error'; + } catch (ServiceException $e) { + $strErrorDesc = (string) "Service Exception Encountered"; + $strErrorHeader = 'HTTP/1.1 400 Bad Request'; + } catch (Exception $e) { + $strErrorDesc = $e->getMessage(); + $strErrorHeader = 'HTTP/1.1 400 Bad Request'; + } + + // send output + if ($strErrorDesc) { + $this->sendOutput( + json_encode(array('error' => $strErrorDesc)), + array('Content-Type: application/json', $strErrorHeader) + ); + } + + $this->sendOutput( + json_encode($responseData), + array('Content-Type: application/json', 'HTTP/1.1 200 OK') + ); + } +} \ No newline at end of file