diff --git a/app/Resources/views/admin/booking/_partial/bucket_modal.html.twig b/app/Resources/views/admin/booking/_partial/bucket_modal.html.twig
index 7ea58fd2e..22cb761a9 100644
--- a/app/Resources/views/admin/booking/_partial/bucket_modal.html.twig
+++ b/app/Resources/views/admin/booking/_partial/bucket_modal.html.twig
@@ -35,7 +35,7 @@ It use the materialize modal class https://materializecss.com/modals.html
{% else %}
Réservé
{% endif %}
- le {{ shift.bookedTime | date_fr_with_time }} par {% if shift.booker and shift.booker.beneficiary %}{{ shift.booker.beneficiary }}{% else %}{{shift.booker}}{% endif %}.
+ le {{ shift.bookedTime | date_fr_with_time }} par {% if shift.booker and shift.booker.beneficiary %}{{ shift.booker.beneficiary }}{% else %}{{ shift.booker }}{% endif %}.
{% if is_granted('free',shift) %}
{% if use_card_reader_to_validate_shifts and shift.isPastOrCurrent %}
@@ -101,8 +101,8 @@ It use the materialize modal class https://materializecss.com/modals.html
-
-
+
+
{% if use_fly_and_fixed %}
diff --git a/app/Resources/views/admin/period/edit.html.twig b/app/Resources/views/admin/period/edit.html.twig
index ac8969822..6b8f728e8 100644
--- a/app/Resources/views/admin/period/edit.html.twig
+++ b/app/Resources/views/admin/period/edit.html.twig
@@ -138,7 +138,7 @@
$('input.autocomplete').autocomplete({
data: {
{% for beneficiary in beneficiaries %}
- "{{ beneficiary.displayNameWithMemberNumber }}" : null,
+ "{{ beneficiary.displayNameWithMemberNumber }}": null,
{% endfor %}
},
limit: 10, // The max amount of results that can be shown at once. Default: Infinity.
diff --git a/src/AppBundle/Controller/BookingController.php b/src/AppBundle/Controller/BookingController.php
index 869796906..df241f57e 100644
--- a/src/AppBundle/Controller/BookingController.php
+++ b/src/AppBundle/Controller/BookingController.php
@@ -732,7 +732,7 @@ public function bookShiftAdminAction(Request $request, Shift $shift)
$session = new Session();
$form = $this->createFormBuilder()
- ->add('booker', TextType::class)
+ ->add('shifter', TextType::class)
->add('fixe', RadioType::class)
->getForm();
@@ -745,9 +745,11 @@ public function bookShiftAdminAction(Request $request, Shift $shift)
}
$fixe = $form->get("fixe")->getData();
- $str = $form->get("booker")->getData();
+ $str = $form->get("shifter")->getData();
$em = $this->getDoctrine()->getManager();
- $beneficiary = $em->getRepository('AppBundle:Beneficiary')->findFromAutoComplete($str);
+ // $membership = $em->getRepository('AppBundle:Membership')->findOneFromAutoComplete($str);
+ // $beneficiary = $membership->getBeneficiaries()->findOneFromAutoComplete($str);
+ $beneficiary = $em->getRepository('AppBundle:Beneficiary')->findOneFromAutoComplete($str);
if (!$beneficiary) {
$session->getFlashBag()->add("error", "Impossible de trouve ce béneficiaire 😕");
diff --git a/src/AppBundle/Controller/PeriodController.php b/src/AppBundle/Controller/PeriodController.php
index b2672a0e0..e3d858c16 100644
--- a/src/AppBundle/Controller/PeriodController.php
+++ b/src/AppBundle/Controller/PeriodController.php
@@ -319,7 +319,7 @@ public function bookPositionToPeriodAction(Request $request, PeriodPosition $pos
$str = $content->beneficiary;
$em = $this->getDoctrine()->getManager();
- $beneficiary = $em->getRepository('AppBundle:Beneficiary')->findFromAutoComplete($str);
+ $beneficiary = $em->getRepository('AppBundle:Beneficiary')->findOneFromAutoComplete($str);
if (!$beneficiary) {
$session->getFlashBag()->add("error", "Impossible de trouve ce béneficiaire 😕");
diff --git a/src/AppBundle/Repository/BeneficiaryRepository.php b/src/AppBundle/Repository/BeneficiaryRepository.php
index 75118989d..4d41d4a16 100644
--- a/src/AppBundle/Repository/BeneficiaryRepository.php
+++ b/src/AppBundle/Repository/BeneficiaryRepository.php
@@ -10,13 +10,28 @@
*/
class BeneficiaryRepository extends \Doctrine\ORM\EntityRepository
{
- public function findFromAutoComplete($str)
+ /**
+ * findOneFromAutoComplete
+ *
+ * We consider that the $str will have the following format:
+ * ""
+ */
+ public function findOneFromAutoComplete($str)
{
- $re = '/^#([0-9]+).*/';
- preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
- if (count($matches) == 1) {
- $beneficiaryId = $matches[0][1];
- return $this->find($beneficiaryId);
+ $reId = '/^#([0-9]+).*/';
+ $reFirstname = '/(?<=\s)(.*?)(?=\s)/';
+ preg_match_all($reId, $str, $matchesId, PREG_SET_ORDER, 0);
+ preg_match_all($reFirstname, $str, $matchesFirstname, PREG_SET_ORDER, 0);
+ if ((count($matchesId) == 1) && (count($matchesFirstname) == 1)) {
+ $qb = $this->createQueryBuilder('b');
+
+ $qb->leftJoin('b.membership', 'm')
+ ->where('m.member_number = :membernumber')
+ ->andWhere('b.firstname = :firstname')
+ ->setParameter('membernumber', $matchesId[0][1])
+ ->setParameter('firstname', $matchesFirstname[0][1]);
+
+ return $qb->getQuery()->getSingleResult();
}
return null;
}
@@ -32,11 +47,10 @@ public function findAllActive()
$qb = $this->createQueryBuilder('beneficiary');
-
$qb->select('beneficiary, membership')
->join('beneficiary.user', 'user')
->join('beneficiary.membership', 'membership')
- ->where('membership.withdrawn=0');
+ ->where('membership.withdrawn = 0');
return $qb->getQuery()->getResult();
}
diff --git a/src/AppBundle/Repository/MembershipRepository.php b/src/AppBundle/Repository/MembershipRepository.php
index 7e421aac8..32b502961 100644
--- a/src/AppBundle/Repository/MembershipRepository.php
+++ b/src/AppBundle/Repository/MembershipRepository.php
@@ -12,7 +12,12 @@
*/
class MembershipRepository extends \Doctrine\ORM\EntityRepository
{
-
+ /**
+ * findOneFromAutoComplete
+ *
+ * We consider that the $str will have the following format:
+ * ""
+ */
public function findOneFromAutoComplete($str)
{
$re = '/^#([0-9]+).*/';