src/Controller/ServiceController.php line 113

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Symfony\Contracts\Translation\TranslatorInterface;
  8. /**
  9. * @Route(requirements={"_locale": "en|de|sk"})
  10. */
  11. class ServiceController extends CommonController
  12. {
  13. /**
  14. * @Route(
  15. * "/our-services"
  16. * )
  17. * @Route(
  18. * "/{_locale}/our-services",
  19. * name="service_index"
  20. * )
  21. */
  22. public function index(Request $request, TranslatorInterface $translator): Response
  23. {
  24. return $this->render(
  25. 'service/index.html.twig',
  26. [
  27. 'meta_keywords' => 'software house,custom software,consulting,enterprise solutions'
  28. . ',web applications,mobile applications',
  29. 'meta_description' => 'We are a european software house. We offer custom software '
  30. . 'development, consulting and enterprise solutions.',
  31. 'lang' => $request->getLocale(),
  32. 'menu' => $this->getMenuItems($request),
  33. 'year' => date('Y'),
  34. 'eLang' => 'sk',
  35. 'failLang' => 'sk',
  36. 'sendLang' => 'sk',
  37. 'nameAlert' => 'sk',
  38. 'emailAlert' => 'sk',
  39. 'messageAlert' => 'sk',
  40. 'header' => [
  41. 'title' => $translator->trans('Our Services'),
  42. 'section' => $translator->trans('Portfolio'),
  43. ],
  44. 'services' => $this->config->getPortfolio(),
  45. 'jobsCount' => $this->config->getOpenJobPositionsCount(),
  46. ]
  47. );
  48. }
  49. /**
  50. * @Route(
  51. * "/{_locale}/services/{uri}",
  52. * name="service_portfolio",
  53. * requirements={"uri": "consulting|development|solutions"}
  54. * )
  55. */
  56. public function portfolio(Request $request, string $uri): Response
  57. {
  58. $info = [];
  59. $categories = $this->config->getPortfolio();
  60. foreach ($categories as $category) {
  61. if ($category['filename'] === $uri) {
  62. $info = $category;
  63. }
  64. }
  65. return $this->render(
  66. 'service/portfolio.html.twig',
  67. [
  68. 'meta_keywords' => 'software house,custom software,consulting,enterprise solutions'
  69. . ',web applications,mobile applications',
  70. 'meta_description' => 'We are a european software house. We offer custom software '
  71. . 'development, consulting and enterprise solutions.',
  72. 'lang' => $request->getLocale(),
  73. 'menu' => $this->getMenuItems($request),
  74. 'year' => date('Y'),
  75. 'eLang' => 'sk',
  76. 'failLang' => 'sk',
  77. 'sendLang' => 'sk',
  78. 'nameAlert' => 'sk',
  79. 'emailAlert' => 'sk',
  80. 'messageAlert' => 'sk',
  81. 'header' => [
  82. 'title' => $info['title'][$request->getLocale()],
  83. 'section' => 'Portfolio',
  84. ],
  85. 'portfolio' => $info,
  86. 'services' => $this->config->getPortfolio($uri),
  87. 'jobsCount' => $this->config->getOpenJobPositionsCount(),
  88. ]
  89. );
  90. }
  91. /**
  92. * @Route(
  93. * "/{_locale}/services/{type}/{uri}",
  94. * name="service_detail",
  95. * requirements={"type": "consulting|development|solutions"}
  96. * )
  97. */
  98. public function detail(Request $request, string $type, string $uri): Response
  99. {
  100. $service = $this->config->getPortfolioItem($type, $uri);
  101. return $this->render(
  102. 'service/detail.html.twig',
  103. [
  104. 'meta_keywords' => 'software house,custom software,consulting,enterprise solutions'
  105. . ',web applications,mobile applications',
  106. 'meta_description' =>
  107. isset($service['item']['desc'][$request->getLocale()]) ?
  108. $service['item']['desc'][$request->getLocale()]['first-block']['desc']
  109. : 'We are a european software house. We offer custom software '
  110. . 'development, consulting and enterprise solutions.',
  111. 'lang' => $request->getLocale(),
  112. 'menu' => $this->getMenuItems($request),
  113. 'year' => date('Y'),
  114. 'eLang' => 'sk',
  115. 'failLang' => 'sk',
  116. 'sendLang' => 'sk',
  117. 'nameAlert' => 'sk',
  118. 'emailAlert' => 'sk',
  119. 'messageAlert' => 'sk',
  120. 'header' => [
  121. 'title' => $service['item']['title'][$request->getLocale()] ?? 'N/A',
  122. 'section' => $service['item']['client']['title'] ?? 'N/A',
  123. ],
  124. 'service' => $service,
  125. 'serviceType' => $type,
  126. 'jobsCount' => $this->config->getOpenJobPositionsCount(),
  127. ]
  128. );
  129. }
  130. }