<?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 Customize\Entity\Reserve;
use Eccube\Repository\AbstractRepository;
use Doctrine\Persistence\ManagerRegistry as RegistryInterface;
/**
* Reserve
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class ReserveRepository extends AbstractRepository
{
public function __construct(RegistryInterface $registry)
{
parent::__construct($registry, Reserve::class);
}
/**
* 一覧を取得する.
*
* @return \Customize\Entity\Reserve[] 一覧の配列
*/
public function findReserveByDay($date=null, \Customize\Entity\ReserveSetting $ReserveSetting)
{
$qb = $this->createQueryBuilder('r')
->where('r.ReserveSetting = :ReserveSetting')
->andwhere('r.reserve_day = :date')
->addOrderBy('r.ReserveTime', 'DESC')
->setParameter('ReserveSetting', $ReserveSetting)
->setParameter('date', $date);
$Reserves = $qb->getQuery()->getResult();
return $Reserves;
}
public function findReserveByReasonDay($date=null, $ReserveReason=null, \Customize\Entity\ReserveSetting $ReserveSetting, $Customer)
{
$qb = $this->createQueryBuilder('r')
->where('r.ReserveSetting = :ReserveSetting')
->andwhere('r.Customer IS NOT NULL')
->andWhere('r.ReserveReason = :ReserveReason')
->andwhere('r.reserve_day > :date')
->andwhere('r.Customer = :Customer')
->addOrderBy('r.ReserveTime', 'DESC')
->setParameter('ReserveSetting', $ReserveSetting)
->setParameter('ReserveReason', $ReserveReason)
->setParameter('date', (new \DateTime())->format('Y-m-d'))
->setParameter('Customer', $Customer);
$Reserves = $qb->getQuery()->getResult();
return $Reserves;
}
public function getTimeCount($date=null, \Customize\Entity\ReserveSetting $ReserveSetting, \Customize\Entity\Master\ReserveTime $ReserveTime,\Eccube\Entity\Master\Sex $Sex=null)
{
$qb = $this->createQueryBuilder('r')
->select('COUNT(r.id) as cnt')
->leftJoin('r.Customer', 'c')
->where('r.ReserveSetting = :ReserveSetting')
->andwhere('r.reserve_day = :date')
->andwhere('r.Customer IS NOT NULL')
->andwhere('r.ReserveTime = :ReserveTime');
if($Sex)
$qb = $qb->andwhere('c.Sex = :Sex');
$qb = $qb->setParameter('ReserveSetting', $ReserveSetting)
->setParameter('ReserveTime', $ReserveTime)
->setParameter('date', $date);
if($Sex)
$qb = $qb->setParameter('Sex', $Sex);
$TimeCount = $qb->getQuery()->getSingleResult();
return $TimeCount;
}
public function getReserveByMonth($month, \Customize\Entity\ReserveSetting $ReserveSetting)
{
$qb = $this->createQueryBuilder('r')
->select('r as reserve,COUNT(r.id) as cnt')
->innerJoin('r.Customer', 'c')
->where('r.ReserveSetting = :ReserveSetting')
->andwhere('r.reserve_day LIKE :month')
->groupBy('r.reserve_day')
->addGroupBy('c.Sex')
->setParameter('ReserveSetting', $ReserveSetting)
->setParameter('month', '%'.$month.'%');
$MonthReserve = $qb->getQuery()->getResult();
return $MonthReserve;
}
public function getReserveByCustomer(\Eccube\Entity\Customer $Customer)
{
$qb = $this->createQueryBuilder('r')
->select('r.id','r.reserve_day','rs.kubun_place_id','rs.place_id','s.store_name','s.addr01','s.addr02','p.name as pref_name','rt.name as reserve_time')
->leftJoin('r.ReserveSetting', 'rs')
->leftJoin('Customize\Entity\Store', 's', 'WITH', 'rs.place_id = s.store_id')
->leftJoin('s.Pref', 'p')
->leftJoin('r.ReserveTime', 'rt')
->where('r.Customer = :Customer')
->orderBy('r.reserve_day','desc')
->setParameter('Customer', $Customer);
return $qb;
}
public function getQueryBuilderForCSVExport($date=null, \Customize\Entity\ReserveSetting $ReserveSetting){
$qb = $this->createQueryBuilder('r')
->where('r.ReserveSetting = :ReserveSetting')
->andwhere('r.reserve_day = :date')
->andwhere('r.Customer IS NOT NULL')
->addOrderBy('r.ReserveTime', 'DESC')
->setParameter('ReserveSetting', $ReserveSetting)
->setParameter('date', $date);
return $qb;
}
}