Commit 8d840928 authored by Mat's avatar Mat

Réécrit la fonction qui charge les objets, et distingue la variable offreOne

parent bbc50df0
......@@ -2,50 +2,18 @@
namespace PotageBundle\Controller;
use PotageBundle\Entity\Groupe;
use PotageBundle\Entity\Lettre;
use PotageBundle\Entity\Offre;
use PotageBundle\Entity\OffreLegumes;
use PotageBundle\Entity\User;
use PotageBundle\Entity\Utilisateur;
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
......@@ -63,8 +31,7 @@ class MembreController extends MasterController
if ($user !== null)
{
$groupes = $this->getGroupLettreOffre($user);
$groupes = $this->getGroupesDepotLettresAndOffreLegumes($user);
if ($request->query->has('token'))
{
......@@ -74,13 +41,13 @@ class MembreController extends MasterController
$token = $request->query->get('token');
$tokenInside = $lettreToken->decodePotageUserToken($token);
$offre = $this->getDoctrine()->getManager()
$offreOne = $this->getDoctrine()->getManager()
->getRepository('PotageBundle:Offre')
->findOneByReference($tokenInside['offre_ref']);
} else {
$offre = null;
$offreOne = null;
$token = null;
$tokenInside =null;
......@@ -89,7 +56,7 @@ class MembreController extends MasterController
return $this->render('@Potage/Membre/today.html.twig', array(
'user' => $user,
'groupes' => $groupes,
'offre' => $offre,
'offreOne' => $offreOne,
'token' => $token,
'tokenInside' => $tokenInside,
));
......@@ -106,22 +73,23 @@ class MembreController extends MasterController
public function todayOneAction($offre_ref)
{
$user = $this->getUser();
if ($user !== null)
{
$groupes = $this->getGroupLettreOffre($user);
$groupes = $this->getGroupesDepotLettresAndOffreLegumes($user);
$offre = $this->getDoctrine()->getManager()
$offreOne = $this->getDoctrine()->getManager()
->getRepository('PotageBundle:Offre')
->findOneByReference($offre_ref);
if ($offre === null) {
if ($offreOne === null) {
return $this->redirectToRoute('potage_today');
}
return $this->render('@Potage/Membre/today.html.twig', array(
'user' => $user,
'groupes' => $groupes,
'offre' => $offre,
'offreOne' => $offreOne,
'token' => null,
'tokenInside' => null,
));
......@@ -129,6 +97,44 @@ class MembreController extends MasterController
}
/**
* Récupère la chaîne d'objets
* User -> Utilisateur -> Groupes -> Lettres -> Offre -> Legumes
*
* @param User $user
* @return \Doctrine\Common\Collections\Collection
*/
private function getGroupesDepotLettresAndOffreLegumes(User $user)
{
/**
* @var Utilisateur $utilisateur
* @var Groupe $groupe
*/
$utilisateur = $user->getUtilisateur();
$groupes = $utilisateur->getGroupes();
foreach ($groupes as $groupe)
{
/**
* @var Lettre $lettre
*/
$lettres = $groupe->getLettres();
foreach ($lettres as $lettre)
{
/**
* @var Offre $offre
* @var OffreLegumes $legumes
*/
$offre = $lettre->getOffre();
$legumes = $offre->getOffreLegumes();
foreach ($legumes as $legume)
{
// semble nécessaire pour récupérer les légumes
}
}
}
return $groupes;
}
}
......@@ -208,27 +208,6 @@ class LettreRepository extends \Doctrine\ORM\EntityRepository
return $qb->getQuery()->getResult();
}
/**
* @param $id_groupe
* @param $status
* @return array
*/
public function findAllByGroupAndByStatus($id_groupe, $status)
{
$qb = $this->createQueryBuilder('l')
->select('l.id', 'l.subject', 'l.reference', 'l.startedAt', 'l.endedAt', 'l.status')
->innerJoin('l.groupe', 'g')
->innerJoin('l.offre', 'o')
->addSelect('o.id offre_id', 'o.reference offre_ref', 'o.status offre_status')
->where('g.id = :id')
->andWhere('l.status = :status')
->setParameters(array(
':id'=> $id_groupe,
':status'=> $status
));
return $qb->getQuery()->getResult();
}
/**
* @param $id
......
......@@ -101,21 +101,6 @@ class UtilisateurRepository extends \Doctrine\ORM\EntityRepository
->getResult();
}
/**
* Les groupes d'un utilisateur
* @param $id
* @return array
*/
public function findAllGroups($id)
{
$qb = $this->createQueryBuilder('u')
->join('u.groupes', 'g')
->join('g.depot', 'd')
->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();
}
/**
* Tous les utilisateurs d'un groupe
......
......@@ -22,9 +22,16 @@
<hr>
{% endif %}
{% if offre is defined %}
{% if offre is not null %}
<h1>{{ offre.reference }} | Offre de légumes n°{{ offre.id }}</h1>
{% if offreOne is defined %}
{% if offreOne is not null %}
<h1>{{ offreOne.reference }} | Offre de légumes n°{{ offreOne.id }}</h1>
<h3>Expire le {{ offreOne.endedAt|date('d M Y à H:i A') }}</h3>
{% for legume in offreOne.offreLegumes %}
{{ legume.nom }}
{% endfor %}
{% else %}
{% if groupes %}
<h2>Offres en cours </h2>
......@@ -32,13 +39,13 @@
<ul>
{% if groupe.lettres %}
{% for lettre in groupe.lettres %}
{% if lettre.offre_status == 'current' %}
{% if lettre.offre.status == 'current' %}
<li>
<a href="{{ path('potage_today_one', { 'offre_ref': lettre.offre_ref }) }}" >Offre {{ lettre.offre_ref }}</a><br>
<a href="{{ path('potage_today_one', { 'offre_ref': lettre.offre.reference }) }}" >Offre {{ lettre.offre.reference }}</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 }}
{{ groupe.nom }}: {{ groupe.depot.localisation }}
</li>
{% endif %}
{% endfor %}
......@@ -49,6 +56,7 @@
~ Vous n'êtes dans aucun groupe ~
{% endif %}
{% endif %}
{% endif %}
{#
......
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