app/Customize/Controller/ReviewController.php line 60

Open in your IDE?
  1. <?php
  2. namespace Customize\Controller;
  3. use Customize\Controller\LM\LmAbstractController;
  4. use Customize\Converter\DynamicConverter;
  5. use Lm\Service\Db\DbManager;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  10. use Customize\Service\LmHelper;
  11. use Customize\Service\CommonService;
  12. use Customize\Service\ReviewService;
  13. use Customize\Service\GoodsService;
  14. class ReviewController extends LmAbstractController
  15. {
  16.     const ITEMS_PER_PAGE 200;
  17.     const MAX_PAGING_LINKS 10;
  18.     const ITEM_PAGE_REVIEW_LIMIT 50;
  19.     public static $CAMPAIGN_CATEGORY_LIST = [
  20.         'kucho-fuku',
  21.     ];
  22.     public $ReviewService;
  23.     /**
  24.      * @var DynamicConverter
  25.      */
  26.     private $DynamicConverter;
  27.     public function __construct(
  28.         CommonService $commonService
  29.         ,LmHelper $LmHelper
  30.         ,ReviewService $ReviewService
  31.         ,GoodsService $GoodsService
  32.         ,DynamicConverter $dynamicConverter
  33.     ){
  34.         parent::__construct(
  35.             $commonService
  36.             ,$LmHelper);
  37.         $this->GoodsService $GoodsService;
  38.         $this->ReviewService $ReviewService;
  39.         $this->DynamicConverter $dynamicConverter;
  40.     }
  41.     /**
  42.      * お客様の声一覧画面
  43.      *
  44.      * @Route("/review/", name="review/index", methods={"GET"})
  45.      * @Template("Review/index.twig")
  46.      */
  47.     public function index(Request $request)
  48.     {
  49.         $goods_id $request->query->get('goods_id');
  50.         $page $request->query->get('page'1);
  51.         $itemsPerPage self::ITEMS_PER_PAGE// TODO: 1ページあたりの表示件数はユーザーに選択させると尚可(cookieの活用も検討)
  52.         $dataList=[];
  53.         $pages='';
  54.         $pager='';
  55.         if ($goods_id) {
  56.             $goods $this->GoodsService->getGoodsById($goods_id);
  57.             if (empty($goods)) {
  58.                 throw new NotFoundHttpException();
  59.             }
  60.             $dataList $this->ReviewService->getReview($goods_id$count$itemsPerPage,$itemsPerPage * ($page 1));
  61.             $cr_points array_map(function ($v) {
  62.                 return $v["cr_points"];
  63.             }, $dataList);
  64.             $arg 0;
  65.             $numberOfCustumerReviews count($cr_points);
  66.             if ($numberOfCustumerReviews) {
  67.                 $arg array_sum($cr_points) / $numberOfCustumerReviews;
  68.             }
  69.             if (!empty($dataList)) {
  70.                 $pager LmHelper::paging($page$count$itemsPerPageself::MAX_PAGING_LINKS$request->query->all());
  71. //                $page_offset = $pager['page_offset'];
  72. //                $dataList = array_slice($dataList, $page_offset, $itemsPerPage);
  73.                 // 型番を検索
  74.                  $rskata $this->GoodsService->getGoodsKataban($goods_id);
  75.                 foreach ($rskata as $_rowkata) {
  76.                     $katabanList[] = $_rowkata['gp_kataban'];
  77.                 }
  78.                 $kataban = array('kataban' => implode(','$katabanList), 'name' => $goods['goods_name'], 'goods_id' => $goods['goods_id']);
  79.                 $breadCrumbCategoryName2 $goods['goods_breadcrumb_category_name2'];
  80.                 // パンくずセット
  81.                 // TODO: 相関エンティティに移植
  82.                 $breadCrumb $this->DynamicConverter->getBreadCrumbsByGoodsId($goods_id);
  83.                 $breadCrumb[] = array(
  84.                     'href' => null,
  85.                     'label' => "{$goods['goods_name']}のレビュー(評価)",
  86.                 );
  87.                 $mainUrl $this->lmHelper->getGoodsImageUrl($dataList[0]['cr_goods_id'], "main.jpg");
  88.             }
  89.         }
  90.         // TODO:
  91.         return [
  92.             'goods_id' => $goods_id,
  93.             'average' => isset($arg) ? (floor($arg 10)) / 10 0,
  94.             'star' => isset($arg) ? ((int)($arg 2) / 2) * 10 0,
  95.             //'displayCategoryMain' => $displayCategory['canonicalPankuzuMainCategory'],
  96.             'BreadCrumbs' => $breadCrumb ?? [],
  97.             'displayCategory' => isset($viewStrReview[0]) ? $viewStrReview[0] : null,
  98.             'review_h1' => isset($goods) ? "レビュー(評価) | " $goods['goods_name'] : '',
  99.             'back_path' => $this->lmHelper->getConfig('BACK_URL'), // TODO: Don't do that.
  100.             'review' => $dataList,
  101.             'total_count' => isset($count) ? $count 0,
  102.             'goods' => isset($goods) ? $goods : [],
  103.             'kataban' => isset($kataban) ? $kataban : [],
  104.             'mainUrl' => isset($mainUrl) ? $mainUrl '',
  105.             'page' => $page,
  106.             'pager' => isset($pages) ? $pager : [],
  107.             'MetaTags' =>['review' => $goods['goods_name'] ?? null], #20220804 kawai
  108.             'breadCrumbCategoryName2' => $breadCrumbCategoryName2 ?? null,
  109.         ];
  110.     }
  111. }