diff --git a/src/Admin/AdminModule.php b/src/Admin/AdminModule.php index b8cdc0a..5690162 100644 --- a/src/Admin/AdminModule.php +++ b/src/Admin/AdminModule.php @@ -5,7 +5,8 @@ namespace App\Admin; use App\Account\Action\AccountUserAction; use App\Account\Action\AccountUserEditAction; use App\Account\Action\ActiveAction; -use App\Auth\Action\PasswordForgetAction; +use App\Antenne\Actions\AntenneEditAction; +use App\Antenne\Actions\AntenneCrudAction; use Framework\Auth\LoggedInMiddleware; use Framework\Module; use Framework\Renderer\RendererInterface; @@ -23,13 +24,18 @@ class AdminModule extends Module string $prefix ) { + $chemin = str_replace('Admin','antenne',__DIR__); + //var_dump($chemin); + //die(); + $renderer->addPath('antenne', $chemin . '/views'); $router->get('/dashboard/{user:[a-zA-Z\-0-9]+}', [LoggedInMiddleware::class, DashboardAction::class], 'dashboard'); $router->get('/dashboard/details/{user:[a-zA-Z\-0-9]+}', [LoggedInMiddleware::class, DashboardUserAction::class], 'dashboard.user'); $router->get('/activation', [LoggedInMiddleware::class, ActiveAction::class], 'account.active'); $router->post('/activation', ActiveAction::class); $router->get('/profil-user', [LoggedInMiddleware::class, AccountUserEditAction::class], 'account.user'); $router->post('/profil-user', [LoggedInMiddleware::class, AccountUserEditAction::class]); - //$router->any('/password_reinit', PasswordForgetAction::class, 'auth.password'); + $router->get('/antenne/create', [LoggedInMiddleware::class, AntenneCrudAction::class], 'antenne.create'); + $router->get('/antenne/edit', [LoggedInMiddleware::class, AntenneEditAction::class], 'antenne.edit'); if ($renderer instanceof TwigRenderer) { $renderer->getTwig()->addExtension($adminTwigExtension); // $renderer->getTwig()->addExtension($variableExtension); diff --git a/src/Admin/views/dashboard.twig b/src/Admin/views/dashboard.twig index 148525e..68f6124 100644 --- a/src/Admin/views/dashboard.twig +++ b/src/Admin/views/dashboard.twig @@ -41,9 +41,19 @@ {% endif %}

{% if affiche_role()==0 or affiche_role()==1 or affiche_role()==2 %} +

Gérer les antennes

+ + +

Liste des régions/antennes

+ diff --git a/src/Antenne/Actions/AntenneCrudAction.php b/src/Antenne/Actions/AntenneCrudAction.php new file mode 100644 index 0000000..f71ed6d --- /dev/null +++ b/src/Antenne/Actions/AntenneCrudAction.php @@ -0,0 +1,61 @@ +renderer = $renderer; + $this->regionTable = $regionTable; + $this->antenneTable = $antenneTable; + $this->container = $container; + } + + public function __invoke(Request $request) + { + $params = $request->getQueryParams(); + // On récupère l'id de la région cliquée + $slug = $request->getAttribute('slug') ?: $_SESSION['connecte']; + $region_id = $this->regionTable->findBy('slug', $slug)->id ?: 1; + $page = $params['p'] ?? 1; // Si la page n'est pas définie, on l'initialise à 1 + $antennes = $this->antenneTable->findAllbyRegion($region_id)->paginate(25, $page); + $region = $this->regionTable->findBy('slug', $slug); + $viewPath = '@antenne'; + $sess = $_SESSION; + + return $this->renderer->render('@antenne/create', compact('sess','page', 'region', 'viewPath', 'antennes')); + } +} + diff --git a/src/Antenne/Actions/AntenneEditAction.php b/src/Antenne/Actions/AntenneEditAction.php new file mode 100644 index 0000000..b14954f --- /dev/null +++ b/src/Antenne/Actions/AntenneEditAction.php @@ -0,0 +1,67 @@ +renderer = $renderer; + $this->regionTable = $regionTable; + $this->antenneTable = $antenneTable; + $this->container = $container; + } + + public function __invoke(Request $request) + { + if ($request->getMethod() === 'GET') { + // $role = $this->session->get('role', []); + // $username = $this->session->get('username', []); + $listeAntennes = $this->antenneTable->findAllAntennes(); + $listeRegions = $this->regionTable->findAll(); + } + + $params = $request->getQueryParams(); + // On récupère l'id de la région cliquée + $slug = $request->getAttribute('slug') ?: $_SESSION['connecte']; + //$region_id = $this->regionTable->findBy('slug', $slug)->id ?: 1; + $page = $params['p'] ?? 1; // Si la page n'est pas définie, on l'initialise à 1 + // $antennes = $this->antenneTable->findAllbyRegion($region_id)->paginate(25, $page); + //$region = $this->regionTable->findBy('slug', $slug); + $sess = $_SESSION; + + return $this->renderer->render('@antenne/edit', compact('sess','page', 'listeRegions', 'listeAntennes')); + } +} + diff --git a/src/Antenne/views/create.twig b/src/Antenne/views/create.twig new file mode 100644 index 0000000..03c6c40 --- /dev/null +++ b/src/Antenne/views/create.twig @@ -0,0 +1,16 @@ +{% extends 'layout.twig' %} + +{% block title "Ğ1-Marché - Créer une antenne" %} + +{% block body %} +
+

Créer une antenne

+ +
+ + {% include viewPath ~ '/form.twig' %} + + +
+
+{% endblock %} diff --git a/src/Antenne/views/edit.twig b/src/Antenne/views/edit.twig new file mode 100644 index 0000000..3d06ccc --- /dev/null +++ b/src/Antenne/views/edit.twig @@ -0,0 +1,64 @@ +{% extends 'layout.twig' %} +{% block title "Ğ1-Marché - Modifier Antennes" %} + +{% block body %} +
+
+ + MODIFICATION D'UNE ANTENNE + +
+
+ ANTENNE + +
+
+ REGION + + +
+
+
+ +
+
+ {{ field('name', item.name, "Nom du produit") }} +
+
+ {{ field('contenu', item.content, "Contenu", {type: 'textarea'}) }} +
+
+
+
+ {{ field('prix', item.prix, "Prix") }} +
+
+ +
+
+
+
+
+ + +{% endblock %} diff --git a/src/Antenne/views/form.twig b/src/Antenne/views/form.twig new file mode 100644 index 0000000..c77d95a --- /dev/null +++ b/src/Antenne/views/form.twig @@ -0,0 +1,35 @@ +{{ csrf_input }} +
+
+ {{ field('name', item.name, "Nom du produit") }} + +
+
+ {{ field('quantite', item.quantite, "Quantité") }} + +
+
+ {{ field('prix', item.prix, "Prix") }} + +
+
+
+
+ {{ field('image', item.slug, "Image", {type: 'file'}) }} +
+
+ {% if item.image %} + + {% endif %} +
+ + + +
+{{ field('content', item.content, "Description", {type: 'textarea'}) }} + +{{ field('updated_at', item.updatedAt, "", {type: 'hidden'}) }} +{{ field('created_at', date(), "", {type: 'hidden'}) }} +{{ field('antenne_id', explodeUrl()[4], "", {type: 'hidden'}) }} diff --git a/src/Antenne/views/index.twig b/src/Antenne/views/index.twig new file mode 100644 index 0000000..096fcaa --- /dev/null +++ b/src/Antenne/views/index.twig @@ -0,0 +1,21 @@ + +{% extends 'layout.twig' %} +{% block title "Ğ1-Marché - Antennes" %} + +{% block body %} +
+
+ + GESTION DES ANTENNES + +
+ Ajouter +
+
+ Modifier +
+
+
+{% endblock %} diff --git a/src/Auth/Action/LogoutAction.php b/src/Auth/Action/LogoutAction.php index 5f2086d..a4a3111 100644 --- a/src/Auth/Action/LogoutAction.php +++ b/src/Auth/Action/LogoutAction.php @@ -46,10 +46,6 @@ class LogoutAction public function __invoke(ServerRequestInterface $request) { - /*echo "
";
-        var_dump($request);
-        echo "
"; - die();*/ unset($_SESSION['user']); $_SESSION['connecte']='---'; $_SESSION['logout']=true; diff --git a/src/Framework/Auth/LoggedInMiddleware.php b/src/Framework/Auth/LoggedInMiddleware.php index 5f7c329..92aa70f 100644 --- a/src/Framework/Auth/LoggedInMiddleware.php +++ b/src/Framework/Auth/LoggedInMiddleware.php @@ -41,21 +41,33 @@ class LoggedInMiddleware implements MiddlewareInterface public function process(ServerRequestInterface $request, DelegateInterface $delegate): ResponseInterface { + // echo "
";
+       // var_dump($request);
+      //  var_dump($_SESSION);
+      //  echo "
"; + // die(); $user = $request->getAttribute('user'); - if ($user != '' && $user != '---') { + if ($user != '' && $user != '---' && $_SESSION['connecte'] != '---') { $_SESSION['connecte']=$user; } else { - $url_part = explode('/', $request->getServerParams()['HTTP_REFERER'] ?? '/'); - $username = $url_part[5]; - + if ($_SESSION['connecte'] != '---') { + $username = $_SESSION['connecte']; + } else { + $url_part = explode('/', $request->getServerParams()['HTTP_REFERER'] ?? '/'); + $username = $url_part[5]; + } if (!$_SESSION['logout']) { if (is_null($username)) { - $user = $this->auth->getUser() ?: $this->userTable->findBy('username', $request->getAttribute('user')); + if (is_null($user)) { + $user = $this->auth->getUser(); + } else { + $user = $this->userTable->findBy('username', $user); + } } else { $user = $this->auth->getUser() ?: $this->userTable->findBy('username', $username); } } - if (is_null($user) or $_SESSION['logout']) { + if (is_null($user) or $_SESSION['logout'] or $_SESSION['connecte'] == '---') { (new FlashService($this->session))->error('Vous devez vous connecter pour accéder à cette page'); return new RedirectResponse($this->router->generateUri('auth.login')); } diff --git a/src/Gmarche/Table/AntenneTable.php b/src/Gmarche/Table/AntenneTable.php index 67d81b2..2e14bd3 100644 --- a/src/Gmarche/Table/AntenneTable.php +++ b/src/Gmarche/Table/AntenneTable.php @@ -26,7 +26,7 @@ class AntenneTable extends Table $region = new RegionTable($this->pdo); return $this->makeQuery() ->join($region->getTable() . ' as r', 'a.region_id = r.id') - ->select('a.id, r.name as regionName, a.name as antenneName') + ->select('a.id, r.name as regionName, a.name as antenneName, r.slug as regionSlug, a.slug as antenneSlug') ->order('r.name, a.name ASC'); } } diff --git a/src/Product/Actions/ProductIndexAction.php b/src/Product/Actions/ProductIndexAction.php index 55acaf8..bec6a0e 100644 --- a/src/Product/Actions/ProductIndexAction.php +++ b/src/Product/Actions/ProductIndexAction.php @@ -49,7 +49,6 @@ class ProductIndexAction $gmarchePrefix = $this->container->get('gmarche.prefix'); $antenne_slug = $request->getAttribute('slug'); $region_slug = $request->getAttribute('region'); - //$listeAntennes = $this->antenneTable->findAllAntennes(); $requete = $this->antenneTable->findBy('slug', $antenne_slug); $antenne_name = $requete->name; $antenne_id = $requete->id;