<?php
/*
* This file is part of EC-CUBE
*
* Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
*
* http://www.ec-cube.co.jp/
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Customize\Repository;
use Eccube\Doctrine\Query\WhereClause;
use Eccube\Doctrine\Query\WhereCustomizer;
use Eccube\Entity\Product;
use Eccube\Repository\QueryKey;
use Eccube\Repository\MemberRepository;
use Symfony\Component\Security\Core\Security;
/**
* ProductRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class AdminProductListCustomizer extends WhereCustomizer
{
protected $memberRepository;
/**
* @var Security
*/
protected $security;
public function __construct(MemberRepository $memberRepository, Security $security) {
$this->memberRepository = $memberRepository;
$this->security = $security;
}
/**
* vendorで絞り込む
*
* @param array $params
* @param $queryKey
* @return OrderByClause[]
*/
protected function createStatements($params, $queryKey)
{
// dump($params);
// if (!empty($params['vendor_id']) && $params['vendor_id']) {
// $Vendor = $this->memberRepository->find($params['vendor_id']);
// dump($Vendor);
// if ($Vendor) {
// return [WhereClause::eq('p.vendor', ':Vendor', $Vendor)];
// // return [WhereClause::in('p.vendor', ':Vendors', ['Vendors' => [$Vendor]])];
// }
// }
// return [];
dump($params);
// ログインユーザーを取得
/**
* @var \Eccube\Entity\Member
*/
$loginUser = $this->security->getUser();
$vendors = [];
// param指定の vendor_id があれば追加
if (!empty($params['vendor_id'])) {
$Vendor = $this->memberRepository->find($params['vendor_id']);
if ($Vendor) {
$vendors[] = $Vendor;
}
if ($loginUser->getAuthority()->getId() === 0) {
$vendors[] = $loginUser;
}
} else if ($loginUser->getAuthority()->getId() === 1) {
$vendors[] = $loginUser;
}
dump($vendors);
if (!empty($vendors)) {
// IN 句でまとめて条件化
return [WhereClause::in('p.vendor', ':Vendors', ['Vendors' => $vendors])];
}
return [];
}
/**
* ProductRepository::getQueryBuilderBySearchDataForAdmin に適用する.
*
* @return string
* @see \Eccube\Repository\ProductRepository::getQueryBuilderBySearchDataForAdmin()
* @see QueryKey
*/
public function getQueryKey()
{
return QueryKey::PRODUCT_SEARCH_ADMIN;
}
}