/** * @param User $user * @param PageAnimal $pageAnimal * @throws HistoryException * @throws ValidationException */ public function commit(User $user, PageAnimal $pageAnimal) { /** @var PageAnimalBranch $pageAnimalBranch */ $pageAnimalBranch = $this->pageAnimalBranchRepository->find($pageAnimal->getId()); if ($pageAnimalBranch == null) { throw new HistoryException(HistoryException::BRANCHE_INCONNUE); } if ($user->getId() !== $pageAnimalBranch->getOwner()->getId()) { throw new HistoryException(HistoryException::DROIT_REFUSE); } /** @var PageAnimalCommit $clientHead */ $clientHead = $this->pageAnimalCommitRepository->find($pageAnimal->getHead()); if ($clientHead->getId() !== $pageAnimalBranch->getCommit()->getId()) { throw new HistoryException(HistoryException::NON_FAST_FORWARD); } if (empty($pageAnimal->getNom())) { throw new ValidationException(ValidationException::EMPTY_NOM); } if (empty($pageAnimal->getDateNaissance())) { throw new ValidationException(ValidationException::EMPTY_DATE_NAISSANCE); } $commit = new PageAnimalCommit($clientHead, $pageAnimal->getNom(), $pageAnimal->getDateNaissance(), $pageAnimal->getDescription(), $pageAnimal->getStatut(), $pageAnimal->getSexe(), $pageAnimal->getPhotos()); $this->doctrine->persist($commit); $pageAnimalBranch->setCommit($commit); $this->doctrine->flush([$commit, $pageAnimalBranch]); $pageAnimal->setHead($commit->getId()); }
/** * @param $pageAnimal * @return PageEleveurBranch */ public function findByPageAnimal(PageAnimal $pageAnimal) { $queryBuilder = $this->joinQuery(); $queryBuilder->where($queryBuilder->expr()->eq('a.id', ':animal_id')); $queryBuilder->setParameter('animal_id', $pageAnimal->getId()); /** @var PageEleveurBranch $pageEleveur */ $pageEleveur = $queryBuilder->getQuery()->getOneOrNullResult(); return $pageEleveur; }