Exemplo n.º 1
0
 /**
  * @param \DateTime $from
  * @param \DateTime $to
  * @param integer $reportType   
  * @return void
  */
 public function reportAction(\DateTime $from = null, \DateTime $to = null, $reportType = 0)
 {
     if ($from) {
         $col = function ($item) {
             return $item['firstname'] . ' ' . $item['lastname'] . '(' . \DLigo\Animaltool\Domain\Model\User::teamIDString($item['teamID']) . ')';
         };
         $source = function ($item) {
             if ($item['web']) {
                 $label = $this->translator->translateById('report.source.web', array(), NULL, NULL, 'Main', 'DLigo.Animaltool');
             } else {
                 $label = $this->translator->translateById('report.source.app', array(), NULL, NULL, 'Main', 'DLigo.Animaltool');
             }
             return $label;
         };
         $ownerStat = function ($item) {
             if ($item['ownerStat']) {
                 $label = $this->translator->translateById('report.withOwner', array(), NULL, NULL, 'Main', 'DLigo.Animaltool');
             } else {
                 $label = $this->translator->translateById('report.withoutOwner', array(), NULL, NULL, 'Main', 'DLigo.Animaltool');
             }
             return $label;
         };
         $tagType = function ($item) {
             if ($item['tagType'] == 2) {
                 $label = $this->translator->translateById('report.tagType.2', array(), NULL, NULL, 'Main', 'DLigo.Animaltool');
             } elseif ($item['tagType'] == 1) {
                 $label = $this->translator->translateById('report.tagType.1', array(), NULL, NULL, 'Main', 'DLigo.Animaltool');
             } else {
                 $label = $this->translator->translateById('report.tagType.0', array(), NULL, NULL, 'Main', 'DLigo.Animaltool');
             }
             return $label;
         };
         $gender = function ($item) {
             $label = $this->translator->translateById('report.gender.' . strtolower($item['gender']), array(), NULL, NULL, 'Main', 'DLigo.Animaltool');
             return $label;
         };
         $dummy = new \DLigo\Animaltool\Domain\Model\Animal();
         $stats = $dummy->getStayStatuses();
         $stay = function ($item) use($stats) {
             return $stats[$item['stayStatus']];
         };
         $stats = $dummy->getTherapyStatuses();
         $therapy = function ($item) use($stats) {
             return $stats[$item['therapyStatus']];
         };
         if ($reportType == 1) {
             for ($i = 100; $i <= 105; $i++) {
                 $report[$i] = true;
             }
             $typename = 'simple';
         } elseif ($reportType == 0) {
             for ($i = 200; $i <= 218; $i++) {
                 $report[$i] = true;
             }
             $typename = 'advanced';
         } elseif ($reportType == 2) {
             for ($i = 300; $i <= 302; $i++) {
                 $report[$i] = true;
             }
             $typename = 'lists';
         } else {
             $report[$reportType] = true;
         }
         $tables = array();
         if (!empty($report[100])) {
             $counts = $this->reportUtility->countAllSpeciesAndSource($from, $to, $this->session->getLocation());
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'web', null, $source, true);
             $this->view->assign('species_source', $table);
             $name = 'species-source';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[101])) {
             $counts = $this->reportUtility->countAllSpeciesAndOwnerStat($from, $to, $this->session->getLocation());
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'ownerStat', null, $ownerStat, true);
             $this->view->assign('species_ownerstat', $table);
             $name = 'species-ownerstat';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[102])) {
             $counts = $this->reportUtility->countAllSpeciesAndGender($from, $to, $this->session->getLocation());
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'gender', null, $gender, true);
             $this->view->assign('species_gender', $table);
             $name = 'species-gender';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[103])) {
             $counts = $this->reportUtility->countAllSpeciesAndGender($from, $to, $this->session->getLocation(), 'th.name=\'Sterilisation\'', true);
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'gender', null, $gender, true);
             $this->view->assign('species_gender_sterilisation', $table);
             $name = 'species-gender-sterilisation';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[104])) {
             $counts = $this->reportUtility->countAllSpeciesAndGender($from, $to, $this->session->getLocation(), '(th.name=\'Rabies vaccine\' OR th.name=\'Other vaccine\')', true);
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'gender', null, $gender, true);
             $this->view->assign('species_gender_vaccination', $table);
             $name = 'species-gender-vaccination';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[105])) {
             $counts = $this->reportUtility->countAllSpeciesAndStayStatus($from, $to, $this->session->getLocation(), '(a.stayStatus=' . Animal::THERAPY . ' OR a.stayStatus=' . Animal::RELEASED . ' OR a.stayStatus=' . Animal::EXTERNAL . ')');
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'stayStatus', null, $stay, true);
             $this->view->assign('species_staystatus', $table);
             $name = 'species-staystatus-simple';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[200])) {
             $counts = $this->reportUtility->countAllSpeciesAndTeam($from, $to, $this->session->getLocation());
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'teamID', null, $col);
             $this->view->assign('species_team', $table);
             $name = 'species-team';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[201])) {
             $counts = $this->reportUtility->countAllSpeciesAndTeam($from, $to, $this->session->getLocation(), "a.owner IS NOT NULL");
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'teamID', null, $col);
             $this->view->assign('species_team_owner', $table);
             $name = 'species-team-owner';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[202])) {
             $counts = $this->reportUtility->countAllSpeciesAndTeam($from, $to, $this->session->getLocation(), "a.owner IS NULL");
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'teamID', null, $col);
             $this->view->assign('species_team_noowner', $table);
             $name = 'species-team-noowner';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[203])) {
             $counts = $this->reportUtility->countAllSpeciesAndTeam($from, $to, $this->session->getLocation(), "a.stayStatus=" . Animal::RELEASED, true);
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'teamID', null, $col);
             $this->view->assign('species_team_done', $table);
             $name = 'species-team-done';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[204])) {
             $counts = $this->reportUtility->countAllTherapyAndTeam($from, $to, $this->session->getLocation());
             $table = $this->reportUtility->buildReportTable($counts, 'therapy', 'teamID', null, $col);
             $this->view->assign('therapy_team', $table);
             $name = 'therapy-team';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[205])) {
             $counts = $this->reportUtility->countAllTherapyAndTeam($from, $to, $this->session->getLocation(), "a.gender='F'");
             $table = $this->reportUtility->buildReportTable($counts, 'therapy', 'teamID', null, $col);
             $this->view->assign('therapy_team_female', $table);
             $name = 'therapy-team-female';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[206])) {
             $counts = $this->reportUtility->countAllTherapyAndTeam($from, $to, $this->session->getLocation(), "a.gender='M'");
             $table = $this->reportUtility->buildReportTable($counts, 'therapy', 'teamID', null, $col);
             $this->view->assign('therapy_team_male', $table);
             $name = 'therapy-team-male';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[207])) {
             $counts = $this->reportUtility->countAllSpeciesAndStayStatus($from, $to, $this->session->getLocation());
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'stayStatus', null, $stay);
             $this->view->assign('species_staystatus', $table);
             $name = 'species-staystatus';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[208])) {
             $counts = $this->reportUtility->countAllSpeciesAndTherapyStatus($from, $to, $this->session->getLocation());
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'therapyStatus', null, $therapy);
             $this->view->assign('species_therapystatus', $table);
             $name = 'species-therapystatus';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         /*      if(!empty($report[209])){
                 $counts=$this->reportUtility->countAllSpeciesAndTherapyTeam($from,$to,$this->session->getLocation(),"a.stayStatus=".Animal::OPERATION);
                 $table=$this->reportUtility->buildReportTable($counts,'species','teamID',null,$col);
                 $this->view->assign('species_therapyteam', $table);
                 $name='species-therapyteam';
                 $tables[]=$table;
                 $this->view->assign('tables', $tables);
               };*/
         if (!empty($report[210])) {
             $counts = $this->reportUtility->countAllSpeciesAndTeam($from, $to, $this->session->getLocation(), "a.gender='F'");
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'teamID', null, $col);
             $this->view->assign('species_team_female', $table);
             $name = 'species-team-female';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[211])) {
             $counts = $this->reportUtility->countAllSpeciesAndTeam($from, $to, $this->session->getLocation(), "a.gender='M'");
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'teamID', null, $col);
             $this->view->assign('species_team_male', $table);
             $name = 'species-team-male';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[212])) {
             $counts = $this->reportUtility->countAllTherapyAndTeam($from, $to, $this->session->getLocation(), "s.name='Dog'");
             $table = $this->reportUtility->buildReportTable($counts, 'therapy', 'teamID', null, $col);
             $this->view->assign('therapy_team_dog', $table);
             $name = 'therapy-team-dog';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[213])) {
             $counts = $this->reportUtility->countAllTherapyAndTeam($from, $to, $this->session->getLocation(), "a.gender='F' AND s.name='Dog'");
             $table = $this->reportUtility->buildReportTable($counts, 'therapy', 'teamID', null, $col);
             $this->view->assign('therapy_team_dog_female', $table);
             $name = 'therapy-team-dog-female';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[214])) {
             $counts = $this->reportUtility->countAllTherapyAndTeam($from, $to, $this->session->getLocation(), "a.gender='M' AND s.name='Dog'");
             $table = $this->reportUtility->buildReportTable($counts, 'therapy', 'teamID', null, $col);
             $this->view->assign('therapy_team_dog_male', $table);
             $name = 'therapy-team-dog-male';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[215])) {
             $counts = $this->reportUtility->countAllTherapyAndTeam($from, $to, $this->session->getLocation(), "s.name='Cat'");
             $table = $this->reportUtility->buildReportTable($counts, 'therapy', 'teamID', null, $col);
             $this->view->assign('therapy_team_cat', $table);
             $name = 'therapy-team-cat';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[216])) {
             $counts = $this->reportUtility->countAllTherapyAndTeam($from, $to, $this->session->getLocation(), "a.gender='F' AND s.name='Cat'");
             $table = $this->reportUtility->buildReportTable($counts, 'therapy', 'teamID', null, $col);
             $this->view->assign('therapy_team_cat_female', $table);
             $name = 'therapy-team-cat-female';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[217])) {
             $counts = $this->reportUtility->countAllTherapyAndTeam($from, $to, $this->session->getLocation(), "a.gender='M' AND s.name='Cat'");
             $table = $this->reportUtility->buildReportTable($counts, 'therapy', 'teamID', null, $col);
             $this->view->assign('therapy_team_cat_male', $table);
             $name = 'therapy-team-cat-male';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[218])) {
             $counts = $this->reportUtility->countAllSpeciesAndTagType($from, $to, $this->session->getLocation(), "s.name='Dog' AND ((a.rFID IS NOT NULL AND a.rFID!='') OR (a.earTag IS NOT NULL AND a.earTag!=''))");
             $table = $this->reportUtility->buildReportTable($counts, 'species', 'tagType', null, $tagType);
             $this->view->assign('species_tagtype', $table);
             $name = 'species-tagtype';
             $tables[] = $table;
             $this->view->assign('tables', $tables);
         }
         if (!empty($report[300])) {
             $animals = $this->animalRepository->findByDate($from, $to, $this->session->getLocation());
             $this->view->assign('animals', $animals);
             $name = 'animals';
             $pdf = new \Famelo\PDF\Document('DLigo.Animaltool:report', 'A4');
             $pdf->assign('animals', $animals);
         }
         if (!empty($report[301])) {
             $owners = $this->animalRepository->findByDate($from, $to, $this->session->getLocation(), true);
             $this->view->assign('animals_withowner', $owners);
             $name = 'owners';
         }
         if (!empty($report[302])) {
             $owners = $this->animalRepository->findByDate($from, $to, $this->session->getLocation(), true, array('func' => 'equals', 'name' => 'species.name', 'value' => 'Dog'));
             $this->view->assign('recs', $owners);
             $name = 'recs';
         }
         $this->view->assign('report', true);
     } else {
         $this->view->assign('report', false);
     }
     $this->view->assign('from', $from);
     $this->view->assign('to', $to);
     $this->view->assign('reportType', $reportType);
     if ($this->request->getFormat() == 'csv') {
         $this->response->setHeader('Content-Type', 'text/plain');
         if (count($tables) > 1) {
             $name = $typename;
         }
         $name = 'export_' . $name;
         $name .= '_' . $from->format('Y-m-d');
         if ($to) {
             $name .= '_' . $to->format('Y-m-d');
         }
         if ($this->session->getLocation()) {
             $name .= '_' . $this->session->getLocation()->getName();
         }
         $name .= '.csv';
         $this->response->setHeader('Content-Disposition', 'attachment; filename="' . $name . '"');
     }
     if ($this->request->getFormat() == 'pdf') {
         $pdf->assign('from', $from);
         $pdf->assign('to', $to);
         $pdf->assign('session', $this->session);
         $name = 'report_anmals';
         $name .= '_' . $from->format('Y-m-d');
         if ($to) {
             $name .= '_' . $to->format('Y-m-d');
         }
         if ($this->session->getLocation()) {
             $name .= '_' . $this->session->getLocation()->getName();
         }
         $name .= '.pdf';
         $pdf->download($name);
     }
 }
