/** * @param PageEleveurBranch|null $branch * @return PageEleveur */ private function fromBranch(PageEleveurBranch $branch = null) { $pageEleveur = new PageEleveur(); $pageEleveur->setId($branch->getId()); $pageEleveur->setOwner($branch->getOwner()); $pageEleveur->setSlug($branch->getSlug()); $pageEleveur->setHead($branch->getCommit()->getId()); $pageEleveur->setNom($branch->getCommit()->getNom()); $pageEleveur->setDescription($branch->getCommit()->getDescription()); $pageEleveur->setEspeces($branch->getCommit()->getEspeces()); $pageEleveur->setRaces($branch->getCommit()->getRaces()); $pageEleveur->setLieu($branch->getCommit()->getLieu()); /* * Le tri permet de retourner une PE dans le bon ordre même si * le commit a été fait dans un mauvais ordre. */ $arrayCollection = $branch->getCommit()->getAnimaux()->toArray(); usort($arrayCollection, function (PageAnimalBranch $a, PageAnimalBranch $b) { return $b->getCreatedAt()->getTimestamp() - $a->getCreatedAt()->getTimestamp(); }); $animaux = []; /** @var PageAnimalBranch $pageAnimalBranch */ foreach ($arrayCollection as $pageAnimalBranch) { $animaux[] = PageAnimalService::fromBranch($pageAnimalBranch); } $pageEleveur->setAnimaux($animaux); $actualites = $branch->getCommit()->getActualites()->toArray(); usort($actualites, function (Actualite $a, Actualite $b) { return $b->getDate()->getTimestamp() - $a->getDate()->getTimestamp(); }); $pageEleveur->setActualites($actualites); return $pageEleveur; }
/** * @expectedException \AppBundle\Service\ValidationException * @expectedExceptionCode \AppBundle\Service\ValidationException::EMPTY_DATE_NAISSANCE */ public function testCommit_dateNaissance_empty() { // Simulation d'une page animal en base de données $user = new User(); $pageAnimalBranch = new PageAnimalBranch(); $pageAnimalBranch->setOwner($user); $commit = new PageAnimalCommit(null, 'rodolf', $this->timeService->now(), null, PageAnimal::DISPONIBLE, PageAnimal::MALE, null); $commit->setId(1); $pageAnimalBranch->setCommit($commit); $this->pageAnimalBranchRepository->method('find')->willReturn($pageAnimalBranch); $this->pageAnimalCommitRepository->method('find')->with($commit->getId())->willReturn($commit); // Commit la page avec un nom vide $pageAnimal = $this->pageAnimalService->find($pageAnimalBranch->getId()); $pageAnimal->setDateNaissance(null); $this->pageAnimalService->commit($user, $pageAnimal); }
/** * @Route("/animal/{pageAnimalId}", name="commitPageAnimal_route") * @Method("POST") * @return \Symfony\Component\HttpFoundation\Response */ public function commitAction($pageAnimalId, Request $request) { /** @var PageAnimal $pageEleveur */ $pageAnimal = $this->serializer->deserialize($request->getContent(), PageAnimal::class, 'json'); /** @var AnonymousToken $token */ $token = $this->tokenStorage->getToken(); /** @var User $user */ $user = $token->getUser(); if ($user === 'anon.') { return new RedirectResponse($this->router->generate('fos_user_security_login')); } try { $this->pageAnimalService->commit($user, $pageAnimal); return new Response($this->serializer->serialize($pageAnimal, 'json')); } catch (HistoryException $e) { return $this->createHistoryErrorResponse($e, $user, $pageAnimal); } catch (ValidationException $e) { return $this->createValidationErrorResponse($e, $user, $pageAnimal); } }