Prepare for moving into monorepo

This commit is contained in:
2021-03-18 12:46:40 +01:00
parent f7e3ab8824
commit e7ace387ca
46 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,207 @@
<?php
namespace Chill\AMLI\BudgetBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Chill\PersonBundle\Entity\Person;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManagerInterface;
use Chill\AMLI\BudgetBundle\Entity\AbstractElement;
use Chill\AMLI\BudgetBundle\Security\Authorization\BudgetElementVoter;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Translation\TranslatorInterface;
use Psr\Log\LoggerInterface;
abstract class AbstractElementController extends Controller
{
/**
*
* @var EntityManagerInterface
*/
protected $em;
/**
*
* @var TranslatorInterface
*/
protected $translator;
/**
*
* @var LoggerInterface
*/
protected $chillMainLogger;
public function __construct(
EntityManagerInterface $em,
TranslatorInterface $translator,
LoggerInterface $chillMainLogger
) {
$this->em = $em;
$this->translator = $translator;
$this->chillMainLogger = $chillMainLogger;
}
/**
* @return AbstractElement the newly created element
*/
abstract protected function createNewElement();
abstract protected function getType();
/**
*
*/
protected function _new(Person $person, Request $request, $template, $flashMessageOnSuccess)
{
/* @var $element \Chill\AMLI\BudgetBundle\Entity\AbstractElement */
$element = $this->createNewElement()
->setPerson($person)
;
$this->denyAccessUnlessGranted(BudgetElementVoter::CREATE, $element);
$form = $this->createForm($this->getType(), $element);
$form->add('submit', SubmitType::class);
$form->handleRequest($request);
if ($form->isSubmitted() and $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($element);
$em->flush();
$this->addFlash('success', $this->translator->trans($flashMessageOnSuccess));
return $this->redirectToRoute('chill_budget_elements_index', [
'id' => $person->getId()
]);
} elseif ($form->isSubmitted()) {
$this->addFlash('error', $this->translator->trans('This form contains errors'));
}
return $this->render($template, array(
'form' => $form->createView(),
'person' => $person,
'element' => $element
));
}
/**
*
* @param AbstractElement $element
* @param Request $request
* @param string $template
* @param string $flashOnSuccess
* @return \Symfony\Component\HttpFoundation\Response
*/
protected function _edit(AbstractElement $element, Request $request, $template, $flashOnSuccess)
{
$this->denyAccessUnlessGranted(BudgetElementVoter::UPDATE, $element);
$form = $this->createForm($this->getType(), $element);
$form->add('submit', SubmitType::class);
$form->handleRequest($request);
if ($form->isSubmitted() and $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->flush();
$this->addFlash('success', $this->translator->trans($flashOnSuccess));
return $this->redirectToRoute('chill_budget_elements_index', [
'id' => $element->getPerson()->getId()
]);
}
return $this->render($template, array(
'element' => $element,
'form' => $form->createView(),
'person' => $element->getPerson()
));
}
/**
*
* Route(
* "{_locale}/family-members/family-members/{id}/delete",
* name="chill_family_members_family_members_delete"
* )
*
* @param AbstractElement $element
* @param Request $request
* @return \Symfony\Component\BrowserKit\Response
*/
protected function _delete(AbstractElement $element, Request $request, $template, $flashMessage)
{
$this->denyAccessUnlessGranted(BudgetElementVoter::DELETE, $element, 'You are not '
. 'allowed to delete this family membership');
$form = $this->createDeleteForm();
if ($request->getMethod() === Request::METHOD_DELETE) {
$form->handleRequest($request);
if ($form->isValid()) {
$this->chillMainLogger->notice("A budget element has been removed", array(
'family_element' => get_class($element),
'by_user' => $this->getUser()->getUsername(),
'family_member_id' => $element->getId(),
'amount' => $element->getAmount(),
'type' => $element->getType()
));
$em = $this->getDoctrine()->getManager();
$em->remove($element);
$em->flush();
$this->addFlash('success', $this->translator
->trans($flashMessage));
return $this->redirectToRoute('chill_budget_elements_index', array(
'id' => $element->getPerson()->getId()
));
}
}
return $this->render($template, array(
'element' => $element,
'delete_form' => $form->createView()
));
}
/**
* Route(
* "{_locale}/family-members/family-members/{id}/view",
* name="chill_family_members_family_members_view"
* )
*/
protected function _view(AbstractElement $element, $template)
{
$this->denyAccessUnlessGranted(BudgetElementVoter::SHOW, $element);
return $this->render($template, array(
'element' => $element
));
}
/**
* Creates a form to delete a help request entity by id.
*
* @param mixed $id The entity id
*
* @return \Symfony\Component\Form\Form The form
*/
private function createDeleteForm()
{
return $this->createFormBuilder()
->setMethod(Request::METHOD_DELETE)
->add('submit', SubmitType::class, array('label' => 'Delete'))
->getForm()
;
}
}

