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 @@