Skip to content

Commit

Permalink
Error management and cart
Browse files Browse the repository at this point in the history
  • Loading branch information
ItsDyze committed Oct 26, 2024
1 parent e61a59f commit 405ef42
Show file tree
Hide file tree
Showing 31 changed files with 473 additions and 96 deletions.
19 changes: 16 additions & 3 deletions public/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,23 @@

# Intercept requests if necessary
$interceptor = new Interceptor();
$interceptor->handle();
$interceptor->handleRequests();

# Call the router
$router = new Routing();
$router->route();
try
{
$router = new Routing();
$router->route();

if(http_response_code() === 404 || http_response_code() === 401 || http_response_code() === 403)
{
throw new Exception();
}
}
catch (\Models\Exceptions\CustomException $e)
{
$interceptor->handleErrorResponses($e);
}



6 changes: 6 additions & 0 deletions src/Controllers/Account/AccountController.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,16 @@

class AccountController
{
function __construct()
{
JWTUtils::isAuthorized();
}

public function get()
{
$data = new AccountViewModel();
$service = new AuthService();

$userId = JWTUtils::getValue($_COOKIE["jwt"], "userId");

$data->User = $service->getUserById($userId);
Expand Down
12 changes: 7 additions & 5 deletions src/Controllers/BaseController.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,28 @@

namespace Controllers;

use Models\Exceptions\CustomException;

abstract class BaseController
{
public function get(): void
{
http_response_code(405);
throw new CustomException(404, "La page n'existe pas");
}
public function post(): void
{
http_response_code(405);
throw new CustomException(405, "La méthode n'est pas autorisée");
}
public function put(int $id): void
{
http_response_code(405);
throw new CustomException(405, "La méthode n'est pas autorisée");
}
public function patch(): void
{
http_response_code(405);
throw new CustomException(405, "La méthode n'est pas autorisée");
}
public function delete(int $id): void
{
http_response_code(405);
throw new CustomException(405, "La méthode n'est pas autorisée");
}
}
3 changes: 2 additions & 1 deletion src/Controllers/Manage/ManageDVDController.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

use Controllers\BaseController;
use Models\DVDModel;
use Models\Exceptions\CustomException;
use Models\QueryModel\ManageDVDQueryModel;
use Models\ViewModels\ManageDVDDetailViewModel;
use Models\ViewModels\ManageDVDDetailViewStateEnum;
Expand Down Expand Up @@ -108,7 +109,7 @@ public function put($id): void
{
if($id === null)
{
http_response_code(502);
throw new CustomException(404, "La page n'existe pas pour cet identifiant");
}

$model = new DVDModel();
Expand Down
48 changes: 48 additions & 0 deletions src/Controllers/Order/NewOrderController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?php
namespace Controllers\Order
{

use Controllers\BaseController;
use HttpException;
use Models\Exceptions\CustomException;
use Models\ViewModels\NewOrderViewModel;
use Services\AuthService;
use Services\DVDService;
use Utils\JWTUtils;
use Views\Order\NewOrder\NewOrderView;

class NewOrderController extends BaseController {

function __construct()
{
JWTUtils::isAuthorized();
}

public function get(): void
{
$data = new NewOrderViewModel();
$service = new DVDService();
$userService = new AuthService();

$userId = JWTUtils::getValue($_COOKIE["jwt"], "userId");

$data->Articles = [];
$data->TotalPrice = 0;
$data->User = $userService->getUserById($userId);

if(isset($_COOKIE["cart"]))
{
$cart = json_decode($_COOKIE["cart"]);
foreach($cart->articles as $article)
{
$dvd = $service->getById($article->articleId);
$data->Articles[] = $dvd;
$data->TotalPrice += $dvd->price;
}
}

$view = new NewOrderView($data);
$view->render();
}
}
}
38 changes: 38 additions & 0 deletions src/Controllers/Search/SearchController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?php
namespace Controllers\Search
{

use Controllers\BaseController;
use Models\CollectionTypeEnum;
use Models\DVDCollection;
use Models\QueryModel\HomeQueryModel;
use Models\ViewModels\SearchViewModel;
use Services\DVDService;
use Views\Search\SearchView;

class SearchController extends BaseController {
public function get(): void
{
$data = new SearchViewModel();
$service = new DVDService();

$queryModel = new HomeQueryModel();
if(!empty($_GET))
{
$queryModel->setFromQueryString($_GET);
}
else
{
header('Location: ' . parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH)."?".$queryModel->getQueryString(), true, 303);
die();
}

$queryModel->Limit = 99;
$data->Query = $queryModel;
$data->DVDs = $service->getAll($queryModel, true);

$view = new SearchView($data);
$view->render();
}
}
}
10 changes: 9 additions & 1 deletion src/Middlewares/Interceptor.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,19 @@

namespace Middlewares
{

use Models\Exceptions\CustomException;

class Interceptor
{
public function handle()
public function handleRequests()
{

}

public function handleErrorResponses(CustomException $e)
{
echo "Une erreur est survenue: " . $e->getMessage() . "\n";
}
}
}
13 changes: 11 additions & 2 deletions src/Middlewares/Routing.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
use Controllers\Home\HomeController;
use Controllers\Manage\ManageDashboardController;
use Controllers\Manage\ManageDVDController;
use Controllers\Order\NewOrderController;
use Controllers\Search\SearchController;
use Models\Exceptions\CustomException;

class Routing
{
Expand Down Expand Up @@ -67,12 +70,18 @@ public function route(): void
},
"/account" => function() {
return new AccountController();
},
"/search" => function() {
return new SearchController();
},
"/neworder" => function() {
return new NewOrderController();
}
);

if(!is_callable($routeRegistry[$route]))
if(!key_exists($route, $routeRegistry) || !is_callable($routeRegistry[$route]))
{
http_response_code(404);
throw new CustomException(404, "La page " . $route . " n'existe pas");
}
else
{
Expand Down
14 changes: 0 additions & 14 deletions src/Models/Exceptions/BadRouteException.php

This file was deleted.

14 changes: 14 additions & 0 deletions src/Models/Exceptions/CustomException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Models\Exceptions
{

class CustomException extends \Exception
{
function __construct(int $code, string $message)
{
parent::__construct($code . ": " . $message);
}
}
}

14 changes: 0 additions & 14 deletions src/Models/Exceptions/RouteException.php

This file was deleted.

12 changes: 0 additions & 12 deletions src/Models/Exceptions/RouteNotFoundException.php

This file was deleted.

21 changes: 21 additions & 0 deletions src/Models/ViewModels/NewOrderViewModel.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php
namespace Models\ViewModels
{

use Interfaces\IViewModel;
use Models\UserModel;

class NewOrderViewModel implements IViewModel
{
function __construct()
{

}
public array $Articles;
public float $TotalPrice;
public UserModel $User;
}

}


4 changes: 2 additions & 2 deletions src/Models/ViewModels/SearchViewModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
namespace Models\ViewModels;

use Interfaces\IViewModel;
use Models\QueryModel\ManageDVDQueryModel;
use Models\QueryModel\HomeQueryModel;

class SearchViewModel implements IViewModel{
public array $DVDs;
public int $FilteredCount;
public ManageDVDQueryModel $Query;
public HomeQueryModel $Query;
public int $TotalPages;
public int $CurrentPage;
}
Loading

0 comments on commit 405ef42

Please sign in to comment.