src/UI/WebBundle/Controller/Whater/PublicDistributionNetworkController.php line 33

Open in your IDE?
  1. <?php
  2. namespace Whater\UI\WebBundle\Controller\Whater;
  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\Product\CommandRequest\GetRecommendedProductsForDistributionNetworkCommand;
  8. use Whater\Application\UseCase\User\CommandRequest\AppRegisterDistributionNetworkOwnershipRequestCommand;
  9. use Whater\Application\UseCase\Whater\CommandRequest\GetDistributionNetworkForShowCommand;
  10. use Whater\Application\UseCase\Whater\CommandRequest\GetAnalyticalByDistributionNetworkAndResponsableCommand;
  11. use Whater\Application\UseCase\Whater\CommandRequest\GetDistributionNetworkForShowBySlugCommand;
  12. use Whater\Infrastructure\UserBundle\Form\Type\AppRegisterDistributionNetworkOwnershipRequestType;
  13. /**
  14. * @Route("public/distribution-network")
  15. */
  16. class PublicDistributionNetworkController extends AbstractBusController
  17. {
  18. /**
  19. * @Route("/show/{distributionNetworkId}", name="web_public_distribution_network_show_by_id_2", defaults={"_format" = "html"})
  20. */
  21. public function showDistributionNetworkIdAction(Request $request, $distributionNetworkId)
  22. {
  23. return new RedirectResponse($this->router()->generate('web_public_distribution_network_show_by_id', ['distributionNetworkId' => $distributionNetworkId]));
  24. }
  25. /**
  26. * @Route("/show/id/{distributionNetworkId}", name="web_public_distribution_network_show_by_id", defaults={"_format" = "html"})
  27. */
  28. public function showDistributionNetworkByIdAction(Request $request, $distributionNetworkId)
  29. {
  30. $town = null;
  31. try {
  32. $distributionNetwork = $this->handle(new GetDistributionNetworkForShowCommand($distributionNetworkId));
  33. if ($distributionNetwork == null) {
  34. return new RedirectResponse($this->router()->generate('web_init', array(), true));
  35. }
  36. return new RedirectResponse($this->router()->generate('web_public_distribution_network_show_by_slug', ['distributionNetworkSlug' => $distributionNetwork->slug()]));
  37. } catch (\Exception $e) {
  38. $this->setFlash('error', $this->translator()->trans($e->getMessage()));
  39. return new RedirectResponse($this->router()->generate('web_init', array(), true));
  40. }
  41. }
  42. /**
  43. * @Route("/show/slug/{distributionNetworkSlug}", name="web_public_distribution_network_show_by_slug", defaults={"_format" = "html"})
  44. */
  45. public function showDistributionNetworkBySlugAction(Request $request, $distributionNetworkSlug)
  46. {
  47. $distributionNetwork = null;
  48. $distributionNetworkWhaterAnalyticArray = null;
  49. $geometryPolygonArray = null;
  50. $registerOwnershipRequestForm = null;
  51. $enableRequestOwnership = true;
  52. $distributionNetworkArticles = [];
  53. $recommendedProducts = [];
  54. try {
  55. $distributionNetwork = $this->handle(new GetDistributionNetworkForShowBySlugCommand($distributionNetworkSlug));
  56. if ($distributionNetwork == null) {
  57. return new RedirectResponse($this->router()->generate('web_init', array(), true));
  58. }
  59. $distributionNetworkWhaterAnalyticArray = $this->handle(new GetAnalyticalByDistributionNetworkAndResponsableCommand($distributionNetwork));
  60. $geometryPolygonArray = json_encode($distributionNetwork->geometryPolygon()->toArray());
  61. $registerOwnershipRequestForm = $this->getFormFactory()->create(
  62. AppRegisterDistributionNetworkOwnershipRequestType::class,
  63. AppRegisterDistributionNetworkOwnershipRequestCommand::convertToDTO(),
  64. array(
  65. 'csrf_protection' => true
  66. )
  67. );
  68. if ($request->isMethod('POST')) {
  69. $registerOwnershipRequestForm->handleRequest($request);
  70. if ($registerOwnershipRequestForm->isSubmitted() && $registerOwnershipRequestForm->isValid()) {
  71. $this->handle(AppRegisterDistributionNetworkOwnershipRequestCommand::fromDTO($registerOwnershipRequestForm->getData()));
  72. $this->setFlash('success', $this->translator()->trans('admin.ownership_request.register.success'));
  73. $enableRequestOwnership = false;
  74. } else {
  75. $this->setFlash('error', $this->translator()->trans('admin.country.edit.invalid_form'));
  76. }
  77. }
  78. $distributionNetworkArticles = $distributionNetwork->articles()->toArray();
  79. usort($distributionNetworkArticles, function ($a, $b) {
  80. return $a->publishAt() < $b->publishAt();
  81. });
  82. $recommendedProducts = $this->handle(new GetRecommendedProductsForDistributionNetworkCommand($distributionNetwork));
  83. } catch (\Exception $e) {
  84. $this->setFlash('error', $this->translator()->trans($e->getMessage()));
  85. }
  86. return $this->render('Whater/public_distribution_network_show.html.twig', array(
  87. 'distributionNetwork' => $distributionNetwork,
  88. 'geometryPolygonArray' => $geometryPolygonArray,
  89. 'form' => $registerOwnershipRequestForm->createView(),
  90. 'analytics' => $distributionNetworkWhaterAnalyticArray,
  91. 'enableRequestOwnership' => $enableRequestOwnership,
  92. 'distributionNetworkArticles' => $distributionNetworkArticles,
  93. 'recommendedProducts' => $recommendedProducts,
  94. ));
  95. }
  96. }