<?php
namespace Customize\Controller\Block;
use Customize\Repository\CustomProductRepository;
use Customize\Repository\CustomProductTagRepository;
use Customize\Repository\ProductPlus\ProductDataDetailRepository;
use Customize\Repository\ProductPlus\ProductDataRepository;
use Eccube\Controller\AbstractController;
use Eccube\Repository\ProductRepository;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Routing\Annotation\Route;
class OutletTopController extends AbstractController
{
/**
* @var ProductDataRepository
*/
protected $productDataRepository;
/**
* @var ProductDataDetailRepository
*/
protected $productDataDetailRepository;
/**
* @var CustomProductRepository
*/
protected $customProductRepository;
/**
* @var ProductRepository
*/
protected $productRepository;
private $outletTag = 3;
/**
* ProductController constructor.
*
* @param ProductRepository $productRepository
*/
public function __construct(
ProductDataRepository $productDataRepository,
CustomProductRepository $customProductRepository,
ProductDataDetailRepository $productDataDetailRepository,
ProductRepository $productRepository
) {
$this->productDataRepository = $productDataRepository;
$this->customProductRepository = $customProductRepository;
$this->productDataDetailRepository = $productDataDetailRepository;
$this->productRepository = $productRepository;
}
/**
* @Route("/block/outlet_top", name="block_outlet_top")
* @Template("Block/outlet_top.twig")
*/
public function index()
{
// アウトレット
$outletProductList = $this->productRepository->getTagProduct($this->outletTag);
$Member = $this->getUser();
// 会員がGroupに属しているか
if ($Member != null && $Member->getGroups()->toArray()) {
$groupId = $Member->getGroups()->toArray()[0]->getId();
} else {
$groupId = 0;
}
$PriorityFlagItemList = [];
$outletProducts = [];
$cnt = 0;
foreach ($outletProductList as $product)
{
if ($cnt < 5 ) {
// 商品にGroupが登録されているか
$groupIdList = [];
foreach ($product->getgroups()->toArray() as $i => $group) {
$groupIdList[$i] = $group->getId();
}
if (!empty($groupIdList)) {
if (in_array($groupId, $groupIdList)) {
$tmpData = $this->customProductRepository->getPriorityFlagProduct($product->getId());
if (is_object($tmpData)) {
$PriorityFlagItemList[$product->getId()] = $tmpData;
} else {
$PriorityFlagItemList[$product->getId()] = $product;
}
$outletProducts[$cnt] = $product;
$cnt++;
}
} else {
$tmpData = $this->customProductRepository->getPriorityFlagProduct($product->getId());
if (is_object($tmpData)) {
$PriorityFlagItemList[$product->getId()] = $tmpData;
} else {
$PriorityFlagItemList[$product->getId()] = $product;
}
$outletProducts[$cnt] = $product;
$cnt++;
}
} else {
break;
}
}
return [
'outletProducts' => $outletProducts,
'priorityFlagItemList' => $PriorityFlagItemList,
'TagId' => $this->outletTag,
];
}
}