<?php class RoundController extends Controller { public function __construct($name, $request) { parent::__construct($name, $request); } /** * Process incoming request for the /round endpoint * * @return Response */ public function processRequest() { $httpMethod=$this->request->getHttpMethod(); $uriParams=$this->request->getUriParams(); switch ($httpMethod) { case 'GET': // If there is a uriParams, it is the /round/{id} or /round/{id}/user endpoint if ($uriParams) { $lenUriParams = count($uriParams); // Check if it is the /round/{id}/user endpoint if (($lenUriParams == 2) && ($uriParams[1]=='user')) { return $this->getUsersInRound($uriParams[0]); } // Nope, it is the /round/{id} endpoint return $this->getRound($uriParams[0]); } // If there is no uriParams, it is the /round endpoint return $this->getAllRounds(); break; case 'POST': $body = $this->request->getData(); return $this->newRound($body); break; case 'PUT': // If there is a uriParams, it is the /round/{id}/action endpoint if ($uriParams) { $lenUriParams = count($uriParams); if (($lenUriParams == 2) && ($uriParams[1]=='action')) { $body = $this->request->getData(); return $this->updateActions(array_merge($body, ['id'=>$uriParams[0]])); } } break; } $message = json_encode(["message" => "unsupported parameters or method in round"]); return Response::errorResponse($message); } /** * (GET) Get all rounds in Round table * * @return Response */ protected function getAllRounds() { $rounds = Round::getList(); $response = Response::okResponse(json_encode($rounds, JSON_PRETTY_PRINT)); return $response; } /** * (GET) Get a specific round in Round table based * * @return Response */ protected function getRound($id) { $rounds = Round::getRow($id); $response = Response::okResponse(json_encode($rounds, JSON_PRETTY_PRINT)); return $response; } /** * (GET) Get Users of the round $id * * @return Response */ protected function getUsersInRound($id) { $rounds = Round::getUsersInRound($id); $response = Response::okResponse(json_encode($rounds, JSON_PRETTY_PRINT)); return $response; } /** * (POST) Add a new round in Round table * * @param array $array array containing ID_GAME, PREVAILING_WIND ,SEED * @return Response */ protected function newRound($array) { Round::createRound($array); $message = json_encode(["message" => 'Round succesfully created!']); $response = Response::createdResponse($message); return $response; } /** * (PUT) Add action of the round in Round table * TODO : ADD MAIN LOGIC FOR THE GAME * * @param string $action string containing all actions * @return Response */ protected function updateActions($action) { Round::updateActions($action); $message = json_encode(["message" => 'Actions updated!']); $response = Response::createdResponse($message); return $response; } }