Exemplo n.º 2
0
 public function doneAction(Animal $animal)
 {
     if ($animal->getStayStatus() == Animal::EXTERNAL && ($animal->getOpenExternal() == null || $animal->getOpenExternal()->getExternalType() != \DLigo\Animaltool\Domain\Model\External::CLINIC)) {
         if ($animal->getOpenExternal()) {
             $animal->getOpenExternal()->setIsPermanent(true);
         }
         $animal->setStayStatus(Animal::ADOPTED);
         $this->addFlashMessage('Set animal as permanently sheltered/adopted.', '', \TYPO3\Flow\Error\Message::SEVERITY_OK, array(), 'flash.animal.adopted');
     } else {
         $animal->setStayStatus(Animal::RELEASED);
         $this->addFlashMessage('Set animal as done/released.', '', \TYPO3\Flow\Error\Message::SEVERITY_OK, array(), 'flash.animal.done');
     }
     $animal->setTherapyStatus(Animal::READY);
     $this->animalRepository->update($animal);
     $this->redirect('index');
 }
Exemplo n.º 3
0
 public function releaseAction(\DLigo\Animaltool\Domain\Model\Animal $animal)
 {
     $animal->setStayStatus(\DLigo\Animaltool\Domain\Model\Animal::RELEASED);
     $this->animalRepository->update($animal);
     $this->response->setStatus(204);
 }
