From 807d3674fc92502329041c7b2c40dd8008628b66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Fri, 11 Jun 2021 17:58:09 +0200 Subject: [PATCH] implements max holder and validation on UI --- .../Controller/HouseholdMemberController.php | 8 +++- .../Entity/Household/Household.php | 2 +- .../Household/MembersEditor.php | 5 ++- .../vuejs/HouseholdMembersEditor/api.js | 19 --------- .../components/Confirmation.vue | 8 +++- .../HouseholdMembersEditor/store/index.js | 40 ++++++++++++++----- .../Constraints/Household/MaxHolder.php | 4 ++ .../Household/MaxHolderValidator.php | 2 +- 8 files changed, 50 insertions(+), 38 deletions(-) diff --git a/src/Bundle/ChillPersonBundle/Controller/HouseholdMemberController.php b/src/Bundle/ChillPersonBundle/Controller/HouseholdMemberController.php index e78838e22..85e1c86b6 100644 --- a/src/Bundle/ChillPersonBundle/Controller/HouseholdMemberController.php +++ b/src/Bundle/ChillPersonBundle/Controller/HouseholdMemberController.php @@ -50,8 +50,12 @@ class HouseholdMemberController extends ApiController // TODO ACL // - // TODO validation - // + $errors = $editor->validate(); + + if (count($errors) > 0) { + return $this->json($errors, 422); + } + $em = $this->getDoctrine()->getManager(); // if new household, persist it diff --git a/src/Bundle/ChillPersonBundle/Entity/Household/Household.php b/src/Bundle/ChillPersonBundle/Entity/Household/Household.php index 5b186dfc2..349083fcb 100644 --- a/src/Bundle/ChillPersonBundle/Entity/Household/Household.php +++ b/src/Bundle/ChillPersonBundle/Entity/Household/Household.php @@ -19,7 +19,7 @@ use Chill\PersonBundle\Validator\Constraints\Household\MaxHolder; * @Serializer\DiscriminatorMap(typeProperty="type", mapping={ * "household"=Household::class * }) - * @MasHolder() + * @MaxHolder(groups={"memberships"}) */ class Household { diff --git a/src/Bundle/ChillPersonBundle/Household/MembersEditor.php b/src/Bundle/ChillPersonBundle/Household/MembersEditor.php index bc25c725f..37db3626f 100644 --- a/src/Bundle/ChillPersonBundle/Household/MembersEditor.php +++ b/src/Bundle/ChillPersonBundle/Household/MembersEditor.php @@ -21,7 +21,7 @@ class MembersEditor public function __construct(ValidatorInterface $validator, ?Household $household) { - $this->validation = $validator; + $this->validator = $validator; $this->household = $household; } @@ -92,7 +92,7 @@ class MembersEditor public function validate(): ConstraintViolationListInterface { - + return $this->validator->validate($this->getHousehold(), null, [ "memberships" ]); } public function getPersistable(): array @@ -100,6 +100,7 @@ class MembersEditor return $this->persistables; } + public function getHousehold(): ?Household { return $this->household; diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdMembersEditor/api.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdMembersEditor/api.js index 8f3d07d63..27318ba0a 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdMembersEditor/api.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdMembersEditor/api.js @@ -16,32 +16,13 @@ const householdMove = (payload) => { if (response.ok) { return response.json(); } - throw Error('Error with testing move'); - }); -}; - -const householdMoveTest = (payload) => { - const url = `/api/1.0/person/household/members/move/test.json`; - return fetch(url, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(payload), - }) - .then(response => { if (response.status === 422) { return response.json(); } - if (response.ok) { - // return an empty array if ok - return new Promise((resolve, reject) => resolve({ violations: [] }) ); - } throw Error('Error with testing move'); }); }; export { householdMove, - householdMoveTest }; diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdMembersEditor/components/Confirmation.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdMembersEditor/components/Confirmation.vue index cc97d7ef9..cc09f3c0b 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdMembersEditor/components/Confirmation.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdMembersEditor/components/Confirmation.vue @@ -12,6 +12,9 @@
  • {{ $t(msg.m, msg.a) }}
  • +
  • + {{ msg }} +