From bd626f62e5022e4c767a8d91a032f5c13c530efe Mon Sep 17 00:00:00 2001 From: nox Date: Wed, 15 Jan 2020 01:08:50 +0100 Subject: [PATCH] Avancement sur la gestion du suivi Antennes. Ajout de la checkbox dans Produits --- public/js/script.js | 16 +++++ public/models/connexion.php | 1 + public/models/updateSuiviAntenne.php | 90 +++++++++++++++++++++++++++++ src/Account/Action/ProfilAction.php | 8 ++- src/Account/Action/SignupAction.php | 4 +- src/Account/User.php | 2 +- src/Account/views/profil.twig | 13 ++++- src/Auth/Action/LoginAttemptAction.php | 3 + src/Framework/Auth/LoggedInMiddleware.php | 34 +++++------ src/Framework/Auth/LoginModalMiddleware.php | 11 ++-- src/Gmarche/Actions/RegionIndexAction.php | 16 ++--- src/Product/Actions/ProductIndexAction.php | 19 +++--- src/Product/Actions/RechIndexAction.php | 2 +- src/Product/views/admin/products/index.twig | 21 +++++++ 14 files changed, 191 insertions(+), 49 deletions(-) create mode 100644 public/models/updateSuiviAntenne.php diff --git a/public/js/script.js b/public/js/script.js index 992e667..4f88359 100644 --- a/public/js/script.js +++ b/public/js/script.js @@ -197,6 +197,21 @@ function UpdateProduitsDetails(nom_connecte) { } ); } +function UpdateSuiviAntenne(id_connecte, id_antenne, etat_suivi) { + + + $.post("/models/updateSuiviAntenne.php", { + id_connecte: id_connecte, + id_antenne: id_antenne, + etat_suivi: etat_suivi + }, + function (data, status) { + + // On recharge la page pour tenir compte de la connexion de l'utilisateur + //window.location.reload(true); + } + ); +} function UpdateRecherchesDetails(nom_connecte) { var produit = $("#update_produit").val(); @@ -227,6 +242,7 @@ function UpdateRecherchesDetails(nom_connecte) { } $(document).ready(function () { + //$('input:checkbox[name=mybox]').attr('checked',false); // On récupère le nom de l'antenne dans l'url pour afficher les biens/services de celle-ci var url = document.location.href; var antenne_slug = url.split('/')[5]; diff --git a/public/models/connexion.php b/public/models/connexion.php index df0df0a..065f859 100644 --- a/public/models/connexion.php +++ b/public/models/connexion.php @@ -19,6 +19,7 @@ try { if (password_verify($_POST['mdp'],$row['password'])) { $_SESSION['connecte'] = $row['username']; + $_SESSION['role'] = $row['role']; $_SESSION['logout'] = false; echo '{"valide":true,"username":"'.$row['username'].'"}'; } else { diff --git a/public/models/updateSuiviAntenne.php b/public/models/updateSuiviAntenne.php new file mode 100644 index 0000000..7309878 --- /dev/null +++ b/public/models/updateSuiviAntenne.php @@ -0,0 +1,90 @@ +prepare($requete1); + $ancien_suivi = $query1->execute($params); + $suivi = $ancien_suivi; + //echo "ancien=".$ancien_suivi; + /*if (strpos($ancien_suivi,'|')>0) { + echo "strpos > 0"; + $tableau = explode('|', $ancien_suivi); + $antennes_suivies = ''; + // On ajoute l'antenne suivie + if ($etat_suivi == 'true') { + if (count($tableau) > 0) { + foreach ($valeur as $tableau) { + $antennes_suivies .= $valeur.'|'; + } + $antennes_suivies .= $antenne_id; + } + } else { + // On retire l'antenne qui n'est plus suivie + foreach($valeur2 as $tableau) { + if ($valeur2 == $antenne_id) { + $ajout = ''; + } else { + $ajout = $valeur2.'|'; + } + $antennes_suivies .= $ajout; + } + // On supprime le pipe inutile à la fin de la chaîne + $antennes_suivies = substr($antennes_suivies,0,-1); + }*/ + // On ajoute alors qu'il n'y a qu'une antenne dans le suivi ou aucune + if ($etat_suivi == 'true') { + if ($suivi == $antenne_id) { + echo "suivi 1 =".$suivi; + echo "
antenne_id =".$antenne_id; + $antennes_suivies = $antenne_id; + } elseif ($suivi != $antenne_id) { + echo "suivi 2 =".$suivi; + echo "
antenne_id =".$antenne_id; + $antennes_suivies = $suivi . '|' . $antenne_id; + } + } + if ($etat_suivi == 'true') { + if ($suivi == '') { + echo "suivi 0 =" . $suivi; + echo "
antenne_id =" . $antenne_id; + $antennes_suivies = $antenne_id; + } + } + if ($etat_suivi == 'false') { + if ($suivi != $antenne_id) { + echo "ERREUR 4 =" . $suivi; + echo "
antenne_id =" . $antenne_id; + //$antennes_suivies = $suivi . '|' . $antenne_id; + $maj = false; + } elseif ($suivi == $antenne_id) { + echo "suivi 3 =".$suivi; + echo "
antenne_id =".$antenne_id; + $antennes_suivies = ''; + } elseif ($suivi == '') { + echo "suivi 5 =" . $suivi; + echo "
antenne_id =" . $antenne_id; + $antennes_suivies = ''; + } + } + + + + // Mise à jour du champ SuiviAntenne + if ($maj) { + $requete2 = "UPDATE users SET suiviantenne = '$antennes_suivies' WHERE id = :user_id"; + $query2 = $bdd->prepare($requete2); + $query2->execute($params); + $query2->closeCursor(); + } + $query1->closeCursor(); + +} diff --git a/src/Account/Action/ProfilAction.php b/src/Account/Action/ProfilAction.php index 36960fa..47712e6 100644 --- a/src/Account/Action/ProfilAction.php +++ b/src/Account/Action/ProfilAction.php @@ -2,6 +2,7 @@ namespace App\Account\Action; use App\Auth\UserTable; +use App\Gmarche\Table\AntenneTable; use Framework\Auth; use Framework\Renderer\RendererInterface; use Psr\Http\Message\ServerRequestInterface; @@ -24,19 +25,24 @@ class ProfilAction public function __construct( RendererInterface $renderer, + AntenneTable $antenneTable, Auth $auth, UserTable $userTable ) { $this->renderer = $renderer; + $this->antenneTable = $antenneTable; $this->auth = $auth; $this->userTable = $userTable; } public function __invoke(ServerRequestInterface $request) { + $listeAntennes = $this->antenneTable->findAllAntennes(); $user_affiche = $request->getAttribute('user')->username; $nom_avatar = $request->getAttribute('user')->avatar; $email = $request->getAttribute('user')->email; - return $this->renderer->render('@account/profil', compact('user_affiche', 'nom_avatar', 'email')); + $suiviantenne = $request->getAttribute('user')->suiviantenne; + return $this->renderer->render('@account/profil', + compact('user_affiche', 'nom_avatar', 'email', 'listeAntennes', 'suiviantenne')); } } diff --git a/src/Account/Action/SignupAction.php b/src/Account/Action/SignupAction.php index c97cef6..14a2cfb 100644 --- a/src/Account/Action/SignupAction.php +++ b/src/Account/Action/SignupAction.php @@ -60,7 +60,6 @@ class SignupAction $validator = (new Validator($params)) ->required('username', 'pubkey', 'email', 'password', 'password_confirm', 'created_at') ->length('username', 3) - ->length('pubkey', 43) ->length('firstname', 0) ->length('lastname', 0) ->email('email') @@ -77,7 +76,8 @@ class SignupAction 'email' => $params['email'], 'password' => password_hash($params['password'], PASSWORD_DEFAULT), 'created_at' => $params['created_at'], - 'role' => 'user' + 'role' => '3', + 'suiviantenne' => '' ]; $this->userTable->insert($userParams); $user = Hydrator::hydrate($userParams, User::class); diff --git a/src/Account/User.php b/src/Account/User.php index 1f631aa..78f81ea 100644 --- a/src/Account/User.php +++ b/src/Account/User.php @@ -17,7 +17,7 @@ class User extends \App\Auth\User /** * @var string */ - private $role; + public $role; public function getRoles(): array { diff --git a/src/Account/views/profil.twig b/src/Account/views/profil.twig index a5448ce..11f0a24 100644 --- a/src/Account/views/profil.twig +++ b/src/Account/views/profil.twig @@ -44,7 +44,18 @@
Antennes suivies
- Paris +
    + {% set antenne_suivie = suiviantenne|split('|') %} + {% for antenn in antenne_suivie %} +
  • + {% for item in listeAntennes %} + {% if (item.id == antenn) %} + {{ item.antenneName }} + {% endif %} + {% endfor %} +
  • + {% endfor %} +
diff --git a/src/Auth/Action/LoginAttemptAction.php b/src/Auth/Action/LoginAttemptAction.php index e968b71..b53bac7 100644 --- a/src/Auth/Action/LoginAttemptAction.php +++ b/src/Auth/Action/LoginAttemptAction.php @@ -60,6 +60,7 @@ class LoginAttemptAction if ($user) { $this->test_user($user, $params); $_SESSION['logout']= false; + return $this->renderer->render('@gmarche/index'); } else { (new FlashService($this->session))->error('Identifiant ou mot de passe incorrect'); @@ -83,6 +84,8 @@ class LoginAttemptAction $this->session->set('username',$params['username']); $this->session->set('role',$role); } + $_SESSION['connecte'] = $params['username']; + $_SESSION['role'] = $role; //$this->renderer->addGlobal('user', $user); //$this->renderer->addGlobal('role', $role); diff --git a/src/Framework/Auth/LoggedInMiddleware.php b/src/Framework/Auth/LoggedInMiddleware.php index 2da7773..5f7c329 100644 --- a/src/Framework/Auth/LoggedInMiddleware.php +++ b/src/Framework/Auth/LoggedInMiddleware.php @@ -41,28 +41,24 @@ class LoggedInMiddleware implements MiddlewareInterface public function process(ServerRequestInterface $request, DelegateInterface $delegate): ResponseInterface { - $url_part = explode('/',$request->getServerParams()['HTTP_REFERER'] ?? '/'); - $username = $url_part[5]; - if (!$_SESSION['logout']) { - // echo "logout = false"; - // die(); + $user = $request->getAttribute('user'); + if ($user != '' && $user != '---') { + $_SESSION['connecte']=$user; } else { - // echo "logout = true"; - // die(); - } + $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')); - } else { - $user = $this->auth->getUser() ?: $this->userTable->findBy('username', $username); + if (!$_SESSION['logout']) { + if (is_null($username)) { + $user = $this->auth->getUser() ?: $this->userTable->findBy('username', $request->getAttribute('user')); + } else { + $user = $this->auth->getUser() ?: $this->userTable->findBy('username', $username); + } + } + if (is_null($user) or $_SESSION['logout']) { + (new FlashService($this->session))->error('Vous devez vous connecter pour accéder à cette page'); + return new RedirectResponse($this->router->generateUri('auth.login')); } - } - // var_dump($user); - // die(); - if (is_null($user) or $_SESSION['logout']) { - (new FlashService($this->session))->error('Vous devez vous connecter pour accéder à cette page'); - return new RedirectResponse($this->router->generateUri('auth.login')); } return $delegate->process($request->withAttribute('user', $user)); } diff --git a/src/Framework/Auth/LoginModalMiddleware.php b/src/Framework/Auth/LoginModalMiddleware.php index 2edf28d..97a2bbb 100644 --- a/src/Framework/Auth/LoginModalMiddleware.php +++ b/src/Framework/Auth/LoginModalMiddleware.php @@ -1,5 +1,8 @@ router = $router; $this->userTable = $userTable; $this->session = $session; - //$this->session->set('username','nox'); - //$this->session->set('passage_login_modal',"fait"); - //var_dump($this->session); - // die(); } public function process(ServerRequestInterface $request, DelegateInterface $delegate): ResponseInterface @@ -56,7 +55,9 @@ class LoginModalMiddleware implements MiddlewareInterface return new RedirectResponse($this->router->generateUri('auth.login')); } else { $this->session->set('username',$user->username); - $this->session->set('passage_login_modal',"fait"); + $this->session->set('role',$user->role); + $_SESSION['connecte'] = $user->username; + $_SESSION['role'] = $user->role; } return $delegate->process($request->withAttribute('user', $user)); } diff --git a/src/Gmarche/Actions/RegionIndexAction.php b/src/Gmarche/Actions/RegionIndexAction.php index cda03a3..bbcdc54 100644 --- a/src/Gmarche/Actions/RegionIndexAction.php +++ b/src/Gmarche/Actions/RegionIndexAction.php @@ -26,21 +26,13 @@ class RegionIndexAction } public function __invoke(ServerRequestInterface $request) { - /*$userId = $this->session->get('auth.user'); - echo "userid = "; - var_dump($userId);*/ - if ($request->getMethod() === 'GET') { - //$params = $request->getParsedBody(); - //var_dump($params); - //die(); - //$role = $this->userTable->findBy('username', $params['username'])->role; - //var_dump($role); - //die(); + /*$userId = $this->session->get('auth.user');*/ + if ($request->getMethod() === 'GET') { $accueil = true; - if (isset($_SESSION['user'])) { - $nom_user = $_SESSION['user']; + if (isset($_SESSION['connecte'])) { + $nom_user = $_SESSION['connecte']; $role = $_SESSION['role']; } else { $nom_user = ''; diff --git a/src/Product/Actions/ProductIndexAction.php b/src/Product/Actions/ProductIndexAction.php index e1985b9..55acaf8 100644 --- a/src/Product/Actions/ProductIndexAction.php +++ b/src/Product/Actions/ProductIndexAction.php @@ -47,9 +47,9 @@ class ProductIndexAction { $params = $request->getQueryParams(); $gmarchePrefix = $this->container->get('gmarche.prefix'); - $antenne_slug =$request->getAttribute('slug'); - $region_slug =$request->getAttribute('region'); - + $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; @@ -59,15 +59,20 @@ class ProductIndexAction $viewPath = '@product/admin/products'; $items = $this->productTable->findByAntenneId('antenne_id', $antenne_id)->paginate(20, $page); - if (isset($_SESSION['connecte'])) { + if (isset($_SESSION['connecte']) && $_SESSION['connecte'] != '---') { $nom_user = $_SESSION['connecte']; $requete_user = $this->userTable->findBy('username', $nom_user); $user_id = $requete_user->id; + $suiviantenne = $requete_user->suiviantenne; } else { - $nom_user = ''; - $user_id = ''; + $nom_user = ''; + $user_id = ''; + $suiviantenne = ''; } + $sess = $_SESSION; - return $this->renderer->render($viewPath.'/index', compact('sess','nom_user','user_id', 'antenne_slug','gmarchePrefix','region_name','region_slug','antenne_id','antenne_name','viewPath', 'items' )); + return $this->renderer->render($viewPath.'/index', compact('sess','nom_user','user_id', + 'antenne_slug','gmarchePrefix','region_name','region_slug','antenne_id','antenne_name','viewPath', + 'items', 'suiviantenne' )); } } diff --git a/src/Product/Actions/RechIndexAction.php b/src/Product/Actions/RechIndexAction.php index fb918a9..52b8fca 100644 --- a/src/Product/Actions/RechIndexAction.php +++ b/src/Product/Actions/RechIndexAction.php @@ -59,7 +59,7 @@ class RechIndexAction $viewPath = '@product/admin/recherches'; $items = $this->rechTable->findByAntenneId('antenne_id', $antenne_id)->paginate(20, $page); - if (isset($_SESSION['connecte'])) { + if (isset($_SESSION['connecte']) && $_SESSION['connecte'] != '---') { $nom_user = $_SESSION['connecte']; $requete_user = $this->userTable->findBy('username', $nom_user); $user_id = $requete_user->id; diff --git a/src/Product/views/admin/products/index.twig b/src/Product/views/admin/products/index.twig index 5e8146a..8cc5ac5 100644 --- a/src/Product/views/admin/products/index.twig +++ b/src/Product/views/admin/products/index.twig @@ -26,6 +26,27 @@
+ ant={{ antenne_id }}            +