Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
mathieu
potage
Commits
8d840928
Commit
8d840928
authored
Sep 04, 2018
by
Mat
Browse files
Réécrit la fonction qui charge les objets, et distingue la variable offreOne
parent
bbc50df0
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/PotageBundle/Controller/MembreController.php
View file @
8d840928
...
...
@@ -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
()
$offre
One
=
$this
->
getDoctrine
()
->
getManager
()
->
getRepository
(
'PotageBundle:Offre'
)
->
findOneByReference
(
$tokenInside
[
'offre_ref'
]);
}
else
{
$offre
=
null
;
$offre
One
=
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
,
'offre
One
'
=>
$offre
One
,
'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
->
getGroup
esDepot
Lettre
sAnd
Offre
Legumes
(
$user
);
$offre
=
$this
->
getDoctrine
()
->
getManager
()
$offre
One
=
$this
->
getDoctrine
()
->
getManager
()
->
getRepository
(
'PotageBundle:Offre'
)
->
findOneByReference
(
$offre_ref
);
if
(
$offre
===
null
)
{
if
(
$offre
One
===
null
)
{
return
$this
->
redirectToRoute
(
'potage_today'
);
}
return
$this
->
render
(
'@Potage/Membre/today.html.twig'
,
array
(
'user'
=>
$user
,
'groupes'
=>
$groupes
,
'offre'
=>
$offre
,
'offre
One
'
=>
$offre
One
,
'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
;
}
}
src/PotageBundle/Repository/LettreRepository.php
View file @
8d840928
...
...
@@ -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
...
...
src/PotageBundle/Repository/UtilisateurRepository.php
View file @
8d840928
...
...
@@ -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
...
...
src/PotageBundle/Resources/views/Membre/today.html.twig
View file @
8d840928
...
...
@@ -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
.
ref
erence
}
)
}}
"
>
Offre
{{
lettre.offre
.
ref
erence
}}
</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
%}
{#
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment