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]+).*/';