View File

@@ -0,0 +1,102 @@
<?php
/*
*
*/
namespace Chill\AMLI\BudgetBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Chill\AMLI\BudgetBundle\Controller\AbstractElementController;
use Chill\AMLI\BudgetBundle\Entity\Charge;
use Chill\AMLI\BudgetBundle\Form\ChargeType;
use Chill\PersonBundle\Entity\Person;
/**
*
*
* @author Julien Fastré <julien.fastre@champs-libres.coop>
*/
class ChargeController extends AbstractElementController
{
protected function getType()
{
return ChargeType::class;
}
protected function createNewElement()
{
return new Charge();
}
/**
*
* @Route(
* "{_locale}/budget/charge/{id}/view",
* name="chill_budget_charge_view"
* )
* @param Charge $charge
* @return \Symfony\Component\HttpFoundation\Response
*/
public function viewAction(Charge $charge)
{
return $this->_view($charge, '@ChillAMLIBudget/Charge/view.html.twig');
}
/**
* @Route(
* "{_locale}/budget/charge/by-person/{id}/new",
* name="chill_budget_charge_new"
* )
*
* @param Request $request
* @param Person $person
* @return \Symfony\Component\HttpFoundation\Response
*/
public function newAction(Request $request, Person $person)
{
return $this->_new(
$person,
$request,
'@ChillAMLIBudget/Charge/new.html.twig',
'Charge created');
}
/**
* @Route(
* "{_locale}/budget/charge/{id}/edit",
* name="chill_budget_charge_edit"
* )
*
* @param Request $request
* @param Charge $charge
* @return \Symfony\Component\HttpFoundation\Response
*/
public function editAction(Request $request, Charge $charge)
{
return $this->_edit(
$charge,
$request,
'@ChillAMLIBudget/Charge/edit.html.twig',
'Charge updated');
}
/**
*
* @Route(
* "{_locale}/budget/charge/{id}/delete",
* name="chill_budget_charge_delete"
* )
*
* @param Request $request
* @param Charge $charge
* @return \Symfony\Component\HttpFoundation\Response
*/
public function deleteAction(Request $request, Charge $charge)
{
return $this->_delete(
$charge,
$request,
'@ChillAMLIBudget/Charge/confirm_delete.html.twig',
'Charge deleted');
}
}

View File