Exemplo n.º 4
0
 /**
  * @return string
  */
 public function __toString()
 {
     $name = $this->name ? $this->name . ' (' . $this->lastName . ', ' . $this->firstName . ')' : $this->lastName . ', ' . $this->firstName;
     if (!empty($this->animal)) {
         $name .= ' / ' . $this->animal->getBoxID();
     }
     return $name;
 }
 /**
  * @param \DLigo\Animaltool\Domain\Model\External $external
  * @param \DLigo\Animaltool\Domain\Model\Animal $animal
  * @return void
  */
 public function sendAction(External $external, \DLigo\Animaltool\Domain\Model\Animal $animal)
 {
     if ($external->getExternalType() == External::CLINIC) {
         $external->setIsPermanent(false);
     }
     if ($external->getExternalType() == External::ADOPTION) {
         $external->setIsPermanent(true);
     }
     $animal->setStayStatus(Animal::EXTERNAL);
     $animal->setTherapyStatus(Animal::READY);
     if ($external->getIsPermanent()) {
         $animal->setStayStatus(\DLigo\Animaltool\Domain\Model\Animal::ADOPTED);
         $external->stopExternal();
     }
     $external->setAnimal($animal);
     $start = $external->getStartDate();
     if (empty($start)) {
         $external->setStartDate(new \DateTime('now'));
     }
     $animal->getExternals()->add($external);
     $this->animalRepository->update($animal);
     //$this->externalRepository->update($external);
     $this->addFlashMessage('Send to clinic/shelter/adoption.', '', \TYPO3\Flow\Error\Message::SEVERITY_OK, array(), 'flash.external.send');
     $this->redirect('index', 'Animal');
 }