Commit 240816c4550cd378bb4873adec2a4f841f28e725

Authored by Eduardo Santos
2 parents c1ddd566 8c600cee
Exists in master

Adiciona restriçao de unicidade na impressora e data

Controller/ApiController.php
@@ -99,21 +99,7 @@ class ApiController extends Controller { @@ -99,21 +99,7 @@ class ApiController extends Controller {
99 99
100 } 100 }
101 101
102 -  
103 - $counter = $this->getDoctrine()->getManager()->getRepository('CocarBundle:PrinterCounter')->findBy(array(  
104 - 'printer' => $printer->getId(),  
105 - 'date' => $dados['counter_time']  
106 - ));  
107 -  
108 - if(empty($counter)) {  
109 - $counter = new PrinterCounter;  
110 - } else {  
111 - $this->get('logger')->error("Entrada repetida para impressora". $printer->getId() ." e data ".$dados['counter_time']);  
112 - $response = new JsonResponse();  
113 - $response->setStatusCode('200');  
114 -  
115 - return $response;  
116 - } 102 + $counter = new PrinterCounter();
117 103
118 // Atualiza impressora sempre que alterar o serial 104 // Atualiza impressora sempre que alterar o serial
119 if (!empty($dados['model'])) { 105 if (!empty($dados['model'])) {
@@ -131,9 +117,16 @@ class ApiController extends Controller { @@ -131,9 +117,16 @@ class ApiController extends Controller {
131 $counter->setPrints($dados['counter']); 117 $counter->setPrints($dados['counter']);
132 $counter->setDate($dados['counter_time']); 118 $counter->setDate($dados['counter_time']);
133 119
134 - $em->persist($printer);  
135 - $em->persist($counter);  
136 - $em->flush(); 120 + try {
  121 + $em->persist($printer);
  122 + $em->flush();
  123 + $em->persist($counter);
  124 + $em->flush();
  125 + } catch (\Exception $e) {
  126 + // Ainda assim retorna como sucesso
  127 + $logger->error("Entrada repetida para impressora ".$printer->getHost() . "na data ".$dados['counter_time']);
  128 + }
  129 +
137 130
138 $response = new JsonResponse(); 131 $response = new JsonResponse();
139 $response->setStatusCode('200'); 132 $response->setStatusCode('200');
Entity/PrinterCounter.php
@@ -3,11 +3,12 @@ @@ -3,11 +3,12 @@
3 namespace Swpb\Bundle\CocarBundle\Entity; 3 namespace Swpb\Bundle\CocarBundle\Entity;
4 4
5 use Doctrine\ORM\Mapping as ORM; 5 use Doctrine\ORM\Mapping as ORM;
  6 +use Doctrine\ORM\Mapping\UniqueConstraint;
6 7
7 /** 8 /**
8 * PrinterCounter 9 * PrinterCounter
9 * 10 *
10 - * @ORM\Table("tb_printer_counter") 11 + * @ORM\Table("tb_printer_counter",uniqueConstraints={@UniqueConstraint(name="printer_date_unique_idx", columns={"printer_id", "date"})})
11 * @ORM\Entity(repositoryClass="Swpb\Bundle\CocarBundle\Entity\PrinterCounterRepository") 12 * @ORM\Entity(repositoryClass="Swpb\Bundle\CocarBundle\Entity\PrinterCounterRepository")
12 */ 13 */
13 class PrinterCounter 14 class PrinterCounter