Skip to content

Commit

Permalink
Update for few key properties
Browse files Browse the repository at this point in the history
  • Loading branch information
ItsDyze committed Aug 23, 2024
1 parent adfcfa5 commit a4cffb7
Show file tree
Hide file tree
Showing 12 changed files with 134 additions and 13 deletions.
2 changes: 1 addition & 1 deletion src/Controllers/BaseController.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public function post(): void
{
http_response_code(405);
}
public function put(): void
public function put(int $id): void
{
http_response_code(405);
}
Expand Down
33 changes: 29 additions & 4 deletions src/Controllers/Manage/ManageDVDController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@
{

use Controllers\BaseController;
use Exception;
use Models\DVDModel;
use Models\Exceptions\BadRouteException;
use Models\Exceptions\RouteNotFoundException;
use Models\QueryModel\DVDQueryModel;
use Models\ViewModels\ManageDVDDetailViewModel;
use Models\ViewModels\ManageDVDDetailViewStateEnum;
use Models\ViewModels\ManageDVDListViewModel;
use Services\DVDService;
use Utils\PHPUtils;
Expand All @@ -30,7 +32,7 @@ public function get(int $id = null): void
}
}

public function getAll():void
private function getAll():void
{
$viewModel = new ManageDVDListViewModel();
$service = DVDService::getInstance();
Expand All @@ -47,8 +49,8 @@ public function getAll():void
}

$viewModel->Query = $queryModel;
$viewModel->FilteredCount = $service->getDVDCount($queryModel);
$viewModel->DVDs = $service->getDVDs($queryModel);
$viewModel->FilteredCount = $service->getCount($queryModel);
$viewModel->DVDs = $service->getAll($queryModel);
$viewModel->TotalPages = ceil($viewModel->FilteredCount / $queryModel->Limit);
$viewModel->CurrentPage = ($queryModel->Offset / $queryModel->Limit) + 1;

Expand All @@ -61,11 +63,34 @@ private function getById($id): void
$viewModel = new ManageDVDDetailViewModel();
$service = DVDService::getInstance();

$viewModel->DVD = $service->getDVDById($id);
$viewModel->DVD = $service->getById($id);
$viewModel->state = ManageDVDDetailViewStateEnum::Update;

$controller = new ManageDVDDetailView($viewModel);
$controller->render();
}

public function put($id): void
{
if($id === null)
{
http_response_code(502);
}

$model = new DVDModel();
$service = DVDService::getInstance();

$model->Id = $id;
$model->Title = $_POST["Title"];
$model->LocalTitle = $_POST["LocalTitle"];
$model->Synopsis = $_POST["Synopsis"];
$model->Notation = $_POST["Notation"];

$service->update($model);

header("Location: /manage/dvd/$id");
die();
}
}
}

