app/Plugin/ApexOrderItemOption/Repository/OptionRepository.php line 15

Open in your IDE?
  1. <?php
  2. namespace Plugin\ApexOrderItemOption\Repository;
  3. use Eccube\Repository\AbstractRepository;
  4. use Plugin\ApexOrderItemOption\Entity\Option;
  5. use Plugin\ApexOrderItemOption\Repository\ProductOptionRepository;
  6. use Doctrine\Persistence\ManagerRegistry as RegistryInterface;
  7. class OptionRepository extends AbstractRepository
  8. {
  9.     public function __construct(RegistryInterface $registry, $entityClass = Option::class)
  10.     {
  11.         parent::__construct($registry, $entityClass);
  12.     }
  13.     public function getList()
  14.     {
  15.         $qb = $this->createQueryBuilder('o')
  16.                 ->orderBy('o.sort_no', 'DESC');
  17.         $Options = $qb->getQuery()
  18.                 ->getResult();
  19.         return $Options;
  20.     }
  21.     public function getIds()
  22.     {
  23.         $qb = $this->createQueryBuilder('o')
  24.                 ->select('o.id')
  25.                 ->orderBy('o.sort_no', 'DESC');
  26.         $results = $qb->getQuery()
  27.                 ->getResult();
  28.         $Ids = [];
  29.         foreach($results as $result){
  30.             $Ids[] = $result['id'];
  31.         }
  32.         return $Ids;
  33.     }
  34.     public function saveOption($Option)
  35.     {
  36.         $em = $this->getEntityManager();
  37.         try {
  38.             if (!$Option->getId()) {
  39.                 $sort_no = $this->createQueryBuilder('o')
  40.                         ->select('MAX(o.sort_no)')
  41.                         ->getQuery()
  42.                         ->getSingleScalarResult();
  43.                 if (!$sort_no) {
  44.                     $sort_no = 0;
  45.                 }
  46.                 $Option->setSortNo($sort_no + 1);
  47.             }
  48.             if($Option->getType() == Option::CHECKBOX_TYPE){
  49.                 $Option->setIsRequired(false);
  50.             }elseif($Option->getType() == Option::NUMBER_TYPE || $Option->getType() == Option::TEXT_TYPE || $Option->getType() == Option::TEXTAREA_TYPE){
  51.             }else{
  52.                 $Option->setRequireMin(null);
  53.                 $Option->setRequireMax(null);
  54.             }
  55.             $em->persist($Option);
  56.             $em->flush();
  57.         } catch (\Exception $e) {
  58.             return false;
  59.         }
  60.         return true;
  61.     }
  62.     public function deleteOption($Option)
  63.     {
  64.         $em = $this->getEntityManager();
  65.         try {
  66.             $ProductOptions = $em->createQueryBuilder()
  67.                                  ->from('Plugin\ApexOrderItemOption\Entity\ProductOption','po')
  68.                                  ->select('po')
  69.                                  ->where('po.Option = :Option')
  70.                                  ->setParameter('Option',$Option)
  71.                                  ->getQuery()
  72.                                  ->getResult();
  73.             if (count($ProductOptions) > 0) {
  74.                 foreach($ProductOptions as $ProductOption){
  75.                     $productOptionRepository = $em->getRepository('Plugin\ApexOrderItemOption\Entity\ProductOption');
  76.                     /** @var ProductOptionRepository $productOptionRepository **/
  77.                     $productOptionRepository
  78.                                 ->deleteProductOption($ProductOption);
  79.                 }
  80.             }
  81.             $sort_no = $Option->getSortNo();
  82.             $em->createQueryBuilder()
  83.                     ->update('Plugin\ApexOrderItemOption\Entity\Option', 'o')
  84.                     ->set('o.sort_no', 'o.sort_no - 1')
  85.                     ->where('o.sort_no > :sort_no')->setParameter('sort_no', $sort_no)
  86.                     ->getQuery()
  87.                     ->execute();
  88.             $em->remove($Option);
  89.             $em->flush();
  90.         } catch (\Exception $e) {
  91.             return false;
  92.         }
  93.         return true;
  94.     }
  95. }