app/Customize/Controller/CaseController.php line 51

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE, Addition by INSPIRATION
  4.  *
  5.  */
  6. namespace Customize\Controller;
  7. use Customize\Repository\CategoriesRepository;
  8. use Customize\Repository\VoicesRepository;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Eccube\Controller\AbstractController;
  13. use Knp\Component\Pager\PaginatorInterface;
  14. class CaseController extends AbstractController
  15. {
  16.     /**
  17.      * @var CategoriesRepository
  18.      */
  19.     protected $categoriesRepository;
  20.     /**
  21.      * @var VoicesRepository
  22.      */
  23.     protected $voicesRepository;
  24.     /**
  25.      * CaseController constructor.
  26.      *
  27.      * @param CategoriesRepository $categoriesRepository
  28.      * @param VoicesRepository $voicesRepository
  29.      */
  30.     public function __construct(
  31.         CategoriesRepository $categoriesRepository,
  32.         VoicesRepository $voicesRepository
  33.     )
  34.     {
  35.         $this->categoriesRepository $categoriesRepository;
  36.         $this->voicesRepository $voicesRepository;
  37.     }
  38.     /**
  39.      * 導入事例.
  40.      *
  41.      * @Route("/case", name="case", methods={"GET"})
  42.      * @Template("Case/index.twig")
  43.      */
  44.     public function index(Request $requestPaginatorInterface $paginator)
  45.     {
  46.         //絞り込み情報
  47.         // カテゴリー読み込み
  48.         $CategoryDatas $this->categoriesRepository->findBy(['del_flg' => 0'release_flg' => 1'program_name' => 'Voice'], ['rank' => 'asc']);
  49.         $CaseDatas $this->voicesRepository->findBy(['del_flg' => 0'release_flg' => 1], ['rank' => 'asc']);
  50.         $checkCategory = [];
  51.         foreach( $CaseDatas AS $CaseData ) {
  52.             if( in_array$CaseData['category'], $checkCategory ) ) {
  53.                 continue;
  54.             }
  55.             else {
  56.                 $checkCategory[] = $CaseData['category'];
  57.             }
  58.         }
  59.         //削除実行
  60.         $checkCategory array_diff$checkCategory, array( '0' ) );
  61.         //indexを詰める
  62.         $checkCategory array_values$checkCategory );
  63.         // カテゴリー取得
  64.         $searchCategory $request->query->get('category') ? $request->query->get('category') : '';
  65.         $searchCategoryData $searchCategory $this->categoriesRepository->find($searchCategory) : '';
  66.         $searchData = array(
  67.             'pageno' => $request->query->get('pageno')
  68.         );
  69.         // パラメータ取得(一覧)
  70.         $parameter_qb $this->entityManager->createQueryBuilder();
  71.         $parameter $parameter_qb->select('pr.num_list')
  72.                          ->from('Customize\Entity\Parameters''pr')
  73.                          ->where('pr.program_name = :program_name')
  74.                          ->setParameter('program_name''Voice')
  75.                          ->setMaxResults(1)
  76.                          ->getQuery()
  77.                          ->getSingleScalarResult()
  78.         ;
  79.         $parameter_data $parameter_qb->getQuery()->getOneOrNullResult();
  80.         $NumList $parameter_data['num_list'];
  81.         if( $searchCategory ) {
  82.             $qb $this->voicesRepository->createQueryBuilder('v')
  83.                 ->andWhere('v.del_flg = 0')
  84.                 ->andWhere('v.release_flg = 1')
  85.                 ->andWhere('v.category = :findCategory')
  86.                 ->setParameter(':findCategory'$searchCategory)
  87.                 ->orderBy('v.rank''DESC');
  88.         }
  89.         else {
  90.             $qb $this->voicesRepository->createQueryBuilder('v')
  91.                 ->andWhere('v.del_flg = 0')
  92.                 ->andWhere('v.release_flg = 1')
  93.                 ->orderBy('v.rank''DESC');
  94.         }
  95.         $query $qb->getQuery()
  96.             ->useResultCache(true$this->eccubeConfig['eccube_result_cache_lifetime_short']);
  97.         $pagination $paginator->paginate(
  98.             $query,
  99.             !empty($searchData['pageno']) ? $searchData['pageno'] : 1,
  100.             !empty($searchData['disp_number']) ? $searchData['disp_number']->getId() : $NumList
  101.         );
  102.         return [
  103.             'CategoryDatas' => $CategoryDatas,
  104.             'CheckCategory' => $checkCategory,
  105.             'SearchCategory' => $searchCategory,
  106.             'SearchCategoryData' => $searchCategoryData,
  107.             'pagination' => $pagination,
  108.         ];
  109.     }
  110.     /**
  111.      * 導入事例詳細画面.
  112.      *
  113.      * @Route("/case/detail/{id}", name="case_detail", methods={"GET"}, requirements={"id" = "\d+"})
  114.      * @Template("Case/detail.twig")
  115.      */
  116.     public function detail($id)
  117.     {
  118.         //絞り込み情報
  119.         // カテゴリー読み込み
  120.         $CategoryDatas $this->categoriesRepository->findBy(['del_flg' => 0'release_flg' => 1'program_name' => 'Voice'], ['rank' => 'asc']);
  121.         $CaseDatas $this->voicesRepository->findBy(['del_flg' => 0'release_flg' => 1], ['rank' => 'asc']);
  122.         $checkCategory = [];
  123.         foreach( $CaseDatas AS $CaseData ) {
  124.             if( in_array$CaseData['category'], $checkCategory ) ) {
  125.                 continue;
  126.             }
  127.             else {
  128.                 $checkCategory[] = $CaseData['category'];
  129.             }
  130.         }
  131.         //削除実行
  132.         $checkCategory array_diff$checkCategory, array( '0' ) );
  133.         //indexを詰める
  134.         $checkCategory array_values$checkCategory );
  135.         $CaseData $this->voicesRepository->findOneBy(['del_flg' => 0'release_flg' => 1'id' => $id]);
  136.         //非表示や削除済み導入事例は一覧へ
  137.         if( empty( $CaseData ) ) {
  138.             return $this->redirectToRoute('case');
  139.         }
  140.         // カテゴリー取得
  141.         $categoryData $this->categoriesRepository->find($CaseData['category']);
  142.         return [
  143.             'CategoryDatas' => $CategoryDatas,
  144.             'CheckCategory' => $checkCategory,
  145.             'CategoryData' => $categoryData,
  146.             'CaseData' => $CaseData,
  147.         ];
  148.     }
  149. }