4 changes: 2 additions & 2 deletions src/Controllers/Manage/ManageDashboardController.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ public function get(): void
$service = DVDService::getInstance();
$queryModel = new DVDQueryModel();
$queryModel->IsOffered=true;
$viewModel->DVDCount = $service->getDVDCount();
$viewModel->OfferedDVDCount = $service->getDVDCount($queryModel);
$viewModel->DVDCount = $service->getCount();
$viewModel->OfferedDVDCount = $service->getCount($queryModel);
$view = new DashboardView($viewModel);
$view->render();
}
Expand Down
6 changes: 6 additions & 0 deletions src/Middlewares/Routing.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ public function route(): void
{
$route = strtolower(rtrim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/\\'));
$verb = strtolower($_SERVER['REQUEST_METHOD']);
if($verb == "post" && isset($_POST['_METHOD']))
{
$verb = strtolower($_POST['_METHOD']);
}
$fragments = explode('/', $route);
$routeHasParam = is_numeric($fragments[count($fragments) - 1]);
$param = null;
Expand All @@ -36,6 +40,8 @@ public function route(): void
$route = rtrim($route, '/\\' . $param);
}

if($route == "") { $route = "/home"; }

$routeRegistry = array(
"/home" => function() {
return new HomeController();
Expand Down
1 change: 1 addition & 0 deletions src/Models/ViewModels/ManageDVDDetailViewModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
class ManageDVDDetailViewModel implements IViewModel
{
public DVDModel $DVD;
public ManageDVDDetailViewStateEnum $state;
}
}

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

namespace Models\ViewModels;

enum ManageDVDDetailViewStateEnum
{
case Update;
case Create;
}
23 changes: 20 additions & 3 deletions src/Services/DVDService.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Models\DVDModel;
use Models\QueryModel\DVDQueryModel;
use Utils\Query\QueryBuilder;
use Utils\Query\UpdateQueryBuilder;

class DVDService extends DataService
{
Expand All @@ -15,7 +16,7 @@ protected function __construct() {
parent::__construct();
}

public function getDVDCount(DVDQueryModel $queryModel = null):int
public function getCount(DVDQueryModel $queryModel = null):int
{
$queryBuilder = (new QueryBuilder())
->select("Count(id)")
Expand Down Expand Up @@ -46,7 +47,7 @@ public function getDVDCount(DVDQueryModel $queryModel = null):int
return 0;
}

public function getDVDs(DVDQueryModel $queryModel): array
public function getAll(DVDQueryModel $queryModel): array
{
$result = array();
$queryBuilder = (new QueryBuilder())
Expand Down Expand Up @@ -87,7 +88,7 @@ public function getDVDs(DVDQueryModel $queryModel): array
return $result;
}

public function getDVDById($id)
public function getById($id):?DVDModel
{
$result = array();
$queryBuilder = (new QueryBuilder())
Expand All @@ -107,6 +108,22 @@ public function getDVDById($id)
return null;
}

public function update(DVDModel $dvd)
{
$queryBuilder = (new UpdateQueryBuilder())
->update("dvds")
->set("Title", $dvd->Title)
->set("LocalTitle", $dvd->LocalTitle)
->set("Synopsis", $dvd->Synopsis)
->set("Notation", $dvd->Notation)

->where("Id", "=", $dvd->Id);

$query = $queryBuilder->getQuery();

$queryResult = $this->fetchStatement($query->sql, $query->params, DVDModel::class);
}

function isAllowedOrderColumn(string $column): bool
{
$allowedOrderColumns = array("Quantity", "Year", "Title", "IsOffered", "Price");
Expand Down
4 changes: 4 additions & 0 deletions src/Utils/Components/FormTextComponent/FormTextComponent.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,17 @@ class FormTextComponent
public string $label;
public ?string $value;
public ?string $placeholder;
public bool $required;
public bool $readOnly;

public function __construct(string $name, string $label, ?string $placeholder = null, ?string $value = "", bool $required = true, bool $readOnly = false)
{
$this->name = $name;
$this->label = $label;
$this->value = $value;
$this->placeholder = $placeholder;
$this->required = $required;
$this->readOnly = $readOnly;
}

public function getRenderedComponent()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
name="<?php echo $this->name; ?>"
placeholder="<?php echo $this->placeholder; ?>"
value="<?php echo $this->value; ?>"
required="<?php echo $this->required; ?>"
readonly="<?php echo $this->readOnly; ?>"
<?php echo $this->required?"required":""; ?>
<?php echo $this->readOnly?"readOnly":""; ?>
/>
</label>
50 changes: 50 additions & 0 deletions src/Utils/Query/UpdateQueryBuilder.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?php

namespace Utils\Query
{

class UpdateQueryBuilder
{
protected string $table;
protected array $where = [];
protected array $set = [];
protected array $params;

function __construct()
{
$this->params = [];
}

public function update($table) {
$this->table = $table;
return $this;
}

public function set($column, $value) {
$this->set[] = "$column = ?";
$this->params[] = $value;
return $this;
}

public function where($column, $operator, $value) {
$this->where[] = "$column $operator ?";
$this->params[] = $value;
return $this;
}

public function getQuery():QueryModel {
$sql = "UPDATE " . $this->table;
$sql .= " SET " . implode(', ', $this->set);
if (!empty($this->where)) {
$sql .= " WHERE " . implode(' AND ', $this->where);
}
$sql .= ";";
$result = new QueryModel();
$result->sql = $sql;
$result->params = $this->params;

return $result;
}
}
}

1 change: 1 addition & 0 deletions src/Views/Manage/DVD/Detail/ManageDVDDetailView.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

use Models\ViewModels\LayoutViewModel;
use Models\ViewModels\ManageDVDDetailViewModel;
use Models\ViewModels\ManageDVDDetailViewStateEnum;
use Views\BaseView;

class ManageDVDDetailView extends BaseView
Expand Down
10 changes: 9 additions & 1 deletion src/Views/Manage/DVD/Detail/ManageDVDDetailView.template.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
<?php

namespace Views\Manage\DVD\Detail;
use Models\ViewModels\ManageDVDDetailViewStateEnum;
use Utils\Components\ComponentsEnum;
use Utils\ComponentsUtils;

$componentBuilder = new ComponentsUtils();
$action = match ($data->state)
{
ManageDVDDetailViewStateEnum::Create => "POST",
ManageDVDDetailViewStateEnum::Update => "PUT",
default => ""
};

?>
<h2>
Expand All @@ -24,14 +31,15 @@
<div class="form section-block">
<div>
<h3 id="General">General</h3>
<input type="hidden" name="_METHOD" value="<?php echo $action; ?>"/>
<?php echo $componentBuilder->getComponent(ComponentsEnum::FormText, "Title", "Titre", "Titre", $data->DVD->Title, true, false); ?>
<?php echo $componentBuilder->getComponent(ComponentsEnum::FormText, "LocalTitle", "Titre local", "Titre local", $data->DVD->LocalTitle, true, false); ?>
<?php echo $componentBuilder->getComponent(ComponentsEnum::FormText, "Synopsis", "Synopsis", "Synopsis", $data->DVD->Synopsis, true, false); ?>
<?php echo $componentBuilder->getComponent(ComponentsEnum::FormText, "Year", "Année de sortie", "Année de sortie", $data->DVD->Year, false, false); ?>
</div>
<div>
<h3 id="Avis">Avis</h3>
<?php echo $componentBuilder->getComponent(ComponentsEnum::FormText, "Note", "Note", "Note", $data->DVD->Note, false, false); ?>
<?php echo $componentBuilder->getComponent(ComponentsEnum::FormText, "Notation", "Notation", "Notation", $data->DVD->Notation, false, false); ?>
<?php echo $componentBuilder->getComponent(ComponentsEnum::FormText, "Note", "Note", "Note", $data->DVD->Note, false, false); ?>
</div>
<div>
Expand Down

0 comments on commit a4cffb7

Please sign in to comment.