/** * @param \DLigo\Animaltool\Domain\Model\Animal $newAnimal * @param \DLigo\Animaltool\Domain\Model\Owner $newOwner * @param array<\DLigo\Animaltool\Domain\Model\Bread> $bread * @param string $tag * @Flow\Validate (argumentName="$newAnimal.photo", type="NotEmpty") * @Flow\Validate (argumentName="$newAnimal.gender", type="NotEmpty") * @return void */ public function createAction(Animal $newAnimal, \DLigo\Animaltool\Domain\Model\Owner $newOwner, $bread, $tag = '') { $oldAnimal = null; $duplicate = false; $dummyAction = new \DLigo\Animaltool\Domain\Model\Action(); $dummyAction->setLat(0); $dummyAction->setLng(0); $dummyAction->setAnimal($newAnimal); $dummyAction->setDate(new \DateTime('now')); $user = $this->session->getUser(); $boxid = $user->getTeamID() . '-' . ($user->getLastBoxID() + 1); $dummyAction->setBoxID($boxid); $dummyAction->setTeam($user); $location = $this->session->getLocation(); if ($location == null) { $location = $newAnimal->getLocation(); } $dummyAction->setLocation($location); $newAnimal->setLocation($location); $speciesid = $this->persistenceManager->getIdentifierByObject($newAnimal->getSpecies()); $breadid = $bread[$speciesid]; $newAnimal->setBread($breadid); $newAnimal->setStayStatus(Animal::CATCHED); $newAnimal->setTherapyStatus(Animal::WAIT); $this->actionRepository->add($dummyAction); $newAnimal->setOwner($newOwner); if (!empty($tag)) { $oldAnimal = $this->animalRepository->findByRFID($tag)->getFirst(); if ($oldAnimal) { $tag = "_DUMMY_" . $tag . "_" . time(); $duplicate = true; $newAnimal->setIsDummy(true); } $newAnimal->setRFID($tag); } $this->ownerRepository->add($newOwner); $this->animalRepository->add($newAnimal); $this->addFlashMessage('Created a new animal.', '', \TYPO3\Flow\Error\Message::SEVERITY_OK, array(), 'flash.animal.new'); if ($duplicate) { $this->redirect('duplicate', null, null, array('animal' => $newAnimal, 'oldAnimal' => $oldAnimal)); } $this->redirect('treatment', null, null, array('animal' => $newAnimal)); }
public function addAction() { $currentUser = $this->authenticationManager->getSecurityContext()->getAccount()->getParty(); $photoInfo = $this->request->getArgument("photo"); $actionData = $this->request->getArgument("action"); $actionData = json_decode($actionData, true); $animalData = $this->request->getArgument("animal"); $animalData = json_decode($animalData, true); $ownerData = $this->request->getArgument("owner"); $ownerData = json_decode($ownerData, true); $photoData = $this->request->getArgument("photo"); $action = $this->propertyMapper->convert($actionData, 'DLigo\\Animaltool\\Domain\\Model\\Action'); $action->setDate(new \DateTime('now')); $user = $this->propertyMapper->convert($actionData['team'], 'DLigo\\Animaltool\\Domain\\Model\\User'); $lastId = $user->getLastBoxID(); $action->setTeam($user); $box = explode('-', $actionData['boxID']); if ($lastId > $box[1]) { $action->setBoxID($user->getTeamID() . '-' . ($lastId + 1)); } $animal = $this->propertyMapper->convert($animalData, 'DLigo\\Animaltool\\Domain\\Model\\Animal'); $birthday = \DateTime::createFromFormat("U", $animalData["birthday"]); if (!empty($animalData["birthday"])) { $birthday = \DateTime::createFromFormat("U", $animalData["birthday"]); $birthday->setTime(0, 0, 0); $animal->setBirthday($birthday); } $action->setAnimal($animal); $owner = null; if (isset($animalData["isPrivate"]) && $animalData["isPrivate"]) { $owner = $this->propertyMapper->convert($ownerData, 'DLigo\\Animaltool\\Domain\\Model\\Owner'); $animal->setOwner($owner); $animal->setEarTag(null); if (!empty($animalData["earTag"])) { $rfid = $animalData["earTag"]; $oldAnimal = $this->animalRepository->findOneByRFID($rfid); if ($oldAnimal == null) { $animal->setRFID($rfid); } } } else { if (!empty($animalData["earTag"])) { $eartag = $animalData["earTag"]; $oldAnimal = $this->animalRepository->findOneByEarTag($eartag); if ($oldAnimal != null) { $animal->setEarTag(null); } } } $photo = $this->resourceManager->importUploadedResource($photoInfo); //$this->systemLogger->log(\TYPO3\Flow\var_dump($photo,"Photo",true,true),LOG_INFO); $animal->setPhoto($photo); if ($owner) { $this->ownerRepository->add($owner); } $this->animalRepository->add($animal); $this->actionRepository->add($action); $this->userRepository->update($user); $this->persistenceManager->persistAll(); $this->response->setStatus(201); echo "{" . '"lastID": ' . $currentUser->getLastBoxID() . "}"; flush(); ob_flush(); }