app/Plugin/PinpointSale/Service/PlgConfigService/Repository/AbstractConfigRepository.php line 28

Open in your IDE?
  1. <?php
  2. /**
  3.  * Copyright(c) 2019 SYSTEM_KD
  4.  * Date: 2019/05/03
  5.  */
  6. namespace Plugin\PinpointSale\Service\PlgConfigService\Repository;
  7. use Doctrine\Common\Persistence\ManagerRegistry;
  8. use Doctrine\ORM\OptimisticLockException;
  9. use Doctrine\ORM\ORMException;
  10. use Eccube\Repository\AbstractRepository;
  11. use Plugin\PinpointSale\Service\PlgConfigService\ConfigHelper;
  12. use Plugin\PinpointSale\Service\PlgConfigService\Entity\ConfigInterface;
  13. use Plugin\PinpointSale\Service\PlgConfigService\Entity\ConfigOptionInterface;
  14. abstract class AbstractConfigRepository extends AbstractRepository
  15. {
  16.     private $entityClass;
  17.     private $entityOptionsClass;
  18.     public function __construct(ManagerRegistry $registry$entityClass$entityOptionsClass)
  19.     {
  20.         $this->entityClass $entityClass;
  21.         $this->entityOptionsClass $entityOptionsClass;
  22.         parent::__construct($registry$entityClass);
  23.     }
  24.     private function getInstance()
  25.     {
  26.         return new $this->entityClass;
  27.     }
  28.     public function findAllOrderGroup()
  29.     {
  30.         return $this->findBy([], ['groupId' => 'asc''sortNo' => 'asc''id' => 'asc']);
  31.     }
  32.     /**
  33.      * @param array $setData [TYPE, KEY, NAME, VALUE, GROUP_ID, SORT_NO]
  34.      * @throws ORMException
  35.      * @throws OptimisticLockException
  36.      */
  37.     public function saveNewConfigs(array $setData)
  38.     {
  39.         foreach ($setData as $setDatum) {
  40.             $Config null;
  41.             $type $setDatum[0];
  42.             $key $setDatum[1];
  43.             $name $setDatum[2];
  44.             $value $setDatum[3];
  45.             $groupId $setDatum[4];
  46.             $sortNo $setDatum[5];
  47.             $configMethod "get";
  48.             switch ($type) {
  49.                 case ConfigHelper::TYPE_STRING:
  50.                     $configMethod .= 'TextConfig';
  51.                     break;
  52.                 case ConfigHelper::TYPE_CHOICE:
  53.                     $configMethod .= 'IntegerConfig';
  54.                     break;
  55.                 case ConfigHelper::TYPE_BOOL:
  56.                     $configMethod .= 'BoolConfig';
  57.                     break;
  58.                 case ConfigHelper::TYPE_OPTIONS:
  59.                     $configMethod .= 'OptionsConfig';
  60.                     break;
  61.             }
  62.             $Config $this->{$configMethod}($key$name$value$groupId$sortNo);
  63.             $this->getEntityManager()->persist($Config);
  64.         }
  65.         $this->getEntityManager()->flush();
  66.     }
  67.     /**
  68.      * @param $key
  69.      * @param $name
  70.      * @param $value
  71.      * @param $groupId
  72.      * @param $sortNo
  73.      * @return ConfigInterface
  74.      */
  75.     private function getTextConfig($key$name$value$groupId$sortNo)
  76.     {
  77.         /** @var ConfigInterface $Config */
  78.         $Config $this->getInstance();
  79.         $Config
  80.             ->setConfigType(ConfigHelper::TYPE_STRING)
  81.             ->setConfigKey($key)
  82.             ->setName($name)
  83.             ->setTextValue($value)
  84.             ->setIntValue(null)
  85.             ->setBoolValue(false)
  86.             ->setGroupId($groupId)
  87.             ->setSortNo($sortNo);
  88.         return $Config;
  89.     }
  90.     /**
  91.      * @param $key
  92.      * @param $name
  93.      * @param $value
  94.      * @param $groupId
  95.      * @param $sortNo
  96.      * @return ConfigInterface
  97.      */
  98.     private function getIntegerConfig($key$name$value$groupId$sortNo)
  99.     {
  100.         /** @var ConfigInterface $Config */
  101.         $Config $this->getInstance();
  102.         $Config
  103.             ->setConfigType(ConfigHelper::TYPE_CHOICE)
  104.             ->setConfigKey($key)
  105.             ->setName($name)
  106.             ->setTextValue(null)
  107.             ->setIntValue((string)$value)
  108.             ->setBoolValue(false)
  109.             ->setGroupId($groupId)
  110.             ->setSortNo($sortNo);
  111.         return $Config;
  112.     }
  113.     /**
  114.      * @param $key
  115.      * @param $name
  116.      * @param $value
  117.      * @param $groupId
  118.      * @param $sortNo
  119.      * @return ConfigInterface
  120.      */
  121.     private function getBoolConfig($key$name$value$groupId$sortNo)
  122.     {
  123.         /** @var ConfigInterface $Config */
  124.         $Config $this->getInstance();
  125.         $Config
  126.             ->setConfigType(ConfigHelper::TYPE_BOOL)
  127.             ->setConfigKey($key)
  128.             ->setName($name)
  129.             ->setTextValue(null)
  130.             ->setIntValue(null)
  131.             ->setBoolValue($value)
  132.             ->setGroupId($groupId)
  133.             ->setSortNo($sortNo);
  134.         return $Config;
  135.     }
  136.     /**
  137.      * @param $key
  138.      * @param $name
  139.      * @param $values
  140.      * @param $groupId
  141.      * @param $sortNo
  142.      * @return ConfigInterface
  143.      */
  144.     private function getOptionsConfig($key$name$values$groupId$sortNo)
  145.     {
  146.         /** @var ConfigInterface $Config */
  147.         $Config $this->getInstance();
  148.         $Config
  149.             ->setConfigType(ConfigHelper::TYPE_OPTIONS)
  150.             ->setConfigKey($key)
  151.             ->setName($name)
  152.             ->setTextValue(null)
  153.             ->setIntValue(null)
  154.             ->setBoolValue(false)
  155.             ->setGroupId($groupId)
  156.             ->setSortNo($sortNo);
  157.         foreach ($values as $value) {
  158.             /** @var ConfigOptionInterface $ConfigOptions */
  159.             $ConfigOptions = new $this->entityOptionsClass;
  160.             $ConfigOptions->setValue($value);
  161.             $ConfigOptions->setPlgConfig($Config);
  162.             $Config->addConfigOptions($ConfigOptions);
  163.         }
  164.         return $Config;
  165.     }
  166. }