Commit bae001ae authored by Marcelo's avatar Marcelo
Browse files

inicio projeto

parents
Showing with 2392 additions and 0 deletions
+2392 -0
/nbproject/
\ No newline at end of file
<?php
/*
* This file is part of the Novo SGA project.
*
* (c) Rogerio Lino <rogeriolino@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Novosga\MonitorBundle\Controller;
use App\Service\SecurityService;
use Exception;
use Novosga\Entity\Atendimento;
use Novosga\Entity\Unidade;
use Novosga\Http\Envelope;
use Novosga\MonitorBundle\Form\TransferirType;
use Novosga\Service\AtendimentoService;
use Novosga\Service\FilaService;
use Novosga\Service\ServicoService;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Translation\TranslatorInterface;
/**
* DefaultController
*
* @author Rogerio Lino <rogeriolino@gmail.com>
*/
class DefaultController extends AbstractController
{
const DOMAIN = 'NovosgaMonitorBundle';
/**
*
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/", name="novosga_monitor_index", methods={"GET"})
*/
public function index(Request $request, ServicoService $servicoService, SecurityService $securityService)
{
$usuario = $this->getUser();
$unidade = $usuario->getLotacao()->getUnidade();
$servicos = $servicoService->servicosUnidade($unidade, ['ativo' => true]);
$transferirForm = $this->createTransferirForm($request, $servicoService);
return $this->render('@NovosgaMonitor/default/index.html.twig', [
'usuario' => $usuario,
'unidade' => $unidade,
'servicos' => $servicos,
'transferirForm' => $transferirForm->createView(),
'milis' => time() * 1000,
'wsSecret' => $securityService->getWebsocketSecret(),
]);
}
/**
*
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/ajax_update", name="novosga_monitor_ajaxupdate", methods={"GET"})
*/
public function ajaxUpdate(
Request $request,
ServicoService $servicoService,
FilaService $filaService
) {
$envelope = new Envelope();
$usuario = $this->getUser();
$unidade = $usuario->getLotacao()->getUnidade();
$data = [];
$param = $request->get('ids');
$ids = explode(',', $param ?: '0');
if (count($ids)) {
$servicos = $servicoService->servicosUnidade($unidade, ['servico' => $ids]);
if ($servicos) {
foreach ($servicos as $su) {
$rs = $filaService->filaServico($unidade, $su->getServico());
$total = count($rs);
// prevent overhead
if ($total) {
$fila = [];
foreach ($rs as $atendimento) {
$arr = $atendimento->jsonSerialize(true);
$fila[] = $arr;
}
$data[] = [
'servicoUnidade' => $su,
'fila' => $fila,
];
}
}
}
}
$envelope->setData($data);
return $this->json($envelope);
}
/**
*
* @param Request $request
* @return Response
*
* @Route("/info_senha/{id}", name="novosga_monitor_infosenha", methods={"GET"})
*/
public function infoSenha(Request $request, Atendimento $atendimento, TranslatorInterface $translator)
{
$envelope = new Envelope();
$usuario = $this->getUser();
$unidade = $usuario->getLotacao()->getUnidade();
$this->checkAtendimento($unidade, $atendimento, $translator);
$data = $atendimento->jsonSerialize();
$envelope->setData($data);
return $this->json($envelope);
}
/**
* Busca os atendimentos a partir do número da senha.
*
* @param Request $request
*
* @Route("/buscar", name="novosga_monitor_buscar", methods={"GET"})
*/
public function buscar(Request $request, AtendimentoService $atendimentoService)
{
$envelope = new Envelope();
$usuario = $this->getUser();
$unidade = $usuario->getLotacao()->getUnidade();
$numero = $request->get('numero');
$atendimentos = $atendimentoService->buscaAtendimentos($unidade, $numero);
$envelope->setData($atendimentos);
return $this->json($envelope);
}
/**
* Transfere o atendimento para outro serviço e prioridade.
*
* @param Request $request
*
* @Route("/transferir/{id}", name="novosga_monitor_transferir", methods={"POST"})
*/
public function transferir(
Request $request,
AtendimentoService $atendimentoService,
ServicoService $servicoService,
Atendimento $atendimento,
TranslatorInterface $translator
) {
$envelope = new Envelope();
$usuario = $this->getUser();
$unidade = $usuario->getLotacao()->getUnidade();
$this->checkAtendimento($unidade, $atendimento, $translator);
$data = json_decode($request->getContent(), true);
$transferirForm = $this->createTransferirForm($request, $servicoService);
$transferirForm->submit($data);
if (!$transferirForm->isValid()) {
throw new Exception($translator->trans('error.invalid_form', [], self::DOMAIN));
}
$servicoUnidade = $transferirForm->get('servico')->getData();
$prioridade = $transferirForm->get('prioridade')->getData();
$atendimentoService->transferir(
$atendimento,
$unidade,
$servicoUnidade->getServico(),
$prioridade
);
return $this->json($envelope);
}
/**
* Reativa o atendimento para o mesmo serviço e mesma prioridade.
* Só pode reativar atendimentos que foram: Cancelados ou Não Compareceu.
*
* @param Request $request
*
* @Route("/reativar/{id}", name="novosga_monitor_reativar", methods={"POST"})
*/
public function reativar(
Request $request,
Atendimento $atendimento,
AtendimentoService $atendimentoService,
TranslatorInterface $translator
) {
$envelope = new Envelope();
$usuario = $this->getUser();
$unidade = $usuario->getLotacao()->getUnidade();
$statuses = [AtendimentoService::SENHA_CANCELADA, AtendimentoService::NAO_COMPARECEU];
if ($atendimento->getUnidade()->getId() !== $unidade->getId()) {
throw new Exception($translator->trans('error.reactive.invalid_unity', [], self::DOMAIN));
}
if (!in_array($atendimento->getStatus(), $statuses)) {
throw new Exception($translator->trans('error.reactive.invalid_status', [], self::DOMAIN));
}
$atendimentoService->reativar($atendimento, $unidade);
return $this->json($envelope);
}
/**
* Atualiza o status da senha para cancelado.
*
* @param Request $request
*
* @Route("/cancelar/{id}", name="novosga_monitor_cancelar", methods={"POST"})
*/
public function cancelar(
Request $request,
AtendimentoService $atendimentoService,
Atendimento $atendimento,
TranslatorInterface $translator
) {
$envelope = new Envelope();
$usuario = $this->getUser();
$unidade = $usuario->getLotacao()->getUnidade();
$this->checkAtendimento($unidade, $atendimento, $translator);
$atendimentoService->cancelar($atendimento);
return $this->json($envelope);
}
/**
* @return TransferirType
*/
private function createTransferirForm(Request $request, ServicoService $servicoService)
{
$usuario = $this->getUser();
$unidade = $usuario->getLotacao()->getUnidade();
$servicos = $servicoService->servicosUnidade($unidade, ['ativo' => true]);
$transferirForm = $this->createForm(TransferirType::class, null, [
'csrf_protection' => false,
'servicos' => $servicos,
]);
return $transferirForm;
}
private function checkAtendimento(Unidade $unidade, Atendimento $atendimento, TranslatorInterface $translator)
{
if ($atendimento->getUnidade()->getId() != $unidade->getId()) {
throw new Exception($translator->trans('error.ticket.invalid_unity', [], self::DOMAIN));
}
}
}
<?php
/*
* This file is part of the Novo SGA project.
*
* (c) Rogerio Lino <rogeriolino@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Novosga\MonitorBundle\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
/**
* @author Rogerio Lino <rogeriolino@gmail.com>
*/
class NovosgaMonitorExtension extends Extension
{
/**
* {@inheritDoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
}
}
<?php
/*
* This file is part of the Novo SGA project.
*
* (c) Rogerio Lino <rogeriolino@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Novosga\MonitorBundle\Form;
use Doctrine\ORM\EntityRepository;
use Novosga\Entity\Prioridade;
use Novosga\Entity\ServicoUnidade;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class TransferirType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$servicos = $options['servicos'];
$builder
->add('servico', EntityType::class, [
'class' => ServicoUnidade::class,
'choices' => $servicos,
'placeholder' => '',
'label' => 'transferir.type.servico',
'translation_domain' => 'NovosgaMonitorBundle',
])
->add('prioridade', EntityType::class, [
'class' => Prioridade::class,
'query_builder' => function (EntityRepository $repo) {
return $repo->createQueryBuilder('e')
->where('e.ativo = TRUE')
->orderBy('e.peso', 'ASC')
->addOrderBy('e.nome', 'ASC');
},
'placeholder' => '',
'label' => 'transferir.type.prioridade',
'translation_domain' => 'NovosgaMonitorBundle',
])
;
}
public function configureOptions(\Symfony\Component\OptionsResolver\OptionsResolver $resolver)
{
$resolver->setRequired('servicos');
}
public function getBlockPrefix()
{
return null;
}
}
LICENSE 0 → 100644
Copyright (c) 2012-2016 Rogerio Lino
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
<?php
/*
* This file is part of the Novo SGA project.
*
* (c) Rogerio Lino <rogeriolino@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Novosga\MonitorBundle;
use Novosga\Module\BaseModule;
class NovosgaMonitorBundle extends BaseModule
{
public function getIconName()
{
return 'desktop';
}
public function getDisplayName()
{
return 'module.name';
}
public function getHomeRoute()
{
return 'novosga_monitor_index';
}
}
# monitor-bundle
NovoSGA v2.0 monitor module.
services:
# default configuration for services in *this* file
_defaults:
# automatically injects dependencies in your services
autowire: true
# automatically registers your services as commands, event subscribers, etc.
autoconfigure: true
# this means you cannot fetch services directly from the container via $container->get()
# if you need to do this, you can override this setting on individual services
public: false
Novosga\MonitorBundle\Controller\:
resource: '../../Controller'
tags: ['controller.service_arguments']
\ No newline at end of file
/**
* Novo SGA - Monitor
* @author Rogerio Lino <rogeriolino@gmail.com>
*/
body>section {
padding: 20px 10px;
}
#monitor .search {
padding: 5px;
}
#monitor .card { margin-bottom: 10px }
#monitor .servicos {
padding: 20px 0;
}
#monitor .servicos li.prioridade a {
color: red;
}
#dialog-transfere div #transfere_numero {
font-size: 22px;
display: block;
}
#dialog-busca .modal-dialog {
max-width: 90%;
}
\ No newline at end of file
/**
* Novo SGA - Monitor
* @author Rogerio Lino <rogeriolino@gmail.com>
*/
(function () {
'use strict'
var app = new Vue({
el: '#monitor',
data: {
search: '',
searchResult: [],
servicos: [],
atendimento: null,
novoServico: '',
novaPrioridade: '',
connected: false
},
methods: {
init: function () {
var self = this;
App.Websocket.connect();
App.Websocket.on('connect', function () {
console.log('connected!');
App.Websocket.emit('register user', {
secret: wsSecret,
user: usuario.id,
unity: unidade.id
});
});
// ajax polling fallback
App.Websocket.on('reconnect_failed', function () {
App.Websocket.connect();
console.log('ws timeout, ajax polling fallback');
self.connected = false;
self.update();
});
App.Websocket.on('register ok', function () {
console.log('registered!');
self.connected = true;
});
App.Websocket.on('update queue', function () {
console.log('update queue: do update!');
self.update();
});
self.update();
},
update: function () {
var self = this;
App.ajax({
url: App.url('/novosga.monitor/ajax_update'),
data: {
ids: ids.join(',')
},
success: function (response) {
self.servicos = response.data;
}
});
},
/**
* Busca informacoes do atendimento pelo id.
*/
view: function (atendimento) {
var self = this;
App.ajax({
url: App.url('/novosga.monitor/info_senha/') + atendimento.id,
success: function (response) {
self.atendimento = response.data;
$('#dialog-view').modal('show');
}
});
},
consulta: function () {
$('#dialog-busca').modal('show');
this.consultar();
},
consultar: function () {
var self = this;
App.ajax({
url: App.url('/novosga.monitor/buscar'),
data: {
numero: self.search
},
success: function (response) {
self.searchResult = response.data;
}
});
},
transfere: function (atendimento) {
this.atendimento = atendimento;
$('#dialog-transfere').modal('show');
},
transferir: function (atendimento, novoServico, novaPrioridade) {
var self = this;
swal({
title: alertTitle,
text: alertTransferir,
type: "warning",
buttons: [
labelNao,
labelSim
],
//dangerMode: true,
})
.then(function (ok) {
if (!ok) {
return;
}
App.ajax({
url: App.url('/novosga.monitor/transferir/') + atendimento.id,
type: 'post',
data: {
servico: novoServico,
prioridade: novaPrioridade
},
success: function () {
App.Websocket.emit('change ticket', {
unity: unidade.id
});
$('.modal').modal('hide');
if (!self.connected) {
self.update();
}
}
});
});
},
reativar: function(atendimento) {
var self = this;
swal({
title: alertTitle,
text: alertReativar,
type: "warning",
buttons: [
labelNao,
labelSim
],
//dangerMode: true,
})
.then(function (ok) {
if (!ok) {
return;
}
App.ajax({
url: App.url('/novosga.monitor/reativar/') + atendimento.id,
type: 'post',
success: function () {
App.Websocket.emit('change ticket', {
unity: unidade.id
});
$('.modal').modal('hide');
if (!self.connected) {
self.update();
}
}
});
});
},
cancelar: function(atendimento) {
var self = this;
swal({
title: alertTitle,
text: alertCancelar,
type: "warning",
buttons: [
labelNao,
labelSim
],
//dangerMode: true,
})
.then(function (ok) {
if (!ok) {
return;
}
App.ajax({
url: App.url('/novosga.monitor/cancelar/') + atendimento.id,
type: 'post',
success: function () {
App.Websocket.emit('change ticket', {
unity: unidade.id
});
$('.modal').modal('hide');
if (!self.connected) {
self.update();
}
}
});
});
},
totalPorSituacao: function (fila, prioridade) {
var filtered = fila.filter(function (atendimento) {
if (prioridade) {
return atendimento.prioridade.peso > 0;
}
return atendimento.prioridade.peso === 0;
});
return filtered.length;
}
}
});
app.init();
})();
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" ?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file datatype="plaintext" original="messages.pt_BR.xlf" source-language="pt-BR" target-language="en">
<body>
<trans-unit id="0">
<source>module.name</source>
<target>Monitor</target>
</trans-unit>
<trans-unit id="1">
<source>title</source>
<target>Monitor</target>
</trans-unit>
<trans-unit id="2">
<source>subtitle</source>
<target>Manage unit attendance</target>
</trans-unit>
<trans-unit id="3">
<source>button.find</source>
<target>Search</target>
</trans-unit>
<trans-unit id="4">
<source>placeholder.search</source>
<target>Ticket search</target>
</trans-unit>
<trans-unit id="5">
<source>label.no_priority</source>
<target>Normal</target>
</trans-unit>
<trans-unit id="6">
<source>label.priority</source>
<target>Priority</target>
</trans-unit>
<trans-unit id="7">
<source>label.total</source>
<target>Total</target>
</trans-unit>
<trans-unit id="8">
<source>modal.attendance</source>
<target>Attending</target>
</trans-unit>
<trans-unit id="9">
<source>modal.attendance.ticket</source>
<target>Ticket</target>
</trans-unit>
<trans-unit id="10">
<source>label.service</source>
<target>Service</target>
</trans-unit>
<trans-unit id="11">
<source>label.ticket.wait_time</source>
<target>Waiting time</target>
</trans-unit>
<trans-unit id="12">
<source>label.customer</source>
<target>Customer</target>
</trans-unit>
<trans-unit id="13">
<source>label.customer.name</source>
<target>Name</target>
</trans-unit>
<trans-unit id="14">
<source>label.customer.id</source>
<target>Name</target>
</trans-unit>
<trans-unit id="15">
<source>label.yes</source>
<target>Yes</target>
</trans-unit>
<trans-unit id="16">
<source>label.no</source>
<target>No</target>
</trans-unit>
<trans-unit id="17">
<source>alert.title</source>
<target>Alert</target>
</trans-unit>
<trans-unit id="18">
<source>alert.cancel.text</source>
<target>Do you really wish to cancel that ticket?</target>
</trans-unit>
<trans-unit id="19">
<source>alert.reactivate.text</source>
<target>Do you really wish to reactivate that ticket?</target>
</trans-unit>
<trans-unit id="20">
<source>alert.transfer.text</source>
<target>Do you really want to transfer this ticket?</target>
</trans-unit>
<trans-unit id="21">
<source>modal.attendance.button.reactivate</source>
<target>Reactivate ticket</target>
</trans-unit>
<trans-unit id="22">
<source>modal.attendance.button.transfer</source>
<target>Transfer / change ticket</target>
</trans-unit>
<trans-unit id="23">
<source>modal.attendance.button.cancel</source>
<target>Cancel ticket</target>
</trans-unit>
<trans-unit id="24">
<source>modal.transfer</source>
<target>Transfer ticket</target>
</trans-unit>
<trans-unit id="25">
<source>modal.transfer.button</source>
<target>Transfer</target>
</trans-unit>
<trans-unit id="35">
<source>modal.search</source>
<target>Search</target>
</trans-unit>
<trans-unit id="36">
<source>modal.search.placeholder</source>
<target>Full ticket code, letters or number</target>
</trans-unit>
<trans-unit id="37">
<source>label.ticket.number</source>
<target>Number</target>
</trans-unit>
<trans-unit id="38">
<source>label.ticket.arrival_date</source>
<target>Date of arrival</target>
</trans-unit>
<trans-unit id="39">
<source>label.ticket.start_date</source>
<target>Start date</target>
</trans-unit>
<trans-unit id="40">
<source>label.ticket.end_date</source>
<target>End date</target>
</trans-unit>
<trans-unit id="41">
<source>label.triage</source>
<target>Screening</target>
</trans-unit>
<trans-unit id="42">
<source>label.ticket.user</source>
<target>Attendant</target>
</trans-unit>
<trans-unit id="43">
<source>label.status</source>
<target>Status</target>
</trans-unit>
<trans-unit id="44">
<source>MM/DD/YYYY HH:mm:ss</source>
<target>MM/DD/YYYY hh:mm:ss</target>
</trans-unit>
<trans-unit id="49">
<source>modal.search.button.submit</source>
<target>Search</target>
</trans-unit>
<trans-unit id="50">
<source>server.datetime</source>
<target>Server datetime</target>
</trans-unit>
<trans-unit id="51">
<source>transferir.type.servico</source>
<target>New service</target>
</trans-unit>
<trans-unit id="52">
<source>transferir.type.prioridade</source>
<target>New priority</target>
</trans-unit>
<trans-unit id="53">
<source>error.invalid_form</source>
<target>Invalid form</target>
</trans-unit>
<trans-unit id="54">
<source>error.reactive.invalid_unity</source>
<target>Attempting to reactivate a service from another unit.</target>
</trans-unit>
<trans-unit id="55">
<source>error.reactive.invalid_status</source>
<target>You can only re-enable a canceled or failed call.</target>
</trans-unit>
<trans-unit id="56">
<source>error.ticket.invalid_unity</source>
<target>Invalid attending</target>
</trans-unit>
</body>
</file>
</xliff>
\ No newline at end of file
<?xml version="1.0" ?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file datatype="plaintext" original="messages.pt_BR.xlf" source-language="pt-BR" target-language="en-US">
<body>
<trans-unit id="0">
<source>module.name</source>
<target>Monitor</target>
</trans-unit>
<trans-unit id="1">
<source>title</source>
<target>Monitor</target>
</trans-unit>
<trans-unit id="2">
<source>subtitle</source>
<target>Manage unit attendance</target>
</trans-unit>
<trans-unit id="3">
<source>button.find</source>
<target>Search</target>
</trans-unit>
<trans-unit id="4">
<source>placeholder.search</source>
<target>Ticket search</target>
</trans-unit>
<trans-unit id="5">
<source>label.no_priority</source>
<target>Normal</target>
</trans-unit>
<trans-unit id="6">
<source>label.priority</source>
<target>Priority</target>
</trans-unit>
<trans-unit id="7">
<source>label.total</source>
<target>Total</target>
</trans-unit>
<trans-unit id="8">
<source>modal.attendance</source>
<target>Attendance</target>
</trans-unit>
<trans-unit id="9">
<source>modal.attendance.ticket</source>
<target>Ticket</target>
</trans-unit>
<trans-unit id="10">
<source>label.service</source>
<target>Service</target>
</trans-unit>
<trans-unit id="11">
<source>label.ticket.wait_time</source>
<target>Waiting time</target>
</trans-unit>
<trans-unit id="12">
<source>label.customer</source>
<target>Customer </target>
</trans-unit>
<trans-unit id="13">
<source>label.customer.name</source>
<target>Name</target>
</trans-unit>
<trans-unit id="14">
<source>label.customer.id</source>
<target>Name</target>
</trans-unit>
<trans-unit id="15">
<source>label.yes</source>
<target>Yes</target>
</trans-unit>
<trans-unit id="16">
<source>label.no</source>
<target>No</target>
</trans-unit>
<trans-unit id="17">
<source>alert.title</source>
<target>Attention!</target>
</trans-unit>
<trans-unit id="18">
<source>alert.cancel.text</source>
<target>Do you really want to cancel this ticket?</target>
</trans-unit>
<trans-unit id="19">
<source>alert.reactivate.text</source>
<target>Do you really want to reactivate this ticket?</target>
</trans-unit>
<trans-unit id="20">
<source>alert.transfer.text</source>
<target>Do you really want to transfer this ticket?</target>
</trans-unit>
<trans-unit id="21">
<source>modal.attendance.button.reactivate</source>
<target>Re-enable ticket</target>
</trans-unit>
<trans-unit id="22">
<source>modal.attendance.button.transfer</source>
<target>Transfer / Change ticket</target>
</trans-unit>
<trans-unit id="23">
<source>modal.attendance.button.cancel</source>
<target>Cancel ticket</target>
</trans-unit>
<trans-unit id="24">
<source>modal.transfer</source>
<target>Transfer ticket</target>
</trans-unit>
<trans-unit id="25">
<source>modal.transfer.button</source>
<target>Download</target>
</trans-unit>
<trans-unit id="35">
<source>modal.search</source>
<target>Find</target>
</trans-unit>
<trans-unit id="36">
<source>modal.search.placeholder</source>
<target>Complete ticket, letters or number</target>
</trans-unit>
<trans-unit id="37">
<source>label.ticket.number</source>
<target>Number</target>
</trans-unit>
<trans-unit id="38">
<source>label.ticket.arrival_date</source>
<target>Arrival date</target>
</trans-unit>
<trans-unit id="39">
<source>label.ticket.start_date</source>
<target>Initial date</target>
</trans-unit>
<trans-unit id="40">
<source>label.ticket.end_date</source>
<target>Final date</target>
</trans-unit>
<trans-unit id="41">
<source>label.triage</source>
<target>Screening</target>
</trans-unit>
<trans-unit id="42">
<source>label.ticket.user</source>
<target>Operator</target>
</trans-unit>
<trans-unit id="43">
<source>label.status</source>
<target>Status</target>
</trans-unit>
<trans-unit id="44">
<source>MM/DD/YYYY HH:mm:ss</source>
<target>MM/DD/YYYY hh:mm:ss</target>
</trans-unit>
<trans-unit id="49">
<source>modal.search.button.submit</source>
<target>Search</target>
</trans-unit>
<trans-unit id="50">
<source>server.datetime</source>
<target>Date and time on server</target>
</trans-unit>
<trans-unit id="51">
<source>transferir.type.servico</source>
<target>New service</target>
</trans-unit>
<trans-unit id="52">
<source>transferir.type.prioridade</source>
<target>New priority </target>
</trans-unit>
<trans-unit id="53">
<source>error.invalid_form</source>
<target>Invalid form</target>
</trans-unit>
<trans-unit id="54">
<source>error.reactive.invalid_unity</source>
<target>Attempting to reactivate a service from another unit.</target>
</trans-unit>
<trans-unit id="55">
<source>error.reactive.invalid_status</source>
<target>You can only re-enable a canceled or failed call.</target>
</trans-unit>
<trans-unit id="56">
<source>error.ticket.invalid_unity</source>
<target>Invalid service</target>
</trans-unit>
</body>
</file>
</xliff>
\ No newline at end of file
<?xml version="1.0" ?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file datatype="plaintext" original="messages.pt_BR.xlf" source-language="pt-BR" target-language="es">
<body>
<trans-unit id="0">
<source>module.name</source>
<target>Monitor</target>
</trans-unit>
<trans-unit id="1">
<source>title</source>
<target>Monitor</target>
</trans-unit>
<trans-unit id="2">
<source>subtitle</source>
<target>Administrar las atenciones de la unidad</target>
</trans-unit>
<trans-unit id="3">
<source>button.find</source>
<target>Consultar</target>
</trans-unit>
<trans-unit id="4">
<source>placeholder.search</source>
<target>Buscar Turno</target>
</trans-unit>
<trans-unit id="5">
<source>label.no_priority</source>
<target>Normal</target>
</trans-unit>
<trans-unit id="6">
<source>label.priority</source>
<target>Prioridad</target>
</trans-unit>
<trans-unit id="7">
<source>label.total</source>
<target>Total</target>
</trans-unit>
<trans-unit id="8">
<source>modal.attendance</source>
<target>Tratamiento</target>
</trans-unit>
<trans-unit id="9">
<source>modal.attendance.ticket</source>
<target>Billete</target>
</trans-unit>
<trans-unit id="10">
<source>label.service</source>
<target>Servicio</target>
</trans-unit>
<trans-unit id="11">
<source>label.ticket.wait_time</source>
<target>Tiempo de espera</target>
</trans-unit>
<trans-unit id="12">
<source>label.customer</source>
<target>Cliente</target>
</trans-unit>
<trans-unit id="13">
<source>label.customer.name</source>
<target>Nombre</target>
</trans-unit>
<trans-unit id="14">
<source>label.customer.id</source>
<target>Nombre</target>
</trans-unit>
<trans-unit id="15">
<source>label.yes</source>
<target>Si</target>
</trans-unit>
<trans-unit id="16">
<source>label.no</source>
<target>No</target>
</trans-unit>
<trans-unit id="17">
<source>alert.title</source>
<target>Atención</target>
</trans-unit>
<trans-unit id="18">
<source>alert.cancel.text</source>
<target>Desea realmente cancelar ese número?</target>
</trans-unit>
<trans-unit id="19">
<source>alert.reactivate.text</source>
<target>Desea realmente reactivar ese número?</target>
</trans-unit>
<trans-unit id="20">
<source>alert.transfer.text</source>
<target>¿Desea realmente transferir esta ese numero?</target>
</trans-unit>
<trans-unit id="21">
<source>modal.attendance.button.reactivate</source>
<target>Reactivar número</target>
</trans-unit>
<trans-unit id="22">
<source>modal.attendance.button.transfer</source>
<target>Transferir / Modificar número</target>
</trans-unit>
<trans-unit id="23">
<source>modal.attendance.button.cancel</source>
<target>Cancelar número</target>
</trans-unit>
<trans-unit id="24">
<source>modal.transfer</source>
<target>Transferir número</target>
</trans-unit>
<trans-unit id="25">
<source>modal.transfer.button</source>
<target>Tranferir</target>
</trans-unit>
<trans-unit id="35">
<source>modal.search</source>
<target>Busca</target>
</trans-unit>
<trans-unit id="36">
<source>modal.search.placeholder</source>
<target>Contraseña completa, sigla o número</target>
</trans-unit>
<trans-unit id="37">
<source>label.ticket.number</source>
<target>Número</target>
</trans-unit>
<trans-unit id="38">
<source>label.ticket.arrival_date</source>
<target>Date de llegada</target>
</trans-unit>
<trans-unit id="39">
<source>label.ticket.start_date</source>
<target>Data de inicio</target>
</trans-unit>
<trans-unit id="40">
<source>label.ticket.end_date</source>
<target>Data de finalización</target>
</trans-unit>
<trans-unit id="41">
<source>label.triage</source>
<target>Selección</target>
</trans-unit>
<trans-unit id="42">
<source>label.ticket.user</source>
<target>Operador</target>
</trans-unit>
<trans-unit id="43">
<source>label.status</source>
<target>Situación</target>
</trans-unit>
<trans-unit id="44">
<source>MM/DD/YYYY HH:mm:ss</source>
<target>DD/MM/YYYY hh:mm:ss</target>
</trans-unit>
<trans-unit id="49">
<source>modal.search.button.submit</source>
<target>Consultar</target>
</trans-unit>
<trans-unit id="50">
<source>server.datetime</source>
<target>Fecha y hora en el servidor</target>
</trans-unit>
<trans-unit id="51">
<source>transferir.type.servico</source>
<target>Nuevo servicio</target>
</trans-unit>
<trans-unit id="52">
<source>transferir.type.prioridade</source>
<target>Nueva prioridad</target>
</trans-unit>
<trans-unit id="53">
<source>error.invalid_form</source>
<target>Formulario no válido</target>
</trans-unit>
<trans-unit id="54">
<source>error.reactive.invalid_unity</source>
<target>Intentando reavitvar una atención de otra unidad.</target>
</trans-unit>
<trans-unit id="55">
<source>error.reactive.invalid_status</source>
<target>Sólo es posible reactivar una atención cancelada o que no ha presentado.</target>
</trans-unit>
<trans-unit id="56">
<source>error.ticket.invalid_unity</source>
<target>Atención inválida</target>
</trans-unit>
</body>
</file>
</xliff>
\ No newline at end of file
<?xml version="1.0" ?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file datatype="plaintext" original="messages.pt_BR.xlf" source-language="pt-BR" target-language="es-AR">
<body>
<trans-unit id="0">
<source>module.name</source>
<target>Monitor</target>
</trans-unit>
<trans-unit id="1">
<source>title</source>
<target>Monitor</target>
</trans-unit>
<trans-unit id="2">
<source>subtitle</source>
<target>Administre las atenciones de la Unidad</target>
</trans-unit>
<trans-unit id="3">
<source>button.find</source>
<target>Consultar</target>
</trans-unit>
<trans-unit id="4">
<source>placeholder.search</source>
<target>Buscar turno</target>
</trans-unit>
<trans-unit id="5">
<source>label.no_priority</source>
<target>Normal</target>
</trans-unit>
<trans-unit id="6">
<source>label.priority</source>
<target>Prioridad</target>
</trans-unit>
<trans-unit id="7">
<source>label.total</source>
<target>Total</target>
</trans-unit>
<trans-unit id="8">
<source>modal.attendance</source>
<target>Atención</target>
</trans-unit>
<trans-unit id="9">
<source>modal.attendance.ticket</source>
<target>Turno</target>
</trans-unit>
<trans-unit id="10">
<source>label.service</source>
<target>Servicio</target>
</trans-unit>
<trans-unit id="11">
<source>label.ticket.wait_time</source>
<target>Tiempo de espera</target>
</trans-unit>
<trans-unit id="12">
<source>label.customer</source>
<target>Cliente</target>
</trans-unit>
<trans-unit id="13">
<source>label.customer.name</source>
<target>Nombre</target>
</trans-unit>
<trans-unit id="14">
<source>label.customer.id</source>
<target>Nombre</target>
</trans-unit>
<trans-unit id="15">
<source>label.yes</source>
<target></target>
</trans-unit>
<trans-unit id="16">
<source>label.no</source>
<target>No</target>
</trans-unit>
<trans-unit id="17">
<source>alert.title</source>
<target>Atención</target>
</trans-unit>
<trans-unit id="18">
<source>alert.cancel.text</source>
<target>Desea realmente cancelar ese número?</target>
</trans-unit>
<trans-unit id="19">
<source>alert.reactivate.text</source>
<target>Desea realmente reactivar ese número?</target>
</trans-unit>
<trans-unit id="20">
<source>alert.transfer.text</source>
<target>Realmente desea transferir este turno?</target>
</trans-unit>
<trans-unit id="21">
<source>modal.attendance.button.reactivate</source>
<target>Reactivar turno</target>
</trans-unit>
<trans-unit id="22">
<source>modal.attendance.button.transfer</source>
<target>Transferir / Modificar turno</target>
</trans-unit>
<trans-unit id="23">
<source>modal.attendance.button.cancel</source>
<target>Cancelar turno</target>
</trans-unit>
<trans-unit id="24">
<source>modal.transfer</source>
<target>Transferir turno</target>
</trans-unit>
<trans-unit id="25">
<source>modal.transfer.button</source>
<target>Transferir</target>
</trans-unit>
<trans-unit id="35">
<source>modal.search</source>
<target>Busca</target>
</trans-unit>
<trans-unit id="36">
<source>modal.search.placeholder</source>
<target>Turno completo, sigla o número</target>
</trans-unit>
<trans-unit id="37">
<source>label.ticket.number</source>
<target>Número</target>
</trans-unit>
<trans-unit id="38">
<source>label.ticket.arrival_date</source>
<target>Hora de ingreso</target>
</trans-unit>
<trans-unit id="39">
<source>label.ticket.start_date</source>
<target>Hora de inicio</target>
</trans-unit>
<trans-unit id="40">
<source>label.ticket.end_date</source>
<target>Hora de finalización</target>
</trans-unit>
<trans-unit id="41">
<source>label.triage</source>
<target>Selección</target>
</trans-unit>
<trans-unit id="42">
<source>label.ticket.user</source>
<target>Operador</target>
</trans-unit>
<trans-unit id="43">
<source>label.status</source>
<target>Situación</target>
</trans-unit>
<trans-unit id="44">
<source>MM/DD/YYYY HH:mm:ss</source>
<target>DD/MM/YYYY hh:mm:ss</target>
</trans-unit>
<trans-unit id="49">
<source>modal.search.button.submit</source>
<target>Consultar</target>
</trans-unit>
<trans-unit id="50">
<source>server.datetime</source>
<target>Fecha y hora en el servidor</target>
</trans-unit>
<trans-unit id="51">
<source>transferir.type.servico</source>
<target>Nuevo servicio</target>
</trans-unit>
<trans-unit id="52">
<source>transferir.type.prioridade</source>
<target>Nueva prioridad</target>
</trans-unit>
<trans-unit id="53">
<source>error.invalid_form</source>
<target>Formulario Inválido</target>
</trans-unit>
<trans-unit id="54">
<source>error.reactive.invalid_unity</source>
<target>Intentando reactivar una atención de otra unidad.</target>
</trans-unit>
<trans-unit id="55">
<source>error.reactive.invalid_status</source>
<target>Sólo es posible reactivar una llamada cancelada o que no ha sido atendida.</target>
</trans-unit>
<trans-unit id="56">
<source>error.ticket.invalid_unity</source>
<target>Atención inválida</target>
</trans-unit>
</body>
</file>
</xliff>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="pt-BR" target-language="pt-BR" datatype="plaintext" original="messages.pt_BR.xlf">
<body>
<trans-unit id="0">
<source>module.name</source>
<target>Monitor</target>
</trans-unit>
<trans-unit id="1">
<source>title</source>
<target>Monitor</target>
</trans-unit>
<trans-unit id="2">
<source>subtitle</source>
<target>Gerencie os atendimentos da unidade</target>
</trans-unit>
<trans-unit id="3">
<source>button.find</source>
<target>Consultar</target>
</trans-unit>
<trans-unit id="4">
<source>placeholder.search</source>
<target>Buscar senha</target>
</trans-unit>
<trans-unit id="5">
<source>label.no_priority</source>
<target>Normal</target>
</trans-unit>
<trans-unit id="6">
<source>label.priority</source>
<target>Prioridade</target>
</trans-unit>
<trans-unit id="7">
<source>label.total</source>
<target>Total</target>
</trans-unit>
<trans-unit id="8">
<source>modal.attendance</source>
<target>Atendimento</target>
</trans-unit>
<trans-unit id="9">
<source>modal.attendance.ticket</source>
<target>Senha</target>
</trans-unit>
<trans-unit id="10">
<source>label.service</source>
<target>Serviço</target>
</trans-unit>
<trans-unit id="11">
<source>label.ticket.wait_time</source>
<target>Tempo de espera</target>
</trans-unit>
<trans-unit id="12">
<source>label.customer</source>
<target>Cliente</target>
</trans-unit>
<trans-unit id="13">
<source>label.customer.name</source>
<target>Nome</target>
</trans-unit>
<trans-unit id="14">
<source>label.customer.id</source>
<target>Nome</target>
</trans-unit>
<trans-unit id="15">
<source>label.yes</source>
<target>Sim</target>
</trans-unit>
<trans-unit id="16">
<source>label.no</source>
<target>Não</target>
</trans-unit>
<trans-unit id="17">
<source>alert.title</source>
<target>Atenção</target>
</trans-unit>
<trans-unit id="18">
<source>alert.cancel.text</source>
<target>Deseja realmente cancelar essa senha?</target>
</trans-unit>
<trans-unit id="19">
<source>alert.reactivate.text</source>
<target>Deseja realmente reativar essa senha?</target>
</trans-unit>
<trans-unit id="20">
<source>alert.transfer.text</source>
<target>Deseja realmente transferir essa senha?</target>
</trans-unit>
<trans-unit id="21">
<source>modal.attendance.button.reactivate</source>
<target>Reativar senha</target>
</trans-unit>
<trans-unit id="22">
<source>modal.attendance.button.transfer</source>
<target>Transferir / Alterar senha</target>
</trans-unit>
<trans-unit id="23">
<source>modal.attendance.button.cancel</source>
<target>Cancelar senha</target>
</trans-unit>
<trans-unit id="24">
<source>modal.transfer</source>
<target>Tranferir Senha</target>
</trans-unit>
<trans-unit id="25">
<source>modal.transfer.button</source>
<target>Tranferir</target>
</trans-unit>
<trans-unit id="35">
<source>modal.search</source>
<target>Busca</target>
</trans-unit>
<trans-unit id="36">
<source>modal.search.placeholder</source>
<target>Senha completa, sigla ou número</target>
</trans-unit>
<trans-unit id="37">
<source>label.ticket.number</source>
<target>Número</target>
</trans-unit>
<trans-unit id="38">
<source>label.ticket.arrival_date</source>
<target>Data chegada</target>
</trans-unit>
<trans-unit id="39">
<source>label.ticket.start_date</source>
<target>Data início</target>
</trans-unit>
<trans-unit id="40">
<source>label.ticket.end_date</source>
<target>Data fim</target>
</trans-unit>
<trans-unit id="41">
<source>label.triage</source>
<target>Triagem</target>
</trans-unit>
<trans-unit id="42">
<source>label.ticket.user</source>
<target>Atendente</target>
</trans-unit>
<trans-unit id="43">
<source>label.status</source>
<target>Situação</target>
</trans-unit>
<trans-unit id="44">
<source>MM/DD/YYYY HH:mm:ss</source>
<target>DD/MM/YYYY hh:mm:ss</target>
</trans-unit>
<trans-unit id="49">
<source>modal.search.button.submit</source>
<target>Consultar</target>
</trans-unit>
<trans-unit id="50">
<source>server.datetime</source>
<target>Data e hora no servidor</target>
</trans-unit>
<trans-unit id="51">
<source>transferir.type.servico</source>
<target>Novo serviço</target>
</trans-unit>
<trans-unit id="52">
<source>transferir.type.prioridade</source>
<target>Nova prioridade</target>
</trans-unit>
<trans-unit id="53">
<source>error.invalid_form</source>
<target>Formulário inválido</target>
</trans-unit>
<trans-unit id="54">
<source>error.reactive.invalid_unity</source>
<target>Tentando reavitvar um atendimento de outra unidade.</target>
</trans-unit>
<trans-unit id="55">
<source>error.reactive.invalid_status</source>
<target>Só é possível reativar um atendimento cancelado ou que não compareceu.</target>
</trans-unit>
<trans-unit id="56">
<source>error.ticket.invalid_unity</source>
<target>Atendimento inválido</target>
</trans-unit>
</body>
</file>
</xliff>
<?xml version="1.0" ?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file datatype="plaintext" original="messages.pt_BR.xlf" source-language="pt-BR" target-language="pt-PT">
<body>
<trans-unit id="0">
<source>module.name</source>
<target>Monitor</target>
</trans-unit>
<trans-unit id="1">
<source>title</source>
<target>Monitor</target>
</trans-unit>
<trans-unit id="2">
<source>subtitle</source>
</trans-unit>
<trans-unit id="3">
<source>button.find</source>
<target>Consultar</target>
</trans-unit>
<trans-unit id="4">
<source>placeholder.search</source>
</trans-unit>
<trans-unit id="5">
<source>label.no_priority</source>
<target>Normal</target>
</trans-unit>
<trans-unit id="6">
<source>label.priority</source>
<target>Prioridade</target>
</trans-unit>
<trans-unit id="7">
<source>label.total</source>
<target>Total</target>
</trans-unit>
<trans-unit id="8">
<source>modal.attendance</source>
<target>Atendimento</target>
</trans-unit>
<trans-unit id="9">
<source>modal.attendance.ticket</source>
<target>Senha</target>
</trans-unit>
<trans-unit id="10">
<source>label.service</source>
<target>Serviço</target>
</trans-unit>
<trans-unit id="11">
<source>label.ticket.wait_time</source>
<target>Tempo de espera</target>
</trans-unit>
<trans-unit id="12">
<source>label.customer</source>
<target>Cliente</target>
</trans-unit>
<trans-unit id="13">
<source>label.customer.name</source>
<target>Nome</target>
</trans-unit>
<trans-unit id="14">
<source>label.customer.id</source>
<target>Nome</target>
</trans-unit>
<trans-unit id="15">
<source>label.yes</source>
</trans-unit>
<trans-unit id="16">
<source>label.no</source>
</trans-unit>
<trans-unit id="17">
<source>alert.title</source>
<target>Atenção</target>
</trans-unit>
<trans-unit id="18">
<source>alert.cancel.text</source>
<target>Deseja realmente cancelar essa senha?</target>
</trans-unit>
<trans-unit id="19">
<source>alert.reactivate.text</source>
<target>Deseja realmente reativar essa senha?</target>
</trans-unit>
<trans-unit id="20">
<source>alert.transfer.text</source>
</trans-unit>
<trans-unit id="21">
<source>modal.attendance.button.reactivate</source>
<target>Reativar senha</target>
</trans-unit>
<trans-unit id="22">
<source>modal.attendance.button.transfer</source>
<target>Transferir / Alterar senha</target>
</trans-unit>
<trans-unit id="23">
<source>modal.attendance.button.cancel</source>
<target>Cancelar senha</target>
</trans-unit>
<trans-unit id="24">
<source>modal.transfer</source>
<target>Tranferir Senha</target>
</trans-unit>
<trans-unit id="25">
<source>modal.transfer.button</source>
</trans-unit>
<trans-unit id="35">
<source>modal.search</source>
<target>Pesquisa</target>
</trans-unit>
<trans-unit id="36">
<source>modal.search.placeholder</source>
</trans-unit>
<trans-unit id="37">
<source>label.ticket.number</source>
<target>Número</target>
</trans-unit>
<trans-unit id="38">
<source>label.ticket.arrival_date</source>
<target>Data chegada</target>
</trans-unit>
<trans-unit id="39">
<source>label.ticket.start_date</source>
<target>Data início</target>
</trans-unit>
<trans-unit id="40">
<source>label.ticket.end_date</source>
<target>Data fim</target>
</trans-unit>
<trans-unit id="41">
<source>label.triage</source>
<target>Triagem</target>
</trans-unit>
<trans-unit id="42">
<source>label.ticket.user</source>
<target>Atendente</target>
</trans-unit>
<trans-unit id="43">
<source>label.status</source>
<target>Situação</target>
</trans-unit>
<trans-unit id="44">
<source>MM/DD/YYYY HH:mm:ss</source>
</trans-unit>
<trans-unit id="49">
<source>modal.search.button.submit</source>
<target>Consultar</target>
</trans-unit>
<trans-unit id="50">
<source>server.datetime</source>
<target>Data e hora no servidor</target>
</trans-unit>
<trans-unit id="51">
<source>transferir.type.servico</source>
<target>Novo serviço</target>
</trans-unit>
<trans-unit id="52">
<source>transferir.type.prioridade</source>
<target>Nova prioridade</target>
</trans-unit>
<trans-unit id="53">
<source>error.invalid_form</source>
</trans-unit>
<trans-unit id="54">
<source>error.reactive.invalid_unity</source>
</trans-unit>
<trans-unit id="55">
<source>error.reactive.invalid_status</source>
</trans-unit>
<trans-unit id="56">
<source>error.ticket.invalid_unity</source>
<target>Atendimento inválido</target>
</trans-unit>
</body>
</file>
</xliff>
\ No newline at end of file
{% extends "base.html.twig" %}
{% trans_default_domain 'NovosgaMonitorBundle' %}
{% block title -%}
{{ 'title'|trans }}
{%- endblock %}
\ No newline at end of file
{% extends "@NovosgaMonitor/base.html.twig" %}
{% trans_default_domain 'NovosgaMonitorBundle' %}
{% block body %}
<div id="monitor">
<div class="row">
<div class="col-8">
<h1>
<i class="fa fa-desktop" aria-hidden="true"></i>
{{ 'title'|trans }}
<small>
{{ 'subtitle'|trans }}
</small>
</h1>
</div>
<div class="col-4">
<form class="pull-right" role="search" v-on:submit.prevent="consulta">
<div class="input-group">
<input type="text" class="form-search form-control" placeholder="{{ 'placeholder.search'|trans }}" v-model="search">
<div class="input-group-append">
<button type="submit" class="btn btn-primary" title="{{ 'button.find'|trans }}">
<i class="fa fa-search"></i>
</button>
</div>
</div>
</form>
</div>
</div>
<hr>
<div class="servicos row" v-cloak>
<div class="col-md-12" v-if="servicos.length===0">
<div class="jumbotron text-center">
<h1><i class="fa fa-smile-o"></i></h1>
<p>Ninguém aguardando atendimento no momento</p>
</div>
</div>
<div class="col-md-6" v-for="item in servicos">
<div class="card">
<div class="card-header">
{% verbatim %}
{{ item.servicoUnidade.sigla }} - {{ item.servicoUnidade.servico.nome }}
{% endverbatim %}
<div class="pull-right">
<span class="badge badge-pill badge-primary">
{{ 'label.no_priority'|trans }}
{% verbatim %}
{{ totalPorSituacao(item.fila, false) }}
{% endverbatim %}
</span>
<span class="badge badge-pill badge-danger">
{{ 'label.priority'|trans }}
{% verbatim %}
{{ totalPorSituacao(item.fila, true) }}
{% endverbatim %}
</span>
<span class="badge badge-pill badge-secondary">
{{ 'label.total'|trans }}
{% verbatim %}
{{ item.fila.length }}
{% endverbatim %}
</span>
</div>
</div>
<div class="card-body">
<ul class="fila list-inline">
<li v-for="atendimento in item.fila" v-bind:class="{prioridade: atendimento.prioridade.peso > 0 }" class="list-inline-item">
<a href="#" v-on:click="view(atendimento)" v-bind:title="atendimento.prioridade.nome + ' (' + atendimento.tempoEspera + ')'">
{% verbatim %}
{{atendimento.senha.format}}
{% endverbatim %}
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
{# dialog busca #}
<div id="dialog-busca" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">{{ 'modal.search'|trans }}</h5>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
</div>
<div class="modal-body">
<form class="row" role="form" v-on:submit.prevent="consultar">
<div class="col-3">
<div class="input-group">
<input type="text" maxlength="10" class="form-search form-control" placeholder="{{ 'modal.search.placeholder'|trans }}" v-model="search">
<div class="input-group-append">
<button type="submit" class="btn btn-primary" title="{{ 'modal.search.button.submit'|trans }}">
<i class="fa fa-search"></i>
</button>
</div>
</div>
</div>
</form>
<hr>
<div class="result">
<table class="table table-bordered">
<thead>
<tr>
<th>{{ 'label.ticket.number'|trans }}</th>
<th>{{ 'label.service'|trans }}</th>
<th>{{ 'label.ticket.arrival_date'|trans }}</th>
<th>{{ 'label.ticket.start_date'|trans }}</th>
<th>{{ 'label.ticket.end_date'|trans }}</th>
<th>{{ 'label.triage'|trans }}</th>
<th>{{ 'label.ticket.user'|trans }}</th>
<th>{{ 'label.status'|trans }}</th>
</tr>
</thead>
<tbody>
{% verbatim %}
<tr v-for="atendimento in searchResult" v-bind:class="{danger: (atendimento.status === 'nao_compareceu' || atendimento.status === 'cancelada')}">
<td>
<a href="#" v-on:click.prevent="view(atendimento)">
{{atendimento.senha.format}}
</a>
</td>
<td>
{{atendimento.servico.nome}}
</td>
<td>
<span v-if="atendimento.dataChegada">
{{moment(atendimento.dataChegada, 'YYYY-MM-DD hh:mm:ss').format(dateTimeFormat)}}
</span>
</td>
<td>
<span v-if="atendimento.dataInicio">
{{moment(atendimento.dataInicio, 'YYYY-MM-DD hh:mm:ss').format(dateTimeFormat)}}
</span>
</td>
<td>
<span v-if="atendimento.dataFim">
{{moment(atendimento.dataFim, 'YYYY-MM-DD hh:mm:ss').format(dateTimeFormat)}}
</span>
</td>
<td>
{{atendimento.triagem}}
</td>
<td>
{{atendimento.usuario}}
</td>
<td>
{{atendimento.status}}
</td>
</tr>
{% endverbatim %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{# dialog view #}
<div id="dialog-view" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">{{ 'modal.attendance'|trans }}</h5>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
</div>
<div class="modal-body" v-if="atendimento">
<input type="hidden" v-bind:valuee="atendimento.id" />
<fieldset>
<legend>{{ 'modal.attendance.ticket'|trans }}</legend>
<table class="table table-bordered">
<tr>
<th>
{{ 'label.ticket.number'|trans }}
</th>
<td>
{% verbatim %}
{{atendimento.senha.format}}
{% endverbatim %}
</td>
</tr>
<tr>
<th>
{{ 'label.priority'|trans }}
</th>
<td>
{% verbatim %}
{{atendimento.prioridade.nome}}
{% endverbatim %}
</td>
</tr>
<tr>
<th>
{{ 'label.service'|trans }}
</th>
<td>
{% verbatim %}
{{atendimento.servico.nome}}
{% endverbatim %}
</td>
</tr>
<tr>
<th>
{{ 'label.ticket.arrival_date'|trans }}
</th>
<td>
{% verbatim %}
{{moment(atendimento.dataChegada, 'YYYY-MM-DD hh:mm:ss').format(dateTimeFormat)}}
{% endverbatim %}
</td>
</tr>
<tr>
<th>
{{ 'label.ticket.wait_time'|trans }}
</th>
<td>
{% verbatim %}
{{atendimento.tempoEspera}}
{% endverbatim %}
</td>
</tr>
<tr>
<th>
{{ 'label.ticket.start_date'|trans }}
</th>
<td>
{% verbatim %}
{{atendimento.dataInicio}}
{% endverbatim %}
</td>
</tr>
<tr>
<th>
{{ 'label.ticket.end_date'|trans }}
</th>
<td>
{% verbatim %}
{{atendimento.dataFim}}
{% endverbatim %}
</td>
</tr>
<tr>
<th>
{{ 'label.status'|trans }}
</th>
<td>
{% verbatim %}
{{atendimento.status}}
{% endverbatim %}
</td>
</tr>
</table>
</fieldset>
<fieldset v-if="atendimento.cliente">
<legend>{{ 'label.customer'|trans }}</legend>
<table class="table table-bordered">
<tr>
<th>
{{ 'label.customer.name'|trans }}
</th>
<td>
{% verbatim %}
{{atendimento.cliente.nome}}
{% endverbatim %}
</td>
</tr>
<tr>
<th>
{{ 'label.customer.id'|trans }}
</th>
<td>
{% verbatim %}
{{atendimento.cliente.documento}}
{% endverbatim %}
</td>
</tr>
</table>
</fieldset>
</div>
<div class="modal-footer" v-if="atendimento">
<button type="button" class="btn btn-primary" v-on:click="reativar(atendimento)" v-if="atendimento.status === 'cancelada' || atendimento.status === 'nao_compareceu'">
{{ 'modal.attendance.button.reactivate'|trans }}
</button>
<button type="button" class="btn btn-secondary" v-on:click="transfere(atendimento)" v-if="atendimento.status === 'emitida'">
{{ 'modal.attendance.button.transfer'|trans }}
</button>
<button type="button" class="btn btn-danger" v-on:click="cancelar(atendimento)" v-if="atendimento.status === 'emitida'">
{{ 'modal.attendance.button.cancel'|trans }}
</button>
</div>
</div>
</div>
</div>
{# transfere #}
<div id="dialog-transfere" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
{{ form_start(transferirForm, { attr: { 'v-on:submit.prevent': 'transferir(atendimento, novoServico, novaPrioridade)' } }) }}
<div class="modal-content" v-if="atendimento">
<div class="modal-header">
<h5 class="modal-title">
{{ 'modal.transfer'|trans }}
<span class="badge">
{% verbatim %}
{{atendimento.senha.format}}
{% endverbatim %}
</span>
</h5>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
</div>
<div class="modal-body">
{{ form_row(transferirForm.servico, { attr: { 'v-model': 'novoServico' } }) }}
{{ form_row(transferirForm.prioridade, { attr: { 'v-model': 'novaPrioridade' } }) }}
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">
{{ 'modal.transfer.button'|trans }}
</button>
</div>
</div>
{{ form_end(transferirForm) }}
</div>
</div>
<div id="novosga-clock" title="{{ 'server.datetime'|trans }}" class="clock"></div>
</div>
{% endblock %}
{% block stylesheets %}
{{ parent() }}
<link type="text/css" rel="stylesheet" href="{{ asset('bundles/novosgamonitor/css/style.css') }}">
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script type="text/javascript">
var ids = [{% for su in servicos %}{{su.servico.id}},{% endfor %}],
usuario = {{ usuario|json_encode()|raw }},
unidade = {{ unidade|json_encode()|raw }},
labelSim = '{{ 'label.yes'|trans }}',
labelNao = '{{ 'label.no'|trans }}',
alertTitle = '{{ 'alert.title'|trans }}',
alertCancelar = '{{ 'alert.cancel.text'|trans }}',
alertReativar = '{{ 'alert.reactivate.text'|trans }}',
alertTransferir = '{{ 'alert.transfer.text'|trans }}',
dateTimeFormat = '{{ 'MM/DD/YYYY HH:mm:ss'|trans }}',
wsSecret = '{{ wsSecret }}';
App.Clock.init("novosga-clock", {{ milis }});
</script>
<script type="text/javascript" src="{{ asset('bundles/novosgamonitor/js/sweetalert.min.js') }}"></script>
<script type="text/javascript" src="{{ asset('bundles/novosgamonitor/js/script.js') }}"></script>
{% endblock %}
{
"name": "macatendimento/monitor-bundle",
"license": "MIT",
"type": "novosga-module",
"autoload": {
"psr-4": { "Novosga\\MonitorBundle\\": "" }
},
"require": {
"php": "^7.1.3",
"macatendimento/core": "dev-master"
},
"minimum-stability": "dev"
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment