Commit 5c72a866 authored by Mat's avatar Mat
Browse files

OffreLegumes, OK form pour ranger les légumes, et OK affichage selon l'ordre fixé

* implémente une DoctrineExtension pour utiliser ORDER BY FIELD()
cfr. https://github.com/beberlei/DoctrineExtensions
* change le champs sorted en string, pas en array !
* la fonctionnalité est réservée aux offres en préparation
parent 5a96f0b4
......@@ -19,27 +19,28 @@ class OffreLegumesAPIController extends MasterAPIController
// Récupère l'ordre de tri
$sorted = $em->getRepository('PotageBundle:Offre')->findOneForAPIRead($id)->getSorted();
if (!empty($sorted))
{
$legumes = $em->getRepository('PotageBundle:OffreLegumes')->findAllForSortedRead($id, $sorted);
$ici = 'coucou';
}
else {
$legumes = $em->getRepository('PotageBundle:OffreLegumes')->findAllForRead($id);
$ici = '';
}
return $this->api($legumes);
/*
$hop = '';
for ($i=0; $i < count($legumes); $i++)
{
$hop .= $legumes[$i]['id'].',';
}
return $this->render('PotageBundle:Default:test.html.twig', array(
'ici' => $ici,
'if_sorted' => !empty($sorted),
'sorted' => $sorted,
'c_sorted' => empty($sorted),
'leguid' => $hop,
'legumes' => $legumes
));
/*
return $this->api($legumes);
*/
}
}
......@@ -34,17 +34,8 @@ class OffreLegumesRepository extends \Doctrine\ORM\EntityRepository
public function findAllForRead($id_offre)
{
$qb = $this->createQueryBuilder('ol')
->select('ol.id',
'ol.nom',
'ol.description',
'ol.origine',
'ol.image',
'ol.quantiteMin',
'ol.quantiteMax',
'ol.quantiteStep',
'ol.prixUnitaire',
'ol.unite'
)
->select('ol.id', 'ol.nom', 'ol.description', 'ol.origine', 'ol.image',
'ol.quantiteMin', 'ol.quantiteMax', 'ol.quantiteStep', 'ol.prixUnitaire', 'ol.unite')
->where('ol.offre = :id_offre')
->setParameter(':id_offre', $id_offre)
;
......@@ -58,52 +49,17 @@ class OffreLegumesRepository extends \Doctrine\ORM\EntityRepository
*/
public function findAllForSortedRead($id_offre, $sorted)
{
/*
*
* SELECT id, id_offre, nom, reference, [...]
* FROM offre_legumes
* WHERE id_offre = 22
* ORDER BY FIELD(id, 46, 20, 45, 27, 22, 26)
*
* @param $id_offre = '22'
* @param $sorted = '20,26,22,27,45,46'
*
//->add('orderBy',
// $qb->expr()->field('ol.id', ':sorted')
//)
*/
//1
$qb = $this->createQueryBuilder('ol')
->select(
'ol.id', 'ol.nom', 'ol.description', 'ol.origine', 'ol.image',
'ol.quantiteMin', 'ol.quantiteMax', 'ol.quantiteStep', 'ol.prixUnitaire', 'ol.unite'
)
->select('ol.id', 'ol.nom', 'ol.description', 'ol.origine', 'ol.image',
'ol.quantiteMin', 'ol.quantiteMax', 'ol.quantiteStep', 'ol.prixUnitaire', 'ol.unite')
->where('ol.offre = :id_offre')
->orderBy('FIELD( ol.id, :sorted)')
->orderBy('FIELD(ol.id, :sorted)')
->setParameters(array(
':id_offre' => $id_offre,
':sorted' => $sorted
':sorted' => explode(',', $sorted )
))
;
return $qb->getQuery()->getResult();
/*
//2
return $this
->getEntityManager()
->createQuery("SELECT ol
FROM PotageBundle\Entity\OffreLegumes ol
WHERE ol.offre = :id_offre
ORDER BY FIELD(:sorted)"
)
->setParameters(array(
':id_offre' => $id_offre,
':sorted' => 'ol.id, '.$sorted
))
->getResult();
*/
}
......
......@@ -105,15 +105,17 @@
</li>
#}
</ul>
</div>
{% if offre.status == 'draft' %}
<div class="card">
<p>repositionnement (si statut draft)</p>
{{ form(formOffreSorted) }}
{% if offre.status == 'draft' %}
<li class="list-group-item">
<p>Sauvegarder la position</p>
{{ form(formOffreSorted) }}
</li>
{% endif %}
</ul>
</div>
{% endif %}
</aside>
</div>
......@@ -241,7 +243,7 @@
{
list[i] = items[i].dataset.legumeId;
}
console.log(list);
//console.log(list);
let input = document.querySelector('input#offre_sorted_sorted');
input.value = list;
......@@ -253,7 +255,8 @@
'POST',
Routing.generate('api_offre_update_sorted', {'id': id_offre}),
function() {
alert('Enregistré');
reloadGridLegumes();
alert('La position des légumes a bien été sauvegardée');
},
form
);
......
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