src/UI/WebBundle/Controller/Zones/PublicTownController.php line 23

Open in your IDE?
  1. <?php
  2. namespace Whater\UI\WebBundle\Controller\Zones;
  3. use Whater\UI\WebBundle\Controller\AbstractBusController;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Whater\Application\UseCase\User\CommandRequest\AppRegisterTownOwnershipRequestCommand;
  8. use Whater\Application\UseCase\Zones\CommandRequest\GetTownByIdCommand;
  9. use Whater\Application\UseCase\Zones\CommandRequest\GetTownBySlugCommand;
  10. use Whater\Infrastructure\UserBundle\Form\Type\AppRegisterTownOwnershipRequestType;
  11. /**
  12. * @Route("public/town")
  13. */
  14. class PublicTownController extends AbstractBusController
  15. {
  16. /**
  17. * @Route("/show/id/{townId}", name="web_public_town_show", defaults={"_format" = "html"})
  18. */
  19. public function showTownAction(Request $request, $townId)
  20. {
  21. $town = null;
  22. try {
  23. $town = $this->handle(new GetTownByIdCommand($townId));
  24. if ($town == null) {
  25. return new RedirectResponse($this->router()->generate('web_init', array(), true));
  26. }
  27. return new RedirectResponse($this->router()->generate('web_public_town_show_by_slug', ['townSlug' => $town->slug()]));
  28. } catch (\Exception $e) {
  29. $errorMessage = '<br/>' . $this->translator()->trans($e->getMessage());
  30. $this->setFlash('error', $this->translator()->trans('admin.town.show.exception') . $errorMessage);
  31. return new RedirectResponse($this->router()->generate('web_init', array(), true));
  32. }
  33. }
  34. /**
  35. * @Route("/show/name/{townSlug}", name="web_public_town_show_by_slug", defaults={"_format" = "html"})
  36. */
  37. public function showTownBySlugAction(Request $request, $townSlug)
  38. {
  39. $town = null;
  40. $distributionNetworks = null;
  41. $geometryPolygonArray = null;
  42. $registerOwnershipRequestForm = null;
  43. $enableRequestOwnership = true;
  44. try {
  45. $town = $this->handle(new GetTownBySlugCommand($townSlug));
  46. if ($town == null) {
  47. return new RedirectResponse($this->router()->generate('web_init', array(), true));
  48. }
  49. if ($town->geometryPolygon() != null) {
  50. $geometryPolygonArray = json_encode($town->geometryPolygon()->toArray());
  51. }
  52. $distributionNetworks = $town->distributionNetworks();
  53. $registerOwnershipRequestForm = $this->getFormFactory()->create(
  54. AppRegisterTownOwnershipRequestType::class,
  55. AppRegisterTownOwnershipRequestCommand::convertToDTO(),
  56. array(
  57. 'csrf_protection' => true
  58. )
  59. );
  60. if ($request->isMethod('POST')) {
  61. $registerOwnershipRequestForm->handleRequest($request);
  62. if ($registerOwnershipRequestForm->isSubmitted() && $registerOwnershipRequestForm->isValid()) {
  63. $this->handle(AppRegisterTownOwnershipRequestCommand::fromDTO($registerOwnershipRequestForm->getData()));
  64. $this->setFlash('success', $this->translator()->trans('admin.ownership_request.register.success'));
  65. $enableRequestOwnership = false;
  66. } else {
  67. $this->setFlash('error', $this->translator()->trans('admin.country.edit.invalid_form'));
  68. }
  69. }
  70. } catch (\Exception $e) {
  71. $this->setFlash('error', $this->translator()->trans($e->getMessage()));
  72. }
  73. return $this->render('Zones/public_town_show.html.twig', array(
  74. 'town' => $town,
  75. 'distributionNetworks' => $distributionNetworks,
  76. 'form' => $registerOwnershipRequestForm->createView(),
  77. 'geometryPolygonArray' => $geometryPolygonArray,
  78. 'enableRequestOwnership' => $enableRequestOwnership
  79. ));
  80. }
  81. }