Commit 50dd922ba164a669320c7d2a27b4087d252f01a7
1 parent
2fc869b7
Exists in
master
and in
2 other branches
Adiciona log de impressão com todas as impressões para a impressora.
Showing
5 changed files
with
277 additions
and
61 deletions
Show diff stats
Controller/PrinterController.php
@@ -38,7 +38,7 @@ class PrinterController extends Controller | @@ -38,7 +38,7 @@ class PrinterController extends Controller | ||
38 | public function __construct(EntityManager $em = null) | 38 | public function __construct(EntityManager $em = null) |
39 | { | 39 | { |
40 | $this->em = $em; | 40 | $this->em = $em; |
41 | - } | 41 | + } |
42 | 42 | ||
43 | /** | 43 | /** |
44 | * Lists all Printer entities. | 44 | * Lists all Printer entities. |
@@ -49,6 +49,9 @@ class PrinterController extends Controller | @@ -49,6 +49,9 @@ class PrinterController extends Controller | ||
49 | */ | 49 | */ |
50 | public function indexAction(Request $request) | 50 | public function indexAction(Request $request) |
51 | { | 51 | { |
52 | + ini_set('memory_limit', '1024M'); | ||
53 | + gc_enable(); | ||
54 | + | ||
52 | $em = $this->getDoctrine()->getManager(); | 55 | $em = $this->getDoctrine()->getManager(); |
53 | 56 | ||
54 | $form = $request->query->get('form'); | 57 | $form = $request->query->get('form'); |
@@ -65,42 +68,109 @@ class PrinterController extends Controller | @@ -65,42 +68,109 @@ class PrinterController extends Controller | ||
65 | $start = isset($start) ? $start : (time() - ((60*60*24)*30)); | 68 | $start = isset($start) ? $start : (time() - ((60*60*24)*30)); |
66 | $end = isset($end) ? $end : time(); | 69 | $end = isset($end) ? $end : time(); |
67 | 70 | ||
68 | - /* | 71 | + $printers = $em->getRepository('CocarBundle:PrinterCounter')->relatorioGeral($start, $end); |
72 | + | ||
73 | + return array( | ||
74 | + "printer" => $printers, | ||
75 | + //"printerCounter" => $pCounter, | ||
76 | + "form" => $this->createCalendarForm(0, new \DateTime(date("Y-m-d", $start)), new \DateTime(date("Y-m-d", $end)))->createView(), | ||
77 | + "start" => $start, | ||
78 | + "end" => $end | ||
79 | + ); | ||
80 | + | ||
81 | + } | ||
82 | + | ||
83 | + /** | ||
84 | + * Generate a CSV file | ||
85 | + * | ||
86 | + * @Route("/csv", name="printer_csv") | ||
87 | + * | ||
88 | + */ | ||
89 | + public function csvAction(Request $request) | ||
90 | + { | ||
91 | + ini_set('memory_limit', '1024M'); | ||
92 | + gc_enable(); | ||
69 | 93 | ||
70 | - $printers = $em->getRepository('CocarBundle:Printer')->findAll(); | 94 | + $em = $this->getDoctrine()->getManager(); |
71 | 95 | ||
72 | - $printerCounter = array(); | 96 | + $form = $request->query->get('form'); |
73 | 97 | ||
74 | - foreach ($printers as $printer) | 98 | + if($form) |
75 | { | 99 | { |
76 | - $printerCounter[$printer->getId()] = $em->createQuery( | ||
77 | - "SELECT pc.id, pc.prints, pc.blackInk, pc.coloredInk FROM CocarBundle:PrinterCounter pc | ||
78 | - WHERE (pc.date >= :start AND pc.date <= :end) AND (pc.printer = :id) | ||
79 | - ORDER BY pc.id ASC" | ||
80 | - ) | ||
81 | - ->setParameter('start', $start) | ||
82 | - ->setParameter('end', $end) | ||
83 | - ->setParameter('id', $printer->getId()) | ||
84 | - ->getResult(); | 100 | + $start = new \DateTime($form['startDate']); |
101 | + $start = $start->format('U'); | ||
102 | + | ||
103 | + $end = new \DateTime($form['endDate']); | ||
104 | + $end = $end->format('U'); | ||
85 | } | 105 | } |
86 | 106 | ||
87 | - $pCounter = array(); | 107 | + $start = isset($start) ? $start : (time() - ((60*60*24)*30)); |
108 | + $end = isset($end) ? $end : time(); | ||
88 | 109 | ||
89 | - foreach ($printerCounter as $key => $counter) | 110 | + $printers = $em->getRepository('CocarBundle:PrinterCounter')->relatorioCsvGeral($start, $end); |
111 | + | ||
112 | + // Gera CSV | ||
113 | + $reader = new ArrayReader($printers); | ||
114 | + | ||
115 | + // Create the workflow from the reader | ||
116 | + $workflow = new Workflow($reader); | ||
117 | + | ||
118 | + | ||
119 | + // As you can see, the first names are not capitalized correctly. Let's fix | ||
120 | + // that with a value converter: | ||
121 | + //$converter = new CallbackValueConverter(function ($input) { | ||
122 | + // return date('d/m/Y', $input); | ||
123 | + //}); | ||
124 | + //$workflow->addValueConverter('endDate', $converter); | ||
125 | + //$workflow->addValueConverter('startDate', $converter); | ||
126 | + | ||
127 | + // Add the writer to the workflow | ||
128 | + $tmpfile = tempnam(sys_get_temp_dir(), 'impressoras'); | ||
129 | + $file = new \SplFileObject($tmpfile, 'w'); | ||
130 | + $writer = new CsvWriter($file); | ||
131 | + $workflow->addWriter($writer); | ||
132 | + | ||
133 | + // Process the workflow | ||
134 | + $workflow->process(); | ||
135 | + | ||
136 | + // Retorna o arquivo | ||
137 | + $response = new BinaryFileResponse($tmpfile); | ||
138 | + $response->headers->set('Content-Type', 'text/csv'); | ||
139 | + $response->headers->set('Content-Disposition', 'attachment; filename="impressoras.csv"'); | ||
140 | + $response->headers->set('Content-Transfer-Encoding', 'binary'); | ||
141 | + | ||
142 | + return $response; | ||
143 | + } | ||
144 | + | ||
145 | + /** | ||
146 | + * Lists all Printer entities. | ||
147 | + * | ||
148 | + * @Route("/detalhado", name="printer_index_detalhado") | ||
149 | + * @Method("GET") | ||
150 | + * @Template() | ||
151 | + */ | ||
152 | + public function indexDetalhadoAction(Request $request) | ||
153 | + { | ||
154 | + ini_set('memory_limit', '1024M'); | ||
155 | + gc_enable(); | ||
156 | + | ||
157 | + $em = $this->getDoctrine()->getManager(); | ||
158 | + | ||
159 | + $form = $request->query->get('form'); | ||
160 | + | ||
161 | + if($form) | ||
90 | { | 162 | { |
91 | - $size = sizeof($counter)-1; | 163 | + $start = new \DateTime($form['startDate']); |
164 | + $start = $start->format('U'); | ||
92 | 165 | ||
93 | - if(isset($counter[$size])) | ||
94 | - { | ||
95 | - $pCounter[$key]['prints'] = ($size == 0) ? | ||
96 | - $counter[$size]['prints'] : $counter[$size]['prints'] - $counter[0]['prints']; | ||
97 | - $pCounter[$key]['blackInk'] = $counter[$size]['blackInk']; | ||
98 | - $pCounter[$key]['coloredInk'] = $counter[$size]['coloredInk']; | ||
99 | - } | 166 | + $end = new \DateTime($form['endDate']); |
167 | + $end = $end->format('U'); | ||
100 | } | 168 | } |
101 | 169 | ||
102 | - $displayAll = ($request->query->get('all')) ? $request->query->get('all') : 0; | ||
103 | - */ | 170 | + $start = isset($start) ? $start : (time() - ((60*60*24)*30)); |
171 | + $end = isset($end) ? $end : time(); | ||
172 | + | ||
173 | + | ||
104 | $displayAll = true; | 174 | $displayAll = true; |
105 | 175 | ||
106 | $printers = $em->getRepository('CocarBundle:PrinterCounter')->relatorioGeral($start, $end); | 176 | $printers = $em->getRepository('CocarBundle:PrinterCounter')->relatorioGeral($start, $end); |
@@ -124,11 +194,14 @@ class PrinterController extends Controller | @@ -124,11 +194,14 @@ class PrinterController extends Controller | ||
124 | /** | 194 | /** |
125 | * Generate a CSV file | 195 | * Generate a CSV file |
126 | * | 196 | * |
127 | - * @Route("/csv", name="printer_csv") | 197 | + * @Route("/detalhado/csv", name="printer_csv_detalhado") |
128 | * | 198 | * |
129 | */ | 199 | */ |
130 | - public function csvAction(Request $request) | 200 | + public function csvDetalhadoAction(Request $request) |
131 | { | 201 | { |
202 | + ini_set('memory_limit', '1024M'); | ||
203 | + gc_enable(); | ||
204 | + | ||
132 | $em = $this->getDoctrine()->getManager(); | 205 | $em = $this->getDoctrine()->getManager(); |
133 | 206 | ||
134 | $form = $request->query->get('form'); | 207 | $form = $request->query->get('form'); |
@@ -145,7 +218,7 @@ class PrinterController extends Controller | @@ -145,7 +218,7 @@ class PrinterController extends Controller | ||
145 | $start = isset($start) ? $start : (time() - ((60*60*24)*30)); | 218 | $start = isset($start) ? $start : (time() - ((60*60*24)*30)); |
146 | $end = isset($end) ? $end : time(); | 219 | $end = isset($end) ? $end : time(); |
147 | 220 | ||
148 | - $printers = $em->getRepository('CocarBundle:PrinterCounter')->relatorioCsvGeral($start, $end); | 221 | + $printers = $em->getRepository('CocarBundle:PrinterCounter')->relatorioCsvGeralDetalhado($start, $end); |
149 | 222 | ||
150 | // Gera CSV | 223 | // Gera CSV |
151 | $reader = new ArrayReader($printers); | 224 | $reader = new ArrayReader($printers); |
@@ -261,11 +334,15 @@ class PrinterController extends Controller | @@ -261,11 +334,15 @@ class PrinterController extends Controller | ||
261 | throw $this->createNotFoundException('Unable to find Printer entity.'); | 334 | throw $this->createNotFoundException('Unable to find Printer entity.'); |
262 | } | 335 | } |
263 | 336 | ||
337 | + // Show printer log | ||
338 | + $log = $em->getRepository('CocarBundle:PrinterCounter')->findBy(array('printer' => $id), array('date' => 'desc')); | ||
339 | + | ||
264 | $deleteForm = $this->createDeleteForm($id); | 340 | $deleteForm = $this->createDeleteForm($id); |
265 | 341 | ||
266 | return array( | 342 | return array( |
267 | 'entity' => $entity, | 343 | 'entity' => $entity, |
268 | 'delete_form' => $deleteForm->createView(), | 344 | 'delete_form' => $deleteForm->createView(), |
345 | + 'log' => $log | ||
269 | ); | 346 | ); |
270 | } | 347 | } |
271 | 348 | ||
@@ -292,7 +369,7 @@ class PrinterController extends Controller | @@ -292,7 +369,7 @@ class PrinterController extends Controller | ||
292 | return array( | 369 | return array( |
293 | 'entity' => $entity, | 370 | 'entity' => $entity, |
294 | 'edit_form' => $editForm->createView(), | 371 | 'edit_form' => $editForm->createView(), |
295 | - 'delete_form' => $deleteForm->createView(), | 372 | + 'delete_form' => $deleteForm->createView() |
296 | ); | 373 | ); |
297 | } | 374 | } |
298 | 375 | ||
@@ -413,7 +490,7 @@ class PrinterController extends Controller | @@ -413,7 +490,7 @@ class PrinterController extends Controller | ||
413 | 490 | ||
414 | $printerCounter = $em->createQuery( | 491 | $printerCounter = $em->createQuery( |
415 | "SELECT pc.id, pc.prints, pc.blackInk, pc.coloredInk FROM CocarBundle:PrinterCounter pc | 492 | "SELECT pc.id, pc.prints, pc.blackInk, pc.coloredInk FROM CocarBundle:PrinterCounter pc |
416 | - WHERE (pc.date >= :start AND pc.date <= :end) AND (pc.printer = :id) | 493 | + WHERE (pc.date >= :start AND pc.date <= :end) AND (pc.printer = :id) |
417 | ORDER BY pc.id ASC" | 494 | ORDER BY pc.id ASC" |
418 | ) | 495 | ) |
419 | ->setParameter('start', $start) | 496 | ->setParameter('start', $start) |
@@ -526,7 +603,7 @@ class PrinterController extends Controller | @@ -526,7 +603,7 @@ class PrinterController extends Controller | ||
526 | $this->createRrd($arqRrd); | 603 | $this->createRrd($arqRrd); |
527 | $this->updateRrd($arqRrd, $prints); | 604 | $this->updateRrd($arqRrd, $prints); |
528 | 605 | ||
529 | - } | 606 | + } |
530 | catch(\Exception $e) | 607 | catch(\Exception $e) |
531 | { | 608 | { |
532 | return false; | 609 | return false; |
Entity/PrinterCounterRepository.php
@@ -66,6 +66,40 @@ class PrinterCounterRepository extends EntityRepository | @@ -66,6 +66,40 @@ class PrinterCounterRepository extends EntityRepository | ||
66 | 66 | ||
67 | 67 | ||
68 | $_dql = "SELECT printer.id, | 68 | $_dql = "SELECT printer.id, |
69 | + printer.name, | ||
70 | + printer.host, | ||
71 | + printer.serie, | ||
72 | + printer.local, | ||
73 | + (max(pc1.prints) - min(pc2.prints)) as totalPrints | ||
74 | + FROM CocarBundle:Printer printer | ||
75 | + LEFT JOIN CocarBundle:PrinterCounter pc1 WITH (pc1.printer = printer.id AND pc1.date BETWEEN :start AND :end) | ||
76 | + LEFT JOIN CocarBundle:PrinterCounter pc2 WITH (pc2.printer = printer.id AND pc2.date BETWEEN :start AND :end) | ||
77 | + GROUP BY printer.id, | ||
78 | + printer.name, | ||
79 | + printer.description, | ||
80 | + printer.host, | ||
81 | + printer.serie, | ||
82 | + printer.local | ||
83 | + ORDER BY printer.id ASC"; | ||
84 | + | ||
85 | + return $this->getEntityManager()->createQuery( $_dql ) | ||
86 | + ->setParameter('start', $start) | ||
87 | + ->setParameter('end', $end) | ||
88 | + ->getArrayResult(); | ||
89 | + | ||
90 | + } | ||
91 | + | ||
92 | + /** | ||
93 | + * Classe do relatório geral de impressão no formato CSV detalhado | ||
94 | + * | ||
95 | + * @param $start | ||
96 | + * @param $end | ||
97 | + * @return array | ||
98 | + */ | ||
99 | + public function relatorioCsvGeralDetalhado($start, $end) { | ||
100 | + | ||
101 | + | ||
102 | + $_dql = "SELECT printer.id, | ||
69 | max(pc1.prints) as printsEnd, | 103 | max(pc1.prints) as printsEnd, |
70 | max(pc1.date) as endDate, | 104 | max(pc1.date) as endDate, |
71 | min(pc2.prints) as printsStart, | 105 | min(pc2.prints) as printsStart, |
Resources/views/Printer/index.html.twig
1 | {% extends 'CocarBundle::layout.html.twig' %} | 1 | {% extends 'CocarBundle::layout.html.twig' %} |
2 | 2 | ||
3 | {% block main -%} | 3 | {% block main -%} |
4 | - <h2 class="general-title">Impressoras cadastradas</h2> | 4 | + <h2 class="general-title">{{ "Impressoras Cadastradas"|trans }}</h2> |
5 | <center> | 5 | <center> |
6 | <ul> | 6 | <ul> |
7 | <li> | 7 | <li> |
@@ -9,12 +9,28 @@ | @@ -9,12 +9,28 @@ | ||
9 | {{ form_errors(form) }} | 9 | {{ form_errors(form) }} |
10 | {{ form_widget(form.startDate) }} | 10 | {{ form_widget(form.startDate) }} |
11 | {{ form_widget(form.endDate) }} | 11 | {{ form_widget(form.endDate) }} |
12 | - <button type="submit">Enviar</button> | ||
13 | - <button type="submit" formaction="{{ path('printer_csv') }}">Gerar CSV</button> | 12 | + <button type="submit">{{ "Enviar"|trans }}</button> |
13 | + <button type="submit" formaction="{{ path('printer_csv') }}">{{ "Gerar CSV"|trans }}</button> | ||
14 | + <button type="submit" formaction="{{ path('printer_index_detalhado') }}">{{ "Relatório detalhado"|trans }}</button> | ||
14 | </form> | 15 | </form> |
15 | </li> | 16 | </li> |
16 | </ul> | 17 | </ul> |
17 | </center> | 18 | </center> |
19 | + <br> | ||
20 | + <div class="row-fluid"> | ||
21 | + <div class="span12 flat_box"> | ||
22 | + <div class="padding_20"> | ||
23 | + <p>{{ "Relatório de impressão"|trans }}</p> | ||
24 | + <br> | ||
25 | + <p> | ||
26 | + <ul> | ||
27 | + <li><b>{{ "Data Inicial"|trans }}</b>: {{ start|date }}</li> | ||
28 | + <li><b>{{ "Data Final"|trans }}</b>: {{ end|date }}</li> | ||
29 | + </ul> | ||
30 | + </p> | ||
31 | + </div> | ||
32 | + </div> | ||
33 | + </div> | ||
18 | <table class="records_list"> | 34 | <table class="records_list"> |
19 | <thead> | 35 | <thead> |
20 | <tr> | 36 | <tr> |
@@ -23,10 +39,6 @@ | @@ -23,10 +39,6 @@ | ||
23 | <th>Host</th> | 39 | <th>Host</th> |
24 | <th>Serie</th> | 40 | <th>Serie</th> |
25 | <th>Local</th> | 41 | <th>Local</th> |
26 | - <th>Contador Inicial</th> | ||
27 | - <th>Data Inicial</th> | ||
28 | - <th>Contador Final</th> | ||
29 | - <th>Data Final</th> | ||
30 | <th>Impressões</th> | 42 | <th>Impressões</th> |
31 | <th>Ações</th> | 43 | <th>Ações</th> |
32 | </tr> | 44 | </tr> |
@@ -39,18 +51,6 @@ | @@ -39,18 +51,6 @@ | ||
39 | <td>{{ entity.host }}</td> | 51 | <td>{{ entity.host }}</td> |
40 | <td>{{ entity.serie }}</td> | 52 | <td>{{ entity.serie }}</td> |
41 | <td>{{ entity.local }}</td> | 53 | <td>{{ entity.local }}</td> |
42 | - <td>{{ entity.printsStart }}</td> | ||
43 | - {% if entity.startDate %} | ||
44 | - <td>{{ entity.startDate|date("d/m/Y") }}</td> | ||
45 | - {% else %} | ||
46 | - <td></td> | ||
47 | - {% endif %} | ||
48 | - <td>{{ entity.printsEnd }}</td> | ||
49 | - {% if entity.endDate %} | ||
50 | - <td>{{ entity.endDate|date("d/m/Y") }}</td> | ||
51 | - {% else %} | ||
52 | - <td></td> | ||
53 | - {% endif %} | ||
54 | <td>{{ (entity.printsEnd - entity.printsStart) }}</td> | 54 | <td>{{ (entity.printsEnd - entity.printsStart) }}</td> |
55 | <td> | 55 | <td> |
56 | <ul> | 56 | <ul> |
@@ -66,16 +66,6 @@ | @@ -66,16 +66,6 @@ | ||
66 | {% endfor %} | 66 | {% endfor %} |
67 | </tbody> | 67 | </tbody> |
68 | </table> | 68 | </table> |
69 | - {% if displayAll == 0 %} | ||
70 | - {{ knp_pagination_render(printer, "CocarBundle::pagination.html.twig") }} | ||
71 | - <div style="padding-top:30px"> | ||
72 | - <ul class="tsc_paginationB tsc_paginationB09"> | ||
73 | - <li> | ||
74 | - <a href="{{ path('printer_index', {all: true}) }}">Visualizar todas as impressoras</a> | ||
75 | - </li> | ||
76 | - </ul> | ||
77 | - </div> | ||
78 | - {% endif %} | ||
79 | <ul class="button"> | 69 | <ul class="button"> |
80 | <li> | 70 | <li> |
81 | <a href="{{ path('printer_new') }}"> | 71 | <a href="{{ path('printer_new') }}"> |
@@ -0,0 +1,86 @@ | @@ -0,0 +1,86 @@ | ||
1 | +{% extends 'CocarBundle::layout.html.twig' %} | ||
2 | + | ||
3 | +{% block main -%} | ||
4 | + <h2 class="general-title">Impressoras cadastradas</h2> | ||
5 | + <center> | ||
6 | + <ul> | ||
7 | + <li> | ||
8 | + <form action="{{ path('printer_index_detalhado') }}" method="get" {{ form_enctype(form) }}> | ||
9 | + {{ form_errors(form) }} | ||
10 | + {{ form_widget(form.startDate) }} | ||
11 | + {{ form_widget(form.endDate) }} | ||
12 | + <button type="submit">Enviar</button> | ||
13 | + <button type="submit" formaction="{{ path('printer_csv_detalhado') }}">Gerar CSV</button> | ||
14 | + </form> | ||
15 | + </li> | ||
16 | + </ul> | ||
17 | + </center> | ||
18 | + <table class="records_list"> | ||
19 | + <thead> | ||
20 | + <tr> | ||
21 | + <th>Id</th> | ||
22 | + <th>Nome</th> | ||
23 | + <th>Host</th> | ||
24 | + <th>Serie</th> | ||
25 | + <th>Local</th> | ||
26 | + <th>Contador Inicial</th> | ||
27 | + <th>Data Inicial</th> | ||
28 | + <th>Contador Final</th> | ||
29 | + <th>Data Final</th> | ||
30 | + <th>Impressões</th> | ||
31 | + <th>Ações</th> | ||
32 | + </tr> | ||
33 | + </thead> | ||
34 | + <tbody> | ||
35 | + {% for entity in printer %} | ||
36 | + <tr> | ||
37 | + <td><a href="{{ path('printer_show', { 'id': entity.id }) }}">{{ entity.id }}</a></td> | ||
38 | + <td>{{ entity.name }}</td> | ||
39 | + <td>{{ entity.host }}</td> | ||
40 | + <td>{{ entity.serie }}</td> | ||
41 | + <td>{{ entity.local }}</td> | ||
42 | + <td>{{ entity.printsStart }}</td> | ||
43 | + {% if entity.startDate %} | ||
44 | + <td>{{ entity.startDate|date("d/m/Y") }}</td> | ||
45 | + {% else %} | ||
46 | + <td></td> | ||
47 | + {% endif %} | ||
48 | + <td>{{ entity.printsEnd }}</td> | ||
49 | + {% if entity.endDate %} | ||
50 | + <td>{{ entity.endDate|date("d/m/Y") }}</td> | ||
51 | + {% else %} | ||
52 | + <td></td> | ||
53 | + {% endif %} | ||
54 | + <td>{{ (entity.printsEnd - entity.printsStart) }}</td> | ||
55 | + <td> | ||
56 | + <ul> | ||
57 | + <li> | ||
58 | + <a href="{{ path('printer_show', { 'id': entity.id }) }}">Visualizar</a> | ||
59 | + </li> | ||
60 | + <li> | ||
61 | + <a href="{{ path('printer_edit', { 'id': entity.id }) }}">Editar</a> | ||
62 | + </li> | ||
63 | + </ul> | ||
64 | + </td> | ||
65 | + </tr> | ||
66 | + {% endfor %} | ||
67 | + </tbody> | ||
68 | + </table> | ||
69 | + {% if displayAll == 0 %} | ||
70 | + {{ knp_pagination_render(printer, "CocarBundle::pagination.html.twig") }} | ||
71 | + <div style="padding-top:30px"> | ||
72 | + <ul class="tsc_paginationB tsc_paginationB09"> | ||
73 | + <li> | ||
74 | + <a href="{{ path('printer_index', {all: true}) }}">Visualizar todas as impressoras</a> | ||
75 | + </li> | ||
76 | + </ul> | ||
77 | + </div> | ||
78 | + {% endif %} | ||
79 | + <ul class="button"> | ||
80 | + <li> | ||
81 | + <a href="{{ path('printer_new') }}"> | ||
82 | + Cadastrar uma nova impressora | ||
83 | + </a> | ||
84 | + </li> | ||
85 | + </ul> | ||
86 | + {% endblock %} |
Resources/views/Printer/show.html.twig
@@ -29,6 +29,11 @@ | @@ -29,6 +29,11 @@ | ||
29 | </table> | 29 | </table> |
30 | 30 | ||
31 | <ul class="record_actions"> | 31 | <ul class="record_actions"> |
32 | + <li> | ||
33 | + {% set params = app.request.attributes.get('_route_params') %} | ||
34 | + {% set params = params|merge({'show_log': '1'}) %} | ||
35 | + <a href="{{ path(app.request.attributes.get('_route'), params) }}" title="{{ 'Visualizar log de impressão'|trans }}">{{ 'Log de impressão'|trans }}</a> | ||
36 | + </li> | ||
32 | <li> | 37 | <li> |
33 | <a href="{{ path('printer_index') }}"> | 38 | <a href="{{ path('printer_index') }}"> |
34 | Lista de impressoras | 39 | Lista de impressoras |
@@ -47,4 +52,28 @@ | @@ -47,4 +52,28 @@ | ||
47 | </form> | 52 | </form> |
48 | </li> | 53 | </li> |
49 | </ul> | 54 | </ul> |
55 | + {% if app.request.get('show_log') %} | ||
56 | + <br> | ||
57 | + <br> | ||
58 | + <table class="records_list"> | ||
59 | + <thead> | ||
60 | + <tr> | ||
61 | + <th>Id</th> | ||
62 | + <th>Data</th> | ||
63 | + <th>Contador</th> | ||
64 | + </tr> | ||
65 | + </thead> | ||
66 | + <tbody> | ||
67 | + {% for reg in log %} | ||
68 | + <tr> | ||
69 | + <td>{{ reg.id }}</td> | ||
70 | + <td>{{ reg.date|date }}</td> | ||
71 | + <td>{{ reg.prints }}</td> | ||
72 | + </tr> | ||
73 | + {% else %} | ||
74 | + <tr><td colspan="5">Registros não encontrados</td></tr> | ||
75 | + {% endfor %} | ||
76 | + </tbody> | ||
77 | + </table> | ||
78 | + {% endif %} | ||
50 | {% endblock %} | 79 | {% endblock %} |