src/Controller/CareerController.php line 489

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Services\ResourcesServices;
  4. use App\Website\LinkGenerator\ArticleLinkGenerator;
  5. use Pimcore\Model\DataObject;
  6. use Pimcore\Model\Document;
  7. use Knp\Component\Pager\PaginatorInterface;
  8. use Symfony\Component\HttpFoundation\JsonResponse;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use function Matrix\trace;
  12. class CareerController extends BaseController
  13. {
  14.     public function indexAction(Request $request){
  15.         return $this->redirect('resources/overview');
  16.     }
  17.     
  18.     /**
  19.      * @Route ("/api/business")
  20.      * @param Request $request
  21.      * @return JsonResponse|\Symfony\Component\HttpFoundation\Response
  22.      */
  23.     public function businessGuidesAction(Request $request)
  24.     {
  25.         $dataType $request->request->get('dataType');
  26.         $num $request->request->get('num');
  27.         $businessType 'Business Guides';
  28.         $list = new DataObject\Business\Listing();
  29.         $list->setOrderKey('releaseDate');
  30.         $list->setOrder('DESC');
  31.         $ob $list->getClass();
  32.         $guidesType $ob->getFieldDefinition("listType")->getOptions();
  33.         $data['latest'] = $list->filterByLatest(true)->load();
  34.         
  35.         $data['watchCount'] = $list->filterByLatest(false)->filterByListType('Watch List')->getTotalCount();
  36.         $data['readCount'] = $list->filterByLatest(false)->filterByListType('Read List')->getTotalCount();
  37.         if ($dataType == 'watchList'){
  38.             $list->filterByLatest(false)->filterByListType('Watch List');
  39.             $list->setOffset($num);
  40.             $list->setLimit(6);
  41.             $watch   $list->load();
  42.             $result = [];
  43.             foreach ($watch as $value){
  44.                 $result[] = [
  45.                     'type' => 'watchList',
  46.                     'title' => $value->getTitle(),
  47.                     'date'  => $value->getReleaseDate(),
  48.                     'id'    => $value->getId(),
  49.                     'fullPath' => $value->getFullPath(),
  50.                     'videoTime' => $value->getVideoTime(),
  51.                     'coverImage' => $value->getCoverImage() ?$value->getCoverImage()
  52.                         ->getThumbnail('BusinessGuidesMore')
  53.                         ->getPath() : ''
  54.                 ];
  55.             }
  56.             return new JsonResponse($result);
  57.         }elseif ($dataType == 'readList'){
  58.             $list->filterByLatest(false)->filterByListType('Read List');
  59.             $list->setOffset($num);
  60.             $list->setLimit(6);
  61.             $read   $list->load();
  62.             $result = [];
  63.             foreach ($read as $value){
  64.                 $result[] = [
  65.                     'type' => 'readList',
  66.                     'title' => $value->getTitle(),
  67.                     'date'  => $value->getReleaseDate(),
  68.                     'id'    => $value->getId(),
  69.                     'videoTime' => $value->getVideoTime(),
  70.                     'fullPath' => $value->getFullPath(),
  71.                     'coverImage' => $value->getCoverImage() ?$value->getCoverImage()
  72.                         ->getThumbnail('BusinessGuidesMore')
  73.                         ->getPath() : ''
  74.                 ];
  75.             }
  76.             return new JsonResponse($result);
  77.         }
  78.         /*dump($list->filterByLatest(false)->filterByListType('Watch List')->getTotalCount());
  79.         dump($list->filterByLatest(false)->filterByListType('Read List')->getTotalCount());
  80.         exit();*/
  81.         $guidesTypeData = [];
  82.         foreach ($guidesType as $k => $v){
  83.             $guidesTypeData[$v['key']] = $list->filterByListType($v['value'])->getTotalCount();
  84.         }
  85.         // return $this->render('resources/business-guides/index.html.twig',[
  86.         //     'list' => $data
  87.         // ]);
  88.         return $this->render('resources/business-guides/index-20230718.html.twig',[
  89.             'list' => $data,
  90.             'template_layout_name' => 'layouts/layout-20230718.html.twig'
  91.         ]);
  92.     }
  93.     /**
  94.      * @Route("/resources/business-guides/{articleTile}{id}" ,name="guides-detail", defaults={"path"=""},requirements={"id"="_\d+"})
  95.      * @param Request $request
  96.      * @param $id
  97.      * @return \Symfony\Component\HttpFoundation\Response
  98.      * @throws \Exception
  99.      */
  100.     public function businessDetailAction(Request $request,$id)
  101.     {
  102. $id trim($id,'_');
  103.         $list = [];
  104.         $obj DataObject\Business::getById($id);
  105.         if ($obj){
  106.             $list['title'] = $obj->getTitle();
  107.             $list['releaseDate'] = $obj->getReleaseDate();
  108.             $list['author'] = $obj->getAuthor();
  109.             $list['authorIcon'] = $obj->getAuthorIcon();
  110.             $list['coverImage'] = $obj->getCoverImage();
  111.             $list['content'] = $obj->getContent();
  112.             $list['videoTime'] = $obj->getVideoTime();
  113.             $list['also'] = $obj->getAlsoList();
  114.             $list['file'] = $obj->getFile();
  115.             $list['video'] = $obj->getDetailVideo();
  116.             $list['checkList'] = $obj->getCheckIndustry();
  117.             $list['fullGuide'] = $obj->getFullGuide();
  118.             $list['listType'] = $obj->getListType();
  119.             $list['resourceType'] = $obj->getResourceType();
  120.             $list['shares'] = $obj->getShares();
  121.             $list['moreContent'] = $obj->getMoreContent();
  122.         $list['interestedTitle'] = $obj->getInterestedTitle();
  123.         $list['industryTitle'] = $obj->getIndustryTitle();
  124.         $list['chineseGuide'] = $obj->getChineseGuide();
  125.             $list['guideTitle'] = $obj->getGuideTitle();
  126.         }
  127.         // return $this->render('resources/business-guides/detail.html.twig',[
  128.         //     'list' => $list,
  129.         //     'sharePage' => $request->getUri()
  130.         // ]);
  131.         return $this->render('resources/business-guides/detail-20230718.html.twig',[
  132.             'list' => $list,
  133.             'sharePage' => $request->getUri(),
  134.             'template_layout_name' => 'layouts/layout-20230718.html.twig'
  135.         ]);
  136.     }
  137.     /**
  138.      * @Route ("/api/case-studies")
  139.      * @param Request $request
  140.      * @return JsonResponse|\Symfony\Component\HttpFoundation\Response
  141.      */
  142.     public function caseStudiesAction(Request $request)
  143.     {
  144.         $dataType $request->request->get('dataType');
  145.         $num $request->request->get('num');
  146.         $resourceType 'Case Studies';
  147.         $list = new DataObject\CaseStudy\Listing();
  148.         $list->setOrderKey('releaseDate');
  149.         $list->setOrder('DESC');
  150.         /*$list->load();*/
  151.         $data['latest'] = $list->filterByLatest(true)->load();
  152.         if ($dataType == 'more'){
  153.             $list->setOffset($num);
  154.             $list->setLimit(6);
  155.             $studies   $list->filterByLatest(false)->load();
  156.             $result = [];
  157.             foreach ($studies as $value){
  158.                 $result[] = [
  159.                     'title' => $value->getTitle(),
  160.                     'date'  => $value->getReleaseDate(),
  161.                     'id'    => $value->getId(),
  162.                     'fullPath' => $value->getFullPath(),
  163.             'video' => $value->getDetailVideo() ? $value->getDetailVideo()->getData() : '' ,
  164.                     'videoTime' => $value->getVideoTime(),
  165.                     'coverImage' => $value->getCoverImage() ? $value->getCoverImage()
  166.                         ->getThumbnail('CaseStudiesMore')->getPath() : ''
  167.                 ];
  168.             }
  169.             return new JsonResponse($result);
  170.         }
  171.         // return $this->render('resources/case-studies/index.html.twig',[
  172.         //     'list'   => $data
  173.         // ]);
  174.         return $this->render('resources/case-studies/index-20230718.html.twig',[
  175.             'list'   => $data,
  176.             'template_layout_name' => 'layouts/layout-20230718.html.twig'
  177.         ]);
  178.     }
  179.     /**
  180.      * @Route("/resources/case-studies/{guidTile}{id}" ,name="guid-detail", defaults={"path"=""},requirements={"id"="_\d+"})
  181.      * @param Request $request
  182.      * @param $id
  183.      * @return \Symfony\Component\HttpFoundation\Response
  184.      * @throws \Exception
  185.      */
  186.     public function caseDetailAction(Request $request,$id)
  187.     {
  188.     $id trim($id,'_');
  189.         $caseDetail DataObject\CaseStudy::getById($id);
  190.         $list = [
  191.             'title' => $caseDetail->getTitle(),
  192.             'releaseDate' => $caseDetail->getReleaseDate(),
  193.             'author' => $caseDetail->getAuthor(),
  194.             'authorIcon' => $caseDetail->getAuthorIcon(),
  195.             'video' => $caseDetail->getDetailVideo(),
  196.             'videoTime' => $caseDetail->getVideoTime(),
  197.         'coverImage' => $caseDetail->getCoverImage(),
  198.             'content' => $caseDetail->getContent(),
  199.             'interestedList' => $caseDetail->getInterestedList(),
  200.             'shares' => $caseDetail->getShares(),
  201.             'bookChat' => $caseDetail->getBookChat(),
  202.             'tags' => $caseDetail->getTags(),
  203.         'interestedTitle' => $caseDetail->getInterestedTitle(),
  204.         ];
  205.         // return $this->render('resources/case-studies/detail.html.twig',[
  206.         //     'list' => $list,
  207.         //     'sharePage' => $request->getUri()
  208.         // ]);
  209.         return $this->render('resources/case-studies/detail.html.twig',[
  210.             'list' => $list,
  211.             'sharePage' => $request->getUri(),
  212.             'template_layout_name' => 'layouts/layout-20230718.html.twig'
  213.         ]);
  214.     }
  215.     public function usefulResourcesAction(Request $request)
  216.     {
  217.         // return $this->render('resources/useful-resources/index.html.twig');
  218.         return $this->render('resources/useful-resources/index-20230718.html.twig',[
  219.             'template_layout_name' => 'layouts/layout-20230718.html.twig'
  220.         ]);
  221.     }
  222.     /**
  223.      * @Route ("/api/articles")
  224.      * @param Request $request
  225.      * @return \Symfony\Component\HttpFoundation\Response
  226.      */
  227.     public function articlesAction(Request $request,PaginatorInterface $paginator)
  228.     {
  229.         $type $request->request->get('articleType');
  230.         $num  $request->request->get('num');
  231.         $articlesType 'Articles';
  232.         $list = new DataObject\Articles\Listing();
  233.         $list->setOrderKey('releaseDate');
  234.         $list->setOrder('DESC');
  235.         //$list->load();
  236.         if ($type){
  237.             if($type == 'All Topics'){
  238.                 $list->filterByLatest(false);
  239.             }else{
  240.                 $list->filterByArticleType($type);
  241.             }
  242.             $list->setOffset($num);
  243.             $articles $list->setLimit(6)->filterByLatest(false)->load();
  244.             $result = [];
  245.             foreach ($articles as $value){
  246.                 $result[] = [
  247.                     'title' => $value->getTitle(),
  248.                     'date'  => $value->getReleaseDate(),
  249.                     'id'    => $value->getId(),
  250.                     'fullPath' => $value->getFullPath(),
  251.                     'coverImage' => $value->getCoverImage() ?$value->getCoverImage()
  252.                         ->getThumbnail('ArticlesMore')
  253.                         ->getPath() : ''
  254.                 ];
  255.             }
  256.             return new JsonResponse($result);
  257.         }
  258.         $ob $list->getClass();
  259.         $articleType $ob->getFieldDefinition("articleType")->getOptions();
  260.         $data['latest'] = $list->filterByLatest(true)->load();
  261.         //$data['more']   = $list->filterByLatest(false)->load();
  262.         $data['uri'] = $request->getUri();
  263.         // return $this->render('resources/articles/index.html.twig',[
  264.         //     'list' => $data,
  265.         //     'articleType'  => $articleType
  266.         // ]);
  267.         return $this->render('resources/articles/index-20230718.html.twig',[
  268.             'list' => $data,
  269.             'articleType'  => $articleType,
  270.             'template_layout_name' => 'layouts/layout-20230718.html.twig'
  271.         ]);
  272.     }
  273.     /**
  274.      *
  275.      * @Route("/resources/articles/{articleTile}{id}" ,name="article-detail", defaults={"path"=""},requirements={"id"="_\d+"})
  276.      * @param Request $request
  277.      * @return \Symfony\Component\HttpFoundation\Response
  278.      */
  279.     public function articleDetailAction(Request $request,$id)
  280.     {
  281.     $id trim($id,'_');
  282.         $articles DataObject\Articles::getById($id);
  283.         $list = [
  284.             'title' => $articles->getTitle(),
  285.             'releaseDate' => $articles->getReleaseDate(),
  286.             'author' => $articles->getAuthor(),
  287.             'authorIcon' => $articles->getAuthorIcon(),
  288.             'coverImage' => $articles->getCoverImage(),
  289.             'content' => $articles->getContent(),
  290.             'relatedArticles' => $articles->getRelatedArticles(),
  291.             'shares' => $articles->getShares(),
  292.             'bookChat' => $articles->getBookChat(),
  293.             'tags' => $articles->getTags(),
  294.         'interestedTitle' => $articles->getInterestedTitle(),
  295.         ];
  296.         /*$list['title'] = $obj->getTitle();
  297.         $list['releaseDate'] = $obj->getReleaseDate();
  298.         $list['author'] = $obj->getAuthor();
  299.         $list['authorIcon'] = $obj->getAuthorIcon();
  300.         $list['coverImage'] = $obj->getCoverImage();
  301.         $list['content'] = $obj->getContent();
  302.         $list['videoTime'] = $obj->getVideoTime();
  303.         $list['also'] = $obj->getAlsoList();
  304.         $list['file'] = $obj->getFile();
  305.         $list['video'] = $obj->getDetailVideo();
  306.         $list['checkList'] = $obj->getCheckIndustry();
  307.         $list['fullGuide'] = $obj->getFullGuide();
  308.         $list['listType'] = $obj->getListType();
  309.         $list['resourceType'] = $obj->getResourceType();
  310.         $list['shares'] = $obj->getShares();*/
  311.         // return $this->render('resources/articles/detail.html.twig',[
  312.         //     'list' => $list,
  313.         //     'sharePage' => $request->getUri()
  314.         // ]);
  315.         return $this->render('resources/articles/detail-20230718.html.twig',[
  316.             'list' => $list,
  317.             'sharePage' => $request->getUri(),
  318.             'template_layout_name' => 'layouts/layout-20230718.html.twig'
  319.         ]);
  320.     }
  321.     public function faqsAction(Request $request)
  322.     {
  323.         $list = new DataObject\Faqs\Listing();
  324.         $ob $list->getClass();
  325.         $faqType $ob->getFieldDefinition("questionType")->getOptions();
  326.         $list->load();
  327.         // return $this->render('resources/faqs/index.html.twig',[
  328.         //     'list' => $list,
  329.         //     'faqType' => $faqType
  330.         // ]);
  331.         return $this->render('resources/faqs/index-20230718.html.twig',[
  332.             'list' => $list,
  333.             'faqType' => $faqType,
  334.             'template_layout_name' => 'layouts/layout-20230718.html.twig'
  335.         ]);
  336.     }
  337.     /**
  338.      * @Route ("/api/patents")
  339.      * @param Request $request
  340.      * @return \Symfony\Component\HttpFoundation\Response
  341.      */
  342.     public function patentAnalyticReportsAction(Request $request)
  343.     {
  344.         $resourceType 'Patent Analytic Reports';
  345.         $dataType $request->request->get('dataType');
  346.         $num $request->request->get('num');
  347.         $list = new DataObject\PatentAnalytic\Listing();
  348.         $list->setOrderKey('releaseDate');
  349.         $list->setOrder('DESC');
  350.         $data['latest'] = $list->filterByLatest(true)->load();
  351.         if ($dataType == 'more'){
  352.             $list->setOffset($num);
  353.             $list->setLimit(6);
  354.             $patents $list->filterByLatest(false)->load();
  355.             $result = [];
  356.             foreach ($patents as $value){
  357.                 $result[] = [
  358.                     'title' => $value->getTitle(),
  359.                     'date'  => $value->getReleaseDate(),
  360.                     'id'    => $value->getId(),
  361.                     'fullPath' => $value->getFullPath(),
  362.         
  363.                     'coverImage' => $value->getCoverImage() ? $value->getCoverImage()
  364.                         ->getThumbnail('coverImg')
  365.                         ->getPath() : ''
  366.                 ];
  367.             }
  368.             return new JsonResponse($result);
  369.         }
  370.         // return $this->render('resources/patentAnalyticReports/index.html.twig',[
  371.         //     'list'   => $data
  372.         // ]);
  373.         return $this->render('resources/patentAnalyticReports/index-20230718.html.twig',[
  374.             'list'   => $data,
  375.             'template_layout_name' => 'layouts/layout-20230718.html.twig'
  376.         ]);
  377.     }
  378.     /**
  379.      * @Route ("/resources/patent-analytics-report/{articleTile}{id}",requirements={"id"="_\d+"})
  380.      * @param Request $request
  381.      * @return \Symfony\Component\HttpFoundation\Response
  382.      */
  383.     public function patentDetailAction(Request $request,$id)
  384.     {
  385.     $id trim($id,'_');
  386.         $patent DataObject\PatentAnalytic::getById($id);
  387.         $list = [
  388.             'title' => $patent->getTitle(),
  389.             'releaseDate' => $patent->getReleaseDate(),
  390.             'author' => $patent->getAuthor(),
  391.             'authorIcon' => $patent->getAuthorIcon(),
  392.             'coverImage' => $patent->getCoverImage(),
  393.             'content' => $patent->getContent(),
  394.             'interestedList' => $patent->getInterestedList(),
  395.             'shares' => $patent->getShares(),
  396.             'tags' => $patent->getTags(),
  397.             'file' => $patent->getFile(),
  398.         'interestedTitle' => $patent->getInterestedTitle(),
  399.         ];
  400.         // return $this->render('resources/patentAnalyticReports/detail.html.twig',[
  401.         //     'list' => $list,
  402.         //     'sharePage' => $request->getUri()
  403.         // ]);
  404.         return $this->render('resources/patentAnalyticReports/detail-20230718.html.twig',[
  405.             'list' => $list,
  406.             'sharePage' => $request->getUri(),
  407.             'template_layout_name' => 'layouts/layout-20230718.html.twig'
  408.         ]);
  409.     }
  410.     /**
  411.      * @Route ("api/webinar")
  412.      * @param Request $request
  413.      * @return JsonResponse|\Symfony\Component\HttpFoundation\Response
  414.      */
  415.     public function webinarRecordingsAction(Request $request)
  416.     {
  417.         $articlesType 'Webinar Recordings';
  418.         $dataType $request->request->get('dataType');
  419.         $num $request->request->get('num');
  420.         $list = new DataObject\WebinarRecordings\Listing();
  421.         $list->setOrderKey('releaseDate');
  422.         $list->setOrder('DESC');
  423.         $data['latest'] = $list->filterByLatest(true)->load();
  424.         if ($dataType == 'more'){
  425.             $list->setOffset($num);
  426.             $list->setLimit(6);
  427.             $webinar $list->filterByLatest(false)->load();
  428.             $result = [];
  429.             foreach ($webinar as $value){
  430.                 $result[] = [
  431.                     'title' => $value->getTitle(),
  432.                     'date'  => $value->getReleaseDate(),
  433.                     'id'    => $value->getId(),
  434.                     'videoTime' => $value->getVideoTime(),
  435.             'video' => $value->getDetailVideo() ? $value->getDetailVideo()->getData() : '',
  436.                     'fullPath' => $value->getFullPath(),
  437.                     'coverImage' => $value->getCoverImage() ? $value->getCoverImage()
  438.                         ->getThumbnail('WebinarRecordingsMore')->getPath() : ''
  439.                 ];
  440.             }
  441.             return new JsonResponse($result);
  442.         }
  443.         // return $this->render('resources/webinar-recordings/index.html.twig',[
  444.         //     'list' => $data,
  445.         // ]);
  446.         return $this->render('resources/webinar-recordings/index-20230718.html.twig',[
  447.             'list' => $data,
  448.             'template_layout_name' => 'layouts/layout-20230718.html.twig'
  449.         ]);
  450.     }
  451.     /**
  452.      * @Route("/resources/webinar-recordings/{webinarTile}{id}" ,name="patent-detail", defaults={"path"=""},requirements={"id"="_\d+"})
  453.      * @param Request $request
  454.      * @param $id
  455.      * @return \Symfony\Component\HttpFoundation\Response
  456.      * @throws \Exception
  457.      */
  458.     public function webinarDetailAction(Request $request,$id)
  459.     {
  460.     $id trim($id,'_');
  461.         $webinar DataObject\WebinarRecordings::getById($id);
  462.         $list = [
  463.             'title' => $webinar->getTitle(),
  464.             'releaseDate' => $webinar->getReleaseDate(),
  465.             'author' => $webinar->getAuthor(),
  466.             'authorIcon' => $webinar->getAuthorIcon(),
  467.             'content' => $webinar->getContent(),
  468.         'coverImage' => $webinar->getCoverImage(),
  469.             'video'   => $webinar->getDetailVideo(),
  470.             'videoTime' => $webinar->getVideoTime(),
  471.             'interestedList' => $webinar->getInterestedList(),
  472.             'full'  => $webinar->getFullGuide(),
  473.             'shares' => $webinar->getShares(),
  474.             'tags' => $webinar->getTags(),
  475.             'file' => $webinar->getFile(),
  476.         'interestedTitle' => $webinar->getInterestedTitle(),
  477.         ];
  478.         // return $this->render('resources/webinar-recordings/detail.html.twig',[
  479.         //     'list' => $list,
  480.         //     'sharePage' => $request->getUri()
  481.         // ]);
  482.         return $this->render('resources/webinar-recordings/detail-20230718.html.twig',[
  483.             'list' => $list,
  484.             'sharePage' => $request->getUri(),
  485.             'template_layout_name' => 'layouts/layout-20230718.html.twig'
  486.         ]);
  487.     }
  488.     public function smesAction(Request $request)
  489.     {
  490.         /*$resourceType = 'Search Made Easy for SMEs';
  491.         $list = (new ResourcesServices())->getResources($resourceType);*/
  492.         // return $this->render('resources/search-made-easy-for-smes/index.html.twig');
  493.         return $this->render('resources/search-made-easy-for-smes/index-20230718.html.twig',[
  494.             'template_layout_name' => 'layouts/layout-20230718.html.twig'
  495.         ]);
  496.     }
  497. }