src/Network/Controller/NetworkHorseController.php line 48

Open in your IDE?
  1. <?php
  2. namespace App\Network\Controller;
  3. use App\Auction\Manager\AuctionManager;
  4. use App\Network\Form\Type\EditHorseDataType;
  5. use App\Network\Service\NetworkAchievementService;
  6. use App\Network\Service\NetworkHorseService;
  7. use App\Profile\Service\LoadMoreService;
  8. use Carbon\Carbon;
  9. use Pimcore\Controller\FrontendController;
  10. use Pimcore\Model\DataObject\Horse;
  11. use Pimcore\Model\DataObject\News;
  12. use Pimcore\Model\DataObject\TimelinePost;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. #[Route([
  17.   'name' => 'network_horse_',
  18.   'localizedPaths' => [
  19.     'en' => '/{_locale}/network/horse',
  20.     'de' => '/{_locale}/netzwerk/pferd',
  21.     'fr' => '/{_locale}/reseau/cheval',
  22.   ],
  23. ])]
  24. class NetworkHorseController extends FrontendController
  25. {
  26.   #[Route('/{id}/hovercard'name'hovercard')]
  27.   public function hovercard(Request $request$id)
  28.   {
  29.     $horse Horse::getById($id);
  30.     if (!$horse->isPublished()) {
  31.       return new Response('404'404);
  32.     }
  33.     if (!$horse) {
  34.       throw $this->createNotFoundException("Horse with id {$id} not found");
  35.     }
  36.     return $this->renderTemplate('horse/hovercard.html.twig', [
  37.         'horse' => $horse,
  38.       ]);
  39.   }
  40.   #[Route('/{id}/{slug}'name'detail')]
  41.   public function detail(AuctionManager $auctionManagerNetworkAchievementService $achievementServiceNetworkHorseService $networkHorseService$idRequest $request$slug ''): Response
  42.   {
  43.     $horse Horse::getById($id);
  44.     if (!$horse->isPublished()) {
  45.       return $this->redirectToRoute('document_1');
  46.     }
  47.     // Get Timeline Posts for Horse
  48.     $posts TimelinePost::getList([
  49.       'objectbricks' => ['RaceTimelinePost''HorseTimelinePost''HorseAtAuctionTimelinePost'],
  50.       'condition' => "RaceTimelinePost.horse__id = {$id} OR HorseTimelinePost.horse__id = {$id} OR HorseAtAuctionTimelinePost.horse__id = {$id}",
  51.     ]);
  52.     $achievements $networkHorseService->getAchievements($horse);
  53.     $achievementCategories $networkHorseService->getNeededAchievementCategories($achievements);
  54.     $auctionHistory $networkHorseService->getAuctionhistory($horse);
  55.     return $this->renderForm('network/horse/detail.html.twig', [
  56.       'horse' => $horse,
  57.       'hasPosts' => $posts->getTotalCount(),
  58.       'auctionHistory' => $auctionHistory,
  59.       'now' => new Carbon(),
  60.       'achievements' => $achievements,
  61.       'achievementCategories' => $achievementCategories,
  62.     ]);
  63.   }
  64.   #[Route('/horse/{id}/news'name'news_frame')]
  65.   public function horseNewsFrame(Request $requestLoadMoreService $loadMoreService$id)
  66.   {
  67.     $horse Horse::getById($id);
  68.     $news News::getList()
  69.     ->setCondition("horses like '%,".$id.",%'")
  70.     ->setOrderKey('date')
  71.     ->setOrder('desc');
  72.     $context $loadMoreService->generate(
  73.       $request,
  74.       'horse-news-list',
  75.       $news,
  76.       'network/horse/components/news_list_frame.html.twig',
  77.       [
  78.         'horse' => $horse,
  79.         'news' => $news,
  80.       ], 055
  81.     );
  82.     $request->setRequestFormat('text/html');
  83.     return $this->renderForm(...$context);
  84.   }
  85.   #[Route('/horse/{id}/data'name'data')]
  86.   public function horseDataWidget($id) {
  87.     $horse Horse::getById($id);
  88.     return $this->render('network/horse/widgets/horse_widget_data_content.html.twig', [
  89.       'horse' => $horse
  90.     ]);
  91.   }
  92.   #[Route('/horse/{id}/data/edit'name'data_edit')]
  93.   public function horseDataWidgetEdit(Request $request$id) {
  94.     if (!($this->isGranted('ROLE_CLUB_HORSE') || $this->isGranted('ROLE_CLUB_JOCKEY'))) {
  95.       $e $this->createAccessDeniedException('not allowed');
  96.       $e->setAttributes(['ROLE_CLUB_HORSE''ROLE_CLUB_JOCKEY']);
  97.       throw $e;
  98.     }
  99.     
  100.     $horse Horse::getById($id);
  101.     $form $this->createForm(EditHorseDataType::class, $horse);
  102.     $form->handleRequest($request);
  103.     if($form->isSubmitted() && $form->isValid()) {
  104.       $horse $form->getData()->save();
  105.       return $this->render('network/horse/widgets/horse_widget_data_content.html.twig', [
  106.         'horse' => $horse
  107.       ], new Response(''200, [
  108.         'content-type' => 'text/html; charset=UTF-8'
  109.       ]));
  110.     }
  111.     return $this->renderForm('network/horse/widgets/horse_widget_data_edit.html.twig', [
  112.       'horse' => $horse,
  113.       'form' => $form
  114.     ]);
  115.   }
  116. }