Commit 397a619e authored by David Surville's avatar David Surville
Browse files

[Tac] Factorisation de certaines méthodes des services dans une classe abstraite CommonService

parent 91772c6e
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ CREATE TABLE UNICAEN_PRIVILEGE (
  LIBELLE      VARCHAR2(200 CHAR) NOT NULL,
  ORDRE        INT                DEFAULT 0,
  CONSTRAINT PK_UNICAEN_PRIVILEGE PRIMARY KEY (ID),
  CONSTRAINT UN_UNICAEN_PRIVILEGE_CODE UNIQUE (CODE),
  CONSTRAINT UN_UNICAEN_PRIVILEGE_CODE UNIQUE (CATEGORIE_ID, CODE),
  CONSTRAINT FK_UNICAEN_PRIVILEGE_CATEGORIE FOREIGN KEY (CATEGORIE_ID) REFERENCES UNICAEN_PRIVILEGE_CATEGORIE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

+1 −1
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ CREATE TABLE UNICAEN_PRIVILEGE (
  CONSTRAINT FK_UNICAEN_PRIVILEGE_CATEGORIE FOREIGN KEY (CATEGORIE_ID) REFERENCES UNICAEN_PRIVILEGE_CATEGORIE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE UNIQUE INDEX UN_UNICAEN_PRIVILEGE_CODE ON UNICAEN_PRIVILEGE(CODE);
CREATE UNIQUE INDEX UN_UNICAEN_PRIVILEGE_CODE ON UNICAEN_PRIVILEGE(CATEGORIE_ID, CODE);
CREATE INDEX IX_UNICAEN_PRIVILEGE_CATEGORIE ON UNICAEN_PRIVILEGE(CATEGORIE_ID);


+1 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
        </indexes>

        <unique-constraints>
            <unique-constraint name="un_unicaen_privilege_code" columns="CODE"/>
            <unique-constraint name="un_unicaen_privilege_code" columns="CATEGORIE_ID,CODE"/>
        </unique-constraints>

        <id name="id" type="integer" column="ID">
+6 −86
Original line number Diff line number Diff line
@@ -10,63 +10,21 @@ use UnicaenApp\Exception\RuntimeException;
use UnicaenApp\Service\EntityManagerAwareTrait;
use UnicaenPrivilege\Entity\Db\CategorieInterface;
use UnicaenPrivilege\Entity\Db\PrivilegeInterface;
use UnicaenPrivilege\Service\CommonService;
use Zend\Mvc\Controller\AbstractActionController;

class CategorieService 
class CategorieService extends CommonService
{
    use EntityManagerAwareTrait;

    /**
     * @var string
     */
    private $categorieEntityClass;

    /**
     * @param string $categorieEntityClass
     */
    public function setCategorieEntityClass($categorieEntityClass)
    public function setEntityClass($categorieEntityClass)
    {
        if (! class_exists($categorieEntityClass) || ! in_array(CategorieInterface::class, class_implements($categorieEntityClass))) {
            throw new InvalidArgumentException("L'entité associée aux catégories de privilège doit implémenter " . CategorieInterface::class);
        }

        $this->categorieEntityClass = $categorieEntityClass;
    }

    /**
     * @return string
     */
    public function getEntityClass()
    {
        return $this->categorieEntityClass;
    }

    /**
     * Retourne une nouvelle instance de l'entité courante
     *
     * @return CategorieInterface
     */
    public function getEntityInstance()
    {
        return new $this->categorieEntityClass;
    }

    /**
     * @return EntityRepository
     */
    public function getRepo()
    {
        return $this->getEntityManager()->getRepository($this->categorieEntityClass);
    }

    /**
     * @param $id
     *
     * @return null|CategorieInterface
     */
    public function find($id)
    {
        return $this->getRepo()->find($id);
        $this->entityClass = $categorieEntityClass;
    }

    /**
@@ -93,7 +51,7 @@ class CategorieService

    /**
     * @param string $code
     * @return CategorieInterface
     * @return CategorieInterface|null
     */
    public function findByCode(string $code)
    {
@@ -102,7 +60,7 @@ class CategorieService

    /**
     * @param string $libelle
     * @return CategorieInterface
     * @return CategorieInterface|null
     */
    public function findByLibelle(string $libelle)
    {
@@ -179,42 +137,4 @@ class CategorieService

        return $result;
    }

    /**
     * Retourne une liste d'entités sous forme d'un tableau associatif dont les clés
     * sont les id des entités et les valeurs correspondent au champ choisi
     *
     * @param array $entities liste des entités
     * @param string $key attribut utilisé comme clé
     * @param string $value attribut utilisé pour les valeurs
     * @param string $entityClass classe de l'entité
     * @return array
     */
    public function getListForSelect($entities, $key = 'id', $value = 'libelle', $entityClass = null)
    {
        $entityClass = $entityClass ?: $this->getEntityClass();

        foreach ($entities as $entity) {
            if ($entity instanceof $entityClass
                && method_exists($entity, $kgetter = 'get' . ucfirst($key))
                && method_exists($entity, $vgetter = 'get' . ucfirst($value))) {
                $result[$entity->$kgetter()] = $entity->$vgetter();
            }
        }

        return (array)$result;
    }

    /**
     * @return float|int|mixed|string
     * @throws NonUniqueResultException
     * @throws \Doctrine\ORM\NoResultException
     */
    public function getMaxOrdre()
    {
        $qb = $this->getRepo()->createQueryBuilder('c');
        $qb->select($qb->expr()->max('c.ordre'));

        return $qb->getQuery()->getSingleScalarResult();
    }
}
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ class CategorieServiceFactory

        $service = new CategorieService();
        $service->setEntityManager($entityManager);
        $service->setCategorieEntityClass($mapping['targetEntity']);
        $service->setEntityClass($mapping['targetEntity']);

        return $service;
    }
Loading