@@ -0,0 +1,96 @@
<?php
namespace Chill\AMLI\BudgetBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Chill\PersonBundle\Entity\Person;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Translation\TranslatorInterface;
use Psr\Log\LoggerInterface;
use Chill\AMLI\BudgetBundle\Entity\Charge;
use Chill\AMLI\BudgetBundle\Entity\Resource;
use Chill\AMLI\BudgetBundle\Security\Authorization\BudgetElementVoter;
use Chill\AMLI\BudgetBundle\Calculator\CalculatorManager;
class ElementController extends Controller
{
/**
*
* @var EntityManagerInterface
*/
protected $em;
/**
*
* @var TranslatorInterface
*/
protected $translator;
/**
*
* @var LoggerInterface
*/
protected $chillMainLogger;
/**
*
* @var CalculatorManager
*/
protected $calculator;
public function __construct(
EntityManagerInterface $em,
TranslatorInterface $translator,
LoggerInterface $chillMainLogger,
CalculatorManager $calculator
) {
$this->em = $em;
$this->translator = $translator;
$this->chillMainLogger = $chillMainLogger;
$this->calculator = $calculator;
}
/**
* @Route(
* "{_locale}/budget/elements/by-person/{id}",
* name="chill_budget_elements_index"
* )
*/
public function indexAction(Person $person)
{
$this->denyAccessUnlessGranted(BudgetElementVoter::SHOW, $person);
$charges = $this->em
->getRepository(Charge::class)
->findByPerson($person);
$ressources = $this->em
->getRepository(Resource::class)
->findByPerson($person);
$now = new \DateTime('now');
$actualCharges = $this->em
->getRepository(Charge::class)
->findByPersonAndDate($person, $now);
$actualResources = $this->em
->getRepository(Resource::class)
->findByPersonAndDate($person, $now);
$elements = \array_merge($actualCharges, $actualResources);
if (count($elements) > 0) {
$results = $this->calculator->calculateDefault($elements);
}
return $this->render('ChillAMLIBudgetBundle:Element:index.html.twig', array(
'person' => $person,
'charges' => $charges,
'resources' => $ressources,
'results' => $results ?? []
));
}
}

View File

@@ -0,0 +1,103 @@
<?php
/*
*
*/
namespace Chill\AMLI\BudgetBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Chill\AMLI\BudgetBundle\Controller\AbstractElementController;
use Chill\AMLI\BudgetBundle\Entity\Resource;
use Chill\AMLI\BudgetBundle\Form\ResourceType;
use Chill\PersonBundle\Entity\Person;
/**
*
*
* @author Julien Fastré <julien.fastre@champs-libres.coop>
*/
class ResourceController extends AbstractElementController
{
protected function getType()
{
return ResourceType::class;
}
protected function createNewElement()
{
return new Resource();
}
/**
*
* @Route(
* "{_locale}/budget/resource/{id}/view",
* name="chill_budget_resource_view"
* )
* @param Request $request
* @param Resource $resource
* @return \Symfony\Component\HttpFoundation\Response
*/
public function viewAction(Resource $resource)
{
return $this->_view($resource, '@ChillAMLIBudget/Resource/view.html.twig');
}
/**
* @Route(
* "{_locale}/budget/resource/by-person/{id}/new",
* name="chill_budget_resource_new"
* )
*
* @param Request $request
* @param Person $person
* @return \Symfony\Component\HttpFoundation\Response
*/
public function newAction(Request $request, Person $person)
{
return $this->_new(
$person,
$request,
'@ChillAMLIBudget/Resource/new.html.twig',
'Resource created');
}
/**
* @Route(
* "{_locale}/budget/resource/{id}/edit",
* name="chill_budget_resource_edit"
* )
*
* @param Request $request
* @param Resource $resource
* @return \Symfony\Component\HttpFoundation\Response
*/
public function editAction(Request $request, Resource $resource)
{
return $this->_edit(
$resource,
$request,
'@ChillAMLIBudget/Resource/edit.html.twig',
'Resource updated');
}
/**
*
* @Route(
* "{_locale}/budget/resource/{id}/delete",
* name="chill_budget_resource_delete"
* )
*
* @param Request $request
* @param Resource $resource
* @return \Symfony\Component\HttpFoundation\Response
*/
public function deleteAction(Request $request, Resource $resource)
{
return $this->_delete($resource,
$request,
'@ChillAMLIBudget/Resource/confirm_delete.html.twig',
'Resource deleted');
}
}