Commit 0087d396 authored by Mat's avatar Mat

hop en vrac

parent 8de2384f
......@@ -22,6 +22,7 @@ class DefaultController extends MasterController
/**
* TEMPORAIRE une page de test
*
* envoie une infolettre manuellement lorsqu'on déclenche un submit
* TODO déclenchement de l'envoi lorsque le producteur passe la lettre au statut 'Envoyé'
*
......@@ -40,7 +41,7 @@ class DefaultController extends MasterController
*/
$lettre = $this->get('doctrine')->getManager()
->getRepository('PotageBundle:Lettre')
->findOneForSend(7);
->findOneForSend(5);
$header = array(
'id' => $lettre->getId(),
......@@ -75,57 +76,6 @@ class DefaultController extends MasterController
));
}
/**
* La page today affiche le(s) offres disponibles pour un user
* identifié sur base du token passé dans le lien
* TODO les offres en cours, pour un utilisateur connecté
*
* @param Request $request
* @param LettreToken $lettreToken
* @return \Symfony\Component\HttpFoundation\Response
*/
public function todayAction(Request $request, LettreToken $lettreToken)
{
$user = $this->getUser();
if ($user !== null)
{
// récupère l'id de l'utilisateur
$id_utilisateur = $user->getUtilisateur()->getId();
// récupère les groupes de l'utilisateur
$groupes = $this->getDoctrine()
->getRepository('PotageBundle:Utilisateur')
->findAllGroups($id_utilisateur);
foreach ($groupes as $k => $groupe)
{
// récupère les lettres d'un groupe
$lettres = $this->getDoctrine()
->getRepository('PotageBundle:Lettre')
->findAllByGroupAndByStatus($groupe['id'], 'sent');
$groupes[$k]['lettres'] = $lettres;
}
}
/**
* Debug token
*/
$tokenEncoded = $request->query->get('token');
$tokenDecoded = $lettreToken->decodePotageAccess($tokenEncoded);
return $this->render('@Potage/Default/today.html.twig', array(
'user' => $user,
'groupes' => $groupes,
'tokenEncoded' => $tokenEncoded,
'tokenDecoded' => $tokenDecoded,
));
}
}
<?php
namespace PotageBundle\Controller;
use PotageBundle\Entity\User;
use PotageBundle\Services\LettreToken;
use Symfony\Component\HttpFoundation\Request;
class MembreController extends MasterController
{
/**
* @param User $user
* @return array
*/
private function getGroupLettreOffre(User $user)
{
if (! $user->getUtilisateur()) {
return false;
}
// récupère l'id de l'utilisateur
$id_utilisateur = $user->getUtilisateur()->getId();
// récupère les groupes de l'utilisateur
$groupes = $this->getDoctrine()->getManager()
->getRepository('PotageBundle:Utilisateur')
->findAllGroups($id_utilisateur);
if ($groupes !== null)
{
foreach ($groupes as $k => $groupe)
{
$lettres = $this->getDoctrine()->getManager()
->getRepository('PotageBundle:Lettre')
->findAllByGroupAndByStatus($groupe['id'], 'sent');
$groupes[$k]['lettres'] = $lettres;
}
} else {
$groupes = array();
}
return $groupes;
}
/**
* La page today affiche le(s) offres disponibles pour un user
* identifié sur base du token passé dans le lien
* TODO les offres en cours, pour un utilisateur connecté
*
* @param Request $request
* @param LettreToken $lettreToken
* @return \Symfony\Component\HttpFoundation\Response
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function todayAction(Request $request, LettreToken $lettreToken)
{
$user = $this->getUser();
if ($user !== null)
{
$groupes = $this->getGroupLettreOffre($user);
if ($request->query->has('token'))
{
/**
* Debug token
*/
$token = $request->query->get('token');
$tokenInside = $lettreToken->decodePotageAccess($token);
$offre = $this->getDoctrine()->getManager()
->getRepository('PotageBundle:Offre')
->findOneByReference($tokenInside['offre_ref']);
} else {
$offre = null;
$token = null;
$tokenInside =null;
}
return $this->render('@Potage/Membre/today.html.twig', array(
'user' => $user,
'groupes' => $groupes,
'offre' => $offre,
'token' => $token,
'tokenInside' => $tokenInside,
));
}
}
/**
* @param $offre_ref
* @return \Symfony\Component\HttpFoundation\Response
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function todayOneAction($offre_ref)
{
$user = $this->getUser();
if ($user !== null)
{
$groupes = $this->getGroupLettreOffre($user);
$offre = $this->getDoctrine()->getManager()
->getRepository('PotageBundle:Offre')
->findOneByReference($offre_ref);
return $this->render('@Potage/Membre/today.html.twig', array(
'user' => $user,
'groupes' => $groupes,
'offre' => $offre,
'token' => null,
'tokenInside' => null,
));
}
}
}
......@@ -216,10 +216,11 @@ class LettreRepository extends \Doctrine\ORM\EntityRepository
public function findAllByGroupAndByStatus($id_groupe, $status)
{
$qb = $this->createQueryBuilder('l')
->select('l.id', 'l.reference', 'l.startedAt', 'l.endedAt', 'l.status')
->join('l.groupe', 'g')
->select('l.id', 'l.subject', 'l.reference', 'l.startedAt', 'l.endedAt', 'l.status')
->innerJoin('l.groupe', 'g')
->innerJoin('l.offre', 'o')
->addSelect('o.id id_offre')
->addSelect('o.id offre_id', 'o.reference offre_ref')
->where('g.id = :id')
->andWhere('l.status = :status')
->setParameters(array(
......
......@@ -154,4 +154,18 @@ class OffreRepository extends \Doctrine\ORM\EntityRepository
return $qb->getQuery()->getOneOrNullResult();
}
/**
* @param $reference
* @return mixed
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function findOneByReference($reference)
{
$qb = $this->createQueryBuilder('o')
->where('o.reference = :reference')
->setParameter(':reference', $reference)
;
return $qb->getQuery()->getOneOrNullResult();
}
}
......@@ -111,7 +111,7 @@ class UtilisateurRepository extends \Doctrine\ORM\EntityRepository
$qb = $this->createQueryBuilder('u')
->join('u.groupes', 'g')
->join('g.depot', 'd')
->select('g.id', 'g.nom', 'd.jourPanier', 'd.heurePanier', 'd.localisation', 'd.responsable')
->select('g.id', 'g.nom', 'd.jourPanier', 'd.heurePanier', 'd.localisation adresseDepot', 'd.responsable responsableDepot')
->where('u.id = :id')
->setParameter(':id', $id);
return $qb->getQuery()->getResult();
......
......@@ -3,19 +3,32 @@ potage_homepage:
defaults:
_controller: PotageBundle:Default:index
potage_test:
path: /test
defaults:
_controller: PotageBundle:Default:test
methods: [ GET, POST ]
### MEMBER
potage_today:
path: /member/today
defaults:
_controller: PotageBundle:Default:today
_controller: PotageBundle:Membre:today
methods: [ GET ]
### les routes des pages qui interrogent l'APIBundle
potage_today_one:
path: /member/today/{offre_ref}
requirements:
offre_ref: \w+
defaults:
_controller: PotageBundle:Membre:todayOne
methods: [ GET ]
### ADMIN
### des pages master, qui consomment l'APIBundle en ajax
potage_test:
path: /admin/test
defaults:
_controller: PotageBundle:Default:test
methods: [ GET, POST ]
potage_legume_ajax_display:
path: /admin/legumes
......
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="{{ path('potage_homepage') }}">
<img src="{{ asset('css/img/radis.1inv.png') }}" class="d-inline-block align-top" alt="logo">
Potage
<a href="{{ path('potage_homepage') }}">
<span class="navbar-brand mb-0 h1">
<img src="{{ asset('css/img/radis.1inv.png') }}" class="d-inline-block align-top" alt="logo">
Potage
</span>
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
......@@ -14,16 +16,18 @@
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
{#
<li class="nav-item {{ app.request.get('_route') == 'potage_homepage' ? 'active' }}">
<a class="nav-link" href="{{ path('potage_homepage') }}">Accueil
<span class="sr-only">(current)</span></a>
</li>
#}
</ul>
<div id="login">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link {{ app.request.get('_route') == 'potage_today' ? '' }}"
href="{{ path('potage_today') }}">En ce moment
<span class="sr-only">(current)</span></a>
</li>
{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
{% if is_granted('ROLE_ADMIN') %}
......@@ -53,10 +57,39 @@
</li>
{% endif %}
{% if is_granted('ROLE_SUPER_ADMIN') %}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Préférences
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{ path('potage_test') }}">Page de test</a>
<div class="dropdown-divider"></div>
</div>
</li>
{% endif %}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{ app.user.username }}
{% if app.user.utilisateur %}
{{ app.user.utilisateur.prenom }} {{ app.user.utilisateur.nom }}
{% else %}
{{ app.user.username }}
{% endif %}
<span class="userrole">
{% if is_granted('ROLE_SUPER_ADMIN') %}
Administrateur
{% elseif is_granted('ROLE_ADMIN') %}
Maraîcher
{% else %}
Membre
{% endif %}
</span>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
......
{% extends '@Potage/layout.html.twig' %}
{% block title %}
Aujourd'hui sur Potage !
{% endblock %}
{% block searchbar %}{% endblock searchbar %}
{% block content %}
<div class="row">
<div class="col-md-10 offset-md-1 bloc">
{% if app.user %}
id: {{ app.user.id }}<br>
username: {{ app.user.username }}<br>
email: {{ app.user.email }}<br>
roles: {% for roles in app.token.roles %}{{ roles.role }}, {% endfor %}<br>
dernière connexion: {{ app.user.lastLogin|date("d M Y, à H:i:s") }}<br>
nom: {{ app.user.utilisateur.prenom }} {{ app.user.utilisateur.nom }}<br>
<hr>
{% endif %}
{{ dump() }}
{#
groupes: {% for groupe in groupes %}{{ groupe.nom }}, {% endfor %}<br>
#}
</div>
</div>
{% endblock %}
{% extends '@Potage/layout.html.twig' %}
{% block title %}
Aujourd'hui sur Potage !
{% endblock %}
{% block searchbar %}{% endblock searchbar %}
{% block content %}
<div class="row">
<div class="col-md-10 offset-md-1 bloc">
{% if app.user %}
id: {{ app.user.id }}<br>
username: {{ app.user.username }}<br>
email: {{ app.user.email }}<br>
roles: {% for roles in app.token.roles %}{{ roles.role }}, {% endfor %}<br>
dernière connexion: {{ app.user.lastLogin|date("d M Y, à H:i:s") }}<br>
{% if app.user.utilisateur %}
nom: {{ app.user.utilisateur.prenom }} {{ app.user.utilisateur.nom }}<br>
{% endif %}
<hr>
{% endif %}
{% if offre is defined %}
{% if offre is not null %}
<h1>{{ offre.reference }} | Offre de légumes n°{{ offre.id }}</h1>
{% else %}
{% if groupes %}
<h2>Offres en cours </h2>
{% for groupe in groupes %}
<ul>
{% if groupe.lettres %}
{% for lettre in groupe.lettres %}
<li>
<a href="{{ path('potage_today_one', { 'offre_ref': lettre.offre_ref }) }}" >Offre {{ lettre.offre_ref }}</a><br>
Infolettre {{ lettre.reference }} → Période du {{ lettre.startedAt|date('d/m/Y') }} au {{ lettre.endedAt|date('d/m/Y') }}<br>
{{ lettre.subject }}<br>
{{ groupe.nom }}: {{ groupe.adresseDepot }}
</li>
{% endfor %}
{% endif %}
</ul>
{% endfor %}
{% else %}
~ Vous n'êtes dans aucun groupe ~
{% endif %}
{% endif %}
{% endif %}
{#
{% if tokenInside is defined %}
{% if tokenInside is not null %}
{{ tokenInside.offre_ref }} {{ tokenInside.offre_id }}
{% endif %}
{% endif %}
#}
{{ dump() }}
</div>
</div>
{% endblock %}
......@@ -16,10 +16,21 @@ header {
z-index: 10;
position: relative;
}
header nav.navbar {
height: 75px;
}
.navbar-brand img {
margin: -5px 3px;
height: 40px;
}
span.userrole {
font-size: 65%;
color: #b1b1b1;
position: absolute;
bottom: -9px;
left: 0;
padding: 7px;
}
/**/
nav.navbar-search {
......@@ -325,6 +336,7 @@ span.posted:first-letter {
/**/
body#today,
body#today_one,
body#homepage {
background-image: url("img/serre_bg.jpg");
background-position: center;
......@@ -332,17 +344,21 @@ body#homepage {
background-attachment: fixed;
}
body#today .bloc,
body#today_one .bloc,
body#homepage .bloc {
background-color: #ffffffad;
padding: 1em 2em;
}
body#today .bloc.welcome,
body#today_one .bloc.welcome,
body#homepage .bloc.welcome {
background-color: #000000ad;
color: white;
margin-top: 21em;
}
body#today footer#footer .footer,
body#today_one footer#footer .footer,
body#homepage footer#footer .footer {
background-color: white;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment