Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
CRAP | |
100.00% |
41 / 41 |
| ClassCategoryRepository | |
100.00% |
1 / 1 |
|
100.00% |
5 / 5 |
14 | |
100.00% |
41 / 41 |
| getList | |
100.00% |
1 / 1 |
2 | |
100.00% |
7 / 7 |
|||
| up | |
100.00% |
1 / 1 |
3 | |
100.00% |
0 / 0 |
|||
| down | |
100.00% |
1 / 1 |
3 | |
100.00% |
0 / 0 |
|||
| save | |
100.00% |
1 / 1 |
4 | |
100.00% |
17 / 17 |
|||
| delete | |
100.00% |
1 / 1 |
2 | |
100.00% |
17 / 17 |
|||
| <?php | |
| /* | |
| * This file is part of EC-CUBE | |
| * | |
| * Copyright(c) 2000-2015 LOCKON CO.,LTD. All Rights Reserved. | |
| * | |
| * http://www.lockon.co.jp/ | |
| * | |
| * This program is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU General Public License | |
| * as published by the Free Software Foundation; either version 2 | |
| * of the License, or (at your option) any later version. | |
| * | |
| * This program is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| * GNU General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU General Public License | |
| * along with this program; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
| */ | |
| namespace Eccube\Repository; | |
| use Doctrine\ORM\EntityRepository; | |
| /** | |
| * ClasscategoryRepository | |
| * | |
| * This class was generated by the Doctrine ORM. Add your own custom | |
| * repository methods below. | |
| */ | |
| class ClassCategoryRepository extends EntityRepository | |
| { | |
| /** | |
| * 規格カテゴリの一覧を取得します. | |
| * | |
| * @param \Eccube\Entity\ClassName $ClassName 検索対象の規格名オブジェクト. 指定しない場合は、すべての規格を対象に取得します. | |
| * @return array 規格カテゴリの配列 | |
| */ | |
| public function getList(\Eccube\Entity\ClassName $ClassName = null) | |
| { | |
| $qb = $this->createQueryBuilder('cc') | |
| ->orderBy('cc.rank', 'DESC'); // TODO ClassName ごとにソートした方が良いかも | |
| if ($ClassName) { | |
| $qb->where('cc.ClassName = :ClassName')->setParameter('ClassName', $ClassName); | |
| } | |
| $ClassCategories = $qb->getQuery() | |
| ->getResult(); | |
| return $ClassCategories; | |
| } | |
| /** | |
| * 規格カテゴリの順位を1上げる. | |
| * | |
| * @param \Eccube\Entity\ClassCategory $ClassCategory | |
| * @return boolean 成功した場合 true | |
| */ | |
| public function up(\Eccube\Entity\ClassCategory $ClassCategory) | |
| { | |
| $em = $this->getEntityManager(); | |
| $em->getConnection()->beginTransaction(); | |
| try { | |
| $rank = $ClassCategory->getRank(); | |
| $ClassName = $ClassCategory->getClassName(); | |
| $ClassCategory2 = $this->findOneBy(array('rank' => $rank + 1, 'ClassName' => $ClassName)); | |
| if (!$ClassCategory2) { | |
| throw new \Exception(); | |
| } | |
| $ClassCategory2->setRank($rank); | |
| $em->persist($ClassCategory); | |
| // ClassCategory更新 | |
| $ClassCategory->setRank($rank + 1); | |
| $em->persist($ClassCategory); | |
| $em->flush(); | |
| $em->getConnection()->commit(); | |
| } catch (\Exception $e) { | |
| $em->getConnection()->rollback(); | |
| return false; | |
| } | |
| return true; | |
| } | |
| /** | |
| * 規格カテゴリの順位を1下げる. | |
| * | |
| * @param \Eccube\Entity\ClassCategory $ClassCategory | |
| * @return boolean 成功した場合 true | |
| */ | |
| public function down(\Eccube\Entity\ClassCategory $ClassCategory) | |
| { | |
| $em = $this->getEntityManager(); | |
| $em->getConnection()->beginTransaction(); | |
| try { | |
| $rank = $ClassCategory->getRank(); | |
| $ClassName = $ClassCategory->getClassName(); | |
| // | |
| $ClassCategory2 = $this->findOneBy(array('rank' => $rank - 1, 'ClassName' => $ClassName)); | |
| if (!$ClassCategory2) { | |
| throw new \Exception(); | |
| } | |
| $ClassCategory2->setRank($rank); | |
| $em->persist($ClassCategory); | |
| // ClassCategory更新 | |
| $ClassCategory->setRank($rank - 1); | |
| $em->persist($ClassCategory); | |
| $em->flush(); | |
| $em->getConnection()->commit(); | |
| } catch (\Exception $e) { | |
| $em->getConnection()->rollback(); | |
| return false; | |
| } | |
| return true; | |
| } | |
| /** | |
| * 規格カテゴリを保存する. | |
| * | |
| * @param \Eccube\Entity\ClassCategory $ClassCategory | |
| * @return boolean 成功した場合 true | |
| */ | |
| public function save(\Eccube\Entity\ClassCategory $ClassCategory) | |
| { | |
| $em = $this->getEntityManager(); | |
| $em->getConnection()->beginTransaction(); | |
| try { | |
| if (!$ClassCategory->getId()) { | |
| $ClassName = $ClassCategory->getClassName(); | |
| $rank = $this->createQueryBuilder('cc') | |
| ->select('MAX(cc.rank)') | |
| ->where('cc.ClassName = :ClassName')->setParameter('ClassName', $ClassName) | |
| ->getQuery() | |
| ->getSingleScalarResult(); | |
| if (!$rank) { | |
| $rank = 0; | |
| } | |
| $ClassCategory->setRank($rank + 1); | |
| $ClassCategory->setDelFlg(0); | |
| } | |
| $em->persist($ClassCategory); | |
| $em->flush(); | |
| $em->getConnection()->commit(); | |
| } catch (\Exception $e) { | |
| $em->getConnection()->rollback(); | |
| return false; | |
| } | |
| return true; | |
| } | |
| /** | |
| * 規格カテゴリを削除する. | |
| * | |
| * @param \Eccube\Entity\ClassCategory $ClassCategory | |
| * @return boolean 成功した場合 true | |
| */ | |
| public function delete(\Eccube\Entity\ClassCategory $ClassCategory) | |
| { | |
| $em = $this->getEntityManager(); | |
| $em->getConnection()->beginTransaction(); | |
| try { | |
| $rank = $ClassCategory->getRank(); | |
| $ClassName = $ClassCategory->getClassName(); | |
| $em->createQueryBuilder() | |
| ->update('Eccube\Entity\ClassCategory', 'cc') | |
| ->set('cc.rank', 'cc.rank - 1') | |
| ->where('cc.rank > :rank AND cc.ClassName = :ClassName') | |
| ->setParameter('rank', $rank) | |
| ->setParameter('ClassName', $ClassName) | |
| ->getQuery() | |
| ->execute(); | |
| $ClassCategory->setDelFlg(1); | |
| $em->persist($ClassCategory); | |
| $em->flush(); | |
| $em->getConnection()->commit(); | |
| } catch (\Exception $e) { | |
| $em->getConnection()->rollback(); | |
| return false; | |
| } | |
| return true; | |
| } | |
| } |