Controllers adjusted for use with person or household

This commit is contained in:
2022-02-24 15:48:39 +01:00
parent 9065ec40b1
commit 0fcf21bd35
4 changed files with 114 additions and 137 deletions

View File

@@ -56,10 +56,18 @@ abstract class AbstractElementController extends Controller
protected function _delete(AbstractElement $element, Request $request, $template, $flashMessage): Response
{
$this->denyAccessUnlessGranted(BudgetElementVoter::DELETE, $element, 'You are not '
. 'allowed to delete this family membership');
. 'allowed to delete this item');
$form = $this->createDeleteForm();
if (null != $element->getPerson()) {
$entity = $element->getPerson();
$indexPage = 'chill_budget_elements_index';
} else {
$entity = $element->getHousehold();
$indexPage = 'chill_budget_elements_household_index';
}
if ($request->getMethod() === Request::METHOD_DELETE) {
$form->handleRequest($request);
@@ -79,8 +87,8 @@ abstract class AbstractElementController extends Controller
$this->addFlash('success', $this->translator
->trans($flashMessage));
return $this->redirectToRoute('chill_budget_elements_index', [
'id' => $element->getPerson()->getId(),
return $this->redirectToRoute($indexPage, [
'id' => $entity->getId(),
]);
}
}
@@ -99,6 +107,18 @@ abstract class AbstractElementController extends Controller
{
$this->denyAccessUnlessGranted(BudgetElementVoter::UPDATE, $element);
if (null != $element->getPerson()) {
$entity = $element->getPerson();
$entityStr = 'person';
$indexPage = 'chill_budget_elements_index';
} else {
$entity = $element->getHousehold();
$entityStr = 'household';
$indexPage = 'chill_budget_elements_household_index';
}
$entity = null != $element->getPerson() ? : $element->getHousehold();
$form = $this->createForm($this->getType(), $element);
$form->add('submit', SubmitType::class);
@@ -110,15 +130,15 @@ abstract class AbstractElementController extends Controller
$this->addFlash('success', $this->translator->trans($flashOnSuccess));
return $this->redirectToRoute('chill_budget_elements_index', [
'id' => $element->getPerson()->getId(),
return $this->redirectToRoute($indexPage, [
'id' => $entity->getId(),
]);
}
return $this->render($template, [
'element' => $element,
'form' => $form->createView(),
'person' => $element->getPerson(),
$entityStr => $entity,
]);
}
@@ -126,13 +146,22 @@ abstract class AbstractElementController extends Controller
* @param mixed $template
* @param mixed $flashMessageOnSuccess
*/
protected function _new(Person $person, Request $request, $template, $flashMessageOnSuccess)
protected function _new($entity, Request $request, $template, $flashMessageOnSuccess)
{
/** @var AbstractElement $element */
$element = $this->createNewElement()
->setPerson($person);
$element = new AbstractElement();
$this->denyAccessUnlessGranted(BudgetElementVoter::CREATE, $element);
if ($entity instanceof Person) {
$element->setPerson($entity);
$entityStr = 'person';
$indexPage = 'chill_budget_elements_index';
} else {
$element->setHousehold($entity);
$entityStr = 'household';
$indexPage = 'chill_budget_elements_household_index';
}
$this->denyAccessUnlessGranted(BudgetElementVoter::CREATE, $entity);
$form = $this->createForm($this->getType(), $element);
$form->add('submit', SubmitType::class);
@@ -146,8 +175,8 @@ abstract class AbstractElementController extends Controller
$this->addFlash('success', $this->translator->trans($flashMessageOnSuccess));
return $this->redirectToRoute('chill_budget_elements_index', [
'id' => $person->getId(),
return $this->redirectToRoute($indexPage, [
'id' => $entity->getId(),
]);
}
@@ -157,7 +186,7 @@ abstract class AbstractElementController extends Controller
return $this->render($template, [
'form' => $form->createView(),
'person' => $person,
$entityStr => $entity,
'element' => $element,
]);
}