Avancement sur la gestion du suivi Antennes. Ajout de la checkbox dans Produits

This commit is contained in:
nox 2020-01-15 01:08:50 +01:00
parent 0ab166726c
commit bd626f62e5
14 changed files with 191 additions and 49 deletions

View File

@ -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];

View File

@ -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 {

View File

@ -0,0 +1,90 @@
<?php
error_reporting(E_ALL & ~E_NOTICE);
include '../../config/config.php';
$bdd = new \PDO("mysql:host=$db_server;dbname=$db_name", $db_username, $db_password);
if(isset($_POST)) {
$params["user_id"] = $_POST['id_connecte'];
$antenne_id = $_POST['id_antenne'];
$etat_suivi = $_POST['etat_suivi'];
$maj = true;
// On lit le champ SuiviAntenne
$requete1 = "SELECT suiviantenne FROM users WHERE id = :user_id";
$query1 = $bdd->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 "<br />antenne_id =".$antenne_id;
$antennes_suivies = $antenne_id;
} elseif ($suivi != $antenne_id) {
echo "suivi 2 =".$suivi;
echo "<br />antenne_id =".$antenne_id;
$antennes_suivies = $suivi . '|' . $antenne_id;
}
}
if ($etat_suivi == 'true') {
if ($suivi == '') {
echo "suivi 0 =" . $suivi;
echo "<br />antenne_id =" . $antenne_id;
$antennes_suivies = $antenne_id;
}
}
if ($etat_suivi == 'false') {
if ($suivi != $antenne_id) {
echo "ERREUR 4 =" . $suivi;
echo "<br />antenne_id =" . $antenne_id;
//$antennes_suivies = $suivi . '|' . $antenne_id;
$maj = false;
} elseif ($suivi == $antenne_id) {
echo "suivi 3 =".$suivi;
echo "<br />antenne_id =".$antenne_id;
$antennes_suivies = '';
} elseif ($suivi == '') {
echo "suivi 5 =" . $suivi;
echo "<br />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();
}

View File

@ -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'));
}
}

View File

@ -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);

View File

@ -17,7 +17,7 @@ class User extends \App\Auth\User
/**
* @var string
*/
private $role;
public $role;
public function getRoles(): array
{

View File

@ -44,7 +44,18 @@
<h5 class="card-title">Antennes suivies</h5>
<div>
<div class="row" style="margin-left: 2rem;">
Paris
<ul class="list-group list-group-flush">
{% set antenne_suivie = suiviantenne|split('|') %}
{% for antenn in antenne_suivie %}
<li class="liste_antennes list-group-item" style="padding: .2rem 1.25rem;">
{% for item in listeAntennes %}
{% if (item.id == antenn) %}
{{ item.antenneName }}
{% endif %}
{% endfor %}
</li>
{% endfor %}
</ul>
</div>
</div>
</div>

View File

@ -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);

View File

@ -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));
}

View File

@ -1,5 +1,8 @@
<?php
namespace Framework\Auth;
if (!isset($_SESSION)) {
session_start();
}
error_reporting(E_ALL & ~E_NOTICE);
use App\Auth\UserTable;
@ -35,10 +38,6 @@ class LoginModalMiddleware implements MiddlewareInterface
$this->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));
}

View File

@ -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 = '';

View File

@ -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' ));
}
}

View File

@ -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;

View File

@ -26,6 +26,27 @@
<div class="toggle_option_slider">
</div>
</div>
ant={{ antenne_id }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<li class="breadcrumb-item">
<div class="custom-control custom-checkbox">
{% set checked = '' %}
{% set antenne_suivie = suiviantenne|split('|') %}
{% for antenn in antenne_suivie %}
{% if (antenn == antenne_id) %}
<script type="text/javascript">
$(document).ready(function(){
$('input:checkbox[id=suivi]').attr('checked',true);
});
</script>
{% endif %}
{% endfor %}
<input type="checkbox" class="custom-control-input pull-right" id="suivi"
onclick="UpdateSuiviAntenne('{{ user_id }}','{{ antenne_id }}',
document.getElementById('suivi').checked)">
<label class="custom-control-label" for="suivi">SUIVI</label>
</div>
</li>
</ol>
</nav>
</div>