diff --git a/Apache2/fila-vhost.conf b/Apache2/fila-vhost.conf
new file mode 100644
index 0000000..e229d47
--- /dev/null
+++ b/Apache2/fila-vhost.conf
@@ -0,0 +1,59 @@
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+PerlSwitches -I/home/oktiva/fila/Fila-Administracao/lib/
+PerlModule Fila::Administracao
+
+
+
+ ServerName localhost
+ DocumentRoot /home/oktiva/fila/Fila-Web/root/
+
+
+ SetHandler default-handler
+
+
+ # nph-app.cgi
+ ScriptAlias /cgi-bin/ /home/oktiva/fila/Fila-Web/cgi-bin/
+
+ Options +ExecCGI
+ AddHandler cgi-script .cgi
+
+
+ Options +ExecCGI
+ SetHandler cgi-script
+
+
+ FastCgiServer /home/oktiva/fila/Fila-Web/script/fila_web_fastcgi.pl -processes 10
+ Alias / /home/oktiva/fila/Fila-Web/script/fila_web_fastcgi.pl/
+
+
+
+
+
+ ServerName localhost
+ DocumentRoot /home/oktiva/fila/Fila-Administracao/root/
+
+
+ SetHandler modperl
+ PerlResponseHandler Fila::Administracao
+
+
+
+ SetHandler default-handler
+
+
+
diff --git a/DJabberd/djabberd.conf b/DJabberd/djabberd.conf
new file mode 100644
index 0000000..50c788b
--- /dev/null
+++ b/DJabberd/djabberd.conf
@@ -0,0 +1,61 @@
+
+ S2S disable
+ RequireSSL no
+
+
+ Policy accept
+ AllowedUsers motor apache
+
+
+ Password password
+
+
+
+
+
+
+
+ AllowVHost agents.fila.vhost
+ AllowVHost people.fila.vhost
+
+
+
+ S2S disable
+ RequireSSL no
+
+
+ dsn dbi:Pg:host=127.0.0.1;database=fila
+ user fila
+ pass senha
+ query SELECT * FROM funcionario WHERE jid=?||'@people.fila.vhost' AND password=?
+ args login,password_md5_hex
+
+
+
+
+
+
+ AllowVHost agents.fila.vhost
+ AllowVHost gestao.fila.vhost
+
+
+
+ S2S disable
+ RequireSSL no
+
+
+ Policy accept
+ AllowedUsers painel senhas senhas1 opiniometro opiniometro01 opiniometro02 opiniometro03 opiniometro04 opiniometro05 opiniometro06 opiniometro07 opiniometro08 opiniometro09 opiniometro10 opiniometro11 opiniometro12 opiniometro13 opiniometro14 opiniometro15 opiniometro16 opiniometro17 opiniometro18 opiniometro19 opiniometro20 opiniometro21 opiniometro22 opiniometro23 opiniometro24 opiniometro25 opiniometro26
+
+
+ Password password
+
+
+
+
+
+
+ AllowVHost gestao.fila.vhost
+ AllowVHost people.fila.vhost
+
+
diff --git a/Fila-Administracao/fila_administracao.yml b/Fila-Administracao/fila_administracao.yml
new file mode 100644
index 0000000..f6d82b6
--- /dev/null
+++ b/Fila-Administracao/fila_administracao.yml
@@ -0,0 +1,6 @@
+---
+name: Fila::Administracao
+Model::DB:
+ schema_class: Fila::Servico::DB
+ connect_info:
+ - 'dbi:Pg:host=127.0.0.1;database=fila;user=fila;password=senha'
diff --git a/Fila-Administracao/lib/Fila/Administracao.pm b/Fila-Administracao/lib/Fila/Administracao.pm
new file mode 100644
index 0000000..3190774
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao.pm
@@ -0,0 +1,47 @@
+package Fila::Administracao;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+
+use Catalyst::Runtime '5.70';
+use parent qw/Catalyst/;
+
+our $VERSION = '0.01';
+
+__PACKAGE__->config( name => 'Fila::Administracao',
+ static => { dirs => [ 'static', qr/^(images|css|doc)$/ ] } );
+__PACKAGE__->setup(qw/-Debug ConfigLoader Static::Simple/);
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao - Aplicação de Administração
+
+=head1 DESCRIPTION
+
+Esta aplicação pode ser utilizada para gerir as informações do local
+de atendimento como um todo. É a partir dela que se definem as
+informações dos funcionários, dos guichês e outras informações que
+definem o funcionamento do local.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/Categorias.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/Categorias.pm
new file mode 100644
index 0000000..6f3fd1c
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/Categorias.pm
@@ -0,0 +1,80 @@
+package Fila::Administracao::Controller::Categorias;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+
+sub index :Path('') :Args(0) {
+ my ( $self, $c ) = @_;
+ $c->stash->{categorias} = $c->model('DB::Categoria')->search
+ ({},
+ { order_by => 'nome' });
+}
+
+sub preload :Chained :PathPart('categorias') :CaptureArgs(1) {
+ my ($self, $c, $id_categoria) = @_;
+ $c->stash->{categoria} = $c->model('DB::Categoria')->find
+ ({ id_categoria => $id_categoria });
+}
+
+sub ver :Chained('preload') :PathPart('') :Args(0) {
+ my ($self, $c) = @_;
+
+ unless ($c->req->param('submitted')) {
+ $c->req->param($_,$c->stash->{categoria}->get_column($_))
+ for qw(nome codigo)
+ }
+}
+
+sub salvar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ if ($c->req->param('submitted')) {
+ $c->stash->{categoria}->update
+ ({ ( map { $_ => $c->req->param($_) }
+ qw(nome codigo) ) });
+ $c->res->redirect($c->uri_for('/categorias/'));
+ }
+}
+
+sub criar :Local :Args(0) {
+ my ($self, $c) = @_;
+ if ($c->req->param('submitted')) {
+ my $cat = $c->model('DB::Categoria')->create
+ ({ ( map { $_ => $c->req->param($_) }
+ qw(nome codigo) ) });
+ $c->res->redirect($c->uri_for('/categorias/'));
+ }
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::Controller::Categorias - Categorias de Atendimento
+
+=head1 DESCRIPTION
+
+Esse é o módulo que implementa a definição das categorias de
+atendimento no sistema. Essa informação é usada conjuntamente com a
+informação das configurações das categorias para gerir o atendimento.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/Classes.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/Classes.pm
new file mode 100644
index 0000000..05d8dbc
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/Classes.pm
@@ -0,0 +1,83 @@
+package Fila::Administracao::Controller::Classes;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+
+sub index :Path('') :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{classes} = $c->model('DB::ClasseServico')->search
+ ({},
+ { order_by => 'nome' });
+}
+
+sub preload :Chained :PathPart('classes') :CaptureArgs(1) {
+ my ($self, $c, $id_classe) = @_;
+ $c->stash->{classes} = $c->model('DB::ClasseServico')->find
+ ({ id_classe => $id_classe });
+}
+
+
+sub salvar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{classes}->update
+ ({ map { $_ => $c->req->param($_) }
+ qw(nome ) });
+ $c->res->redirect($c->uri_for('/classes'));
+}
+
+sub ver :Chained('preload') :PathPart('') :Args(0) {
+ my ($self, $c) = @_;
+
+ unless ($c->req->param('submitted')) {
+ $c->req->param($_,$c->stash->{classes}->get_column($_))
+ for qw(id_classe nome)
+ }
+
+}
+
+sub criar :Local :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{classes} = $c->model('DB::ClasseServico')->search({});
+
+ if ($c->req->param('submitted')) {
+ $c->stash->{classes}->create
+ ({ ( map { $_ => $c->req->param($_) }
+ qw(nome) ) });
+ $c->res->redirect($c->uri_for('/classes'));
+ }
+}
+
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::Controller::Classes - Gerencia as classes de
+serviço
+
+=head1 DESCRIPTION
+
+Gerencia as classes de serviços no sistema.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/Conf_perguntas.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/Conf_perguntas.pm
new file mode 100644
index 0000000..a8053d2
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/Conf_perguntas.pm
@@ -0,0 +1,63 @@
+package Fila::Administracao::Controller::Conf_perguntas;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+
+sub preload :Chained('/locais/preload') :PathPart('conf_perguntas') :CaptureArgs(1) {
+ my ($self, $c) = @_;
+}
+
+sub criar :Chained('/locais/preload') :PathPart('conf_perguntas/criar') :Args(0) {
+ my ($self, $c) = @_;
+ if ($c->req->param('submitted')) {
+ # antes de criar, vamos certificar que as configuracoes
+ # anteriores dessa categoria para esse local sejam desativadas.
+ $c->stash->{local}->configuracoes_perguntas->search
+ ({ vt_fim => 'Infinity' })->update
+ ({ vt_fim => DateTime->now(time_zone => 'local')});
+
+ $c->stash->{local}->configuracoes_perguntas->create
+ ({ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity',
+ ( map { $_ => $c->req->param($_) }
+ qw(pergunta1 pergunta2 pergunta3 pergunta4 pergunta5 ) ) });
+
+ $c->res->redirect($c->uri_for('/locais/'.$c->stash->{local}->id_local));
+ } else {
+ $c->stash->{perguntas} = $c->model('DB::PerguntaAvaliacao')->search({});
+ }
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::Conf_perguntas - Configuração das perguntas
+
+=head1 DESCRIPTION
+
+Este é o módulo que implementa a configuração das perguntas que são
+exibidas no opiniômetro de cada mesa. Essas são as perguntas ao qual o
+cliente da praça de atendimentos responde no final de um atendimento.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/Conf_perguntas_praca.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/Conf_perguntas_praca.pm
new file mode 100644
index 0000000..89ac777
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/Conf_perguntas_praca.pm
@@ -0,0 +1,65 @@
+package Fila::Administracao::Controller::Conf_perguntas_praca;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+
+sub preload :Chained('/locais/preload') :PathPart('conf_perguntas_praca') :CaptureArgs(1) {
+ my ($self, $c) = @_;
+}
+
+sub criar :Chained('/locais/preload') :PathPart('conf_perguntas_praca/criar') :Args(0) {
+ my ($self, $c) = @_;
+ if ($c->req->param('submitted')) {
+ # antes de criar, vamos certificar que as configuracoes
+ # anteriores dessa categoria para esse local sejam desativadas.
+ $c->stash->{local}->configuracoes_perguntas_praca->search
+ ({ vt_fim => 'Infinity' })->update
+ ({ vt_fim => DateTime->now(time_zone => 'local')});
+
+ $c->stash->{local}->configuracoes_perguntas_praca->create
+ ({ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity',
+ ( map { $_ => $c->req->param($_) }
+ qw(pergunta1 pergunta2 pergunta3 pergunta4 pergunta5 ) ) });
+
+ $c->res->redirect($c->uri_for('/locais/'.$c->stash->{local}->id_local));
+ } else {
+ $c->stash->{perguntas} = $c->model('DB::PerguntaAvaliacaoPraca')->search({});
+ }
+}
+
+1;
+
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::Controller::Conf_perguntas_praca - Define
+configuração das perguntas do opiniometro da praca
+
+=head1 DESCRIPTION
+
+Este módulo implementa o suporte à configuração de quais são as
+perguntas que estao nesse momento associadas ao opiniometro geral da
+praça de atendimento.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/ConfiguracaoCategorias.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/ConfiguracaoCategorias.pm
new file mode 100644
index 0000000..a0b68ce
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/ConfiguracaoCategorias.pm
@@ -0,0 +1,87 @@
+package Fila::Administracao::Controller::ConfiguracaoCategorias;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+
+sub preload :Chained('/locais/preload') :PathPart('categoria') :CaptureArgs(1) {
+ my ($self, $c, $id_categoria) = @_;
+ $c->stash->{configuracao} = $c->stash->{local}->configuracoes_categoria->find
+ ({ id_categoria => $id_categoria,
+ vt_fim => 'Infinity' });
+}
+
+sub encerrar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{configuracao}->update
+ ({ vt_fim => DateTime->now(time_zone => 'local') });
+ $c->res->redirect($c->uri_for('/locais/'.$c->stash->{local}->id_local));
+}
+
+sub criar :Chained('/locais/preload') :PathPart('categoria/criar') :Args(0) {
+ my ($self, $c) = @_;
+ if ($c->req->param('submitted')) {
+ # antes de criar, vamos certificar que as configuracoes
+ # anteriores dessa categoria para esse local sejam desativadas.
+ $c->stash->{local}->configuracoes_categoria->search
+ ({ id_categoria => $c->req->param('id_categoria'),
+ vt_fim => 'Infinity' })->update
+ ({ vt_fim => DateTime->now(time_zone => 'local')});
+
+ $c->stash->{local}->configuracoes_categoria->create
+ ({ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity',
+ ( map { $_ => $c->req->param($_) }
+ qw(id_categoria prioridade limite_tempo_espera limite_pessoas_espera ordem) ) });
+
+ # vamos também certificar que existem as senhas para essa
+ # categoria nesse local.
+ for my $cod (1..999) {
+ $c->stash->{local}->senhas->create
+ ({ id_categoria => $c->req->param('id_categoria'),
+ codigo => $cod })
+ unless $c->stash->{local}->senhas->find
+ ({ id_categoria => $c->req->param('id_categoria'),
+ codigo => $cod });
+ }
+
+ $c->res->redirect($c->uri_for('/locais/'.$c->stash->{local}->id_local));
+ } else {
+ $c->stash->{categorias} =
+ $c->model('DB::Categoria')->search({},
+ { order_by => 'nome' })
+ }
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::ConfiguracaoCategorias - Gerencia as configurações das categorias
+
+=head1 DESCRIPTION
+
+A categoria de atendimento tem a configuração das suas prioridades
+definidas de acordo com cada local. Esse é o módulo que implementa a
+gestão dessas informações.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/ConfiguracaoLimites.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/ConfiguracaoLimites.pm
new file mode 100644
index 0000000..1d480a5
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/ConfiguracaoLimites.pm
@@ -0,0 +1,76 @@
+package Fila::Administracao::Controller::ConfiguracaoLimites;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+
+sub preload :Chained('/locais/preload') :PathPart('limite') :CaptureArgs(1) {
+ my ($self, $c, $id_estado) = @_;
+ $c->stash->{limite} = $c->stash->{local}->configuracoes_limite->find
+ ({ id_estado => $id_estado,
+ vt_fim => 'Infinity' });
+}
+
+sub encerrar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{limite}->update
+ ({ vt_fim => DateTime->now(time_zone => 'local') });
+ $c->res->redirect($c->uri_for('/locais/'.$c->stash->{local}->id_local));
+}
+
+sub criar :Chained('/locais/preload') :PathPart('limite/criar') :Args(0) {
+ my ($self, $c) = @_;
+ if ($c->req->param('submitted')) {
+ # antes de criar, vamos certificar que as configuracoes
+ # anteriores dessa categoria para esse local sejam desativadas.
+ $c->stash->{local}->configuracoes_limite->search
+ ({ id_estado => $c->req->param('id_estado'),
+ vt_fim => 'Infinity' })->update
+ ({ vt_fim => DateTime->now(time_zone => 'local')});
+
+ $c->stash->{local}->configuracoes_limite->create
+ ({ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity',
+ ( map { $_ => $c->req->param($_) }
+ qw(id_estado segundos) ) });
+
+ $c->res->redirect($c->uri_for('/locais/'.$c->stash->{local}->id_local));
+ } else {
+ $c->stash->{estados} =
+ $c->model('DB::TipoEstadoGuiche')->search({},
+ { order_by => 'nome' })
+ }
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::Controller::ConfiguracaoLimites - Gere os Limites para Alerta
+
+=head1 DESCRIPTION
+
+Esse módulo define os limites de tempo para cada um dos estados do
+guiche. Permitindo que o gerente seja visualmente avisado sobre
+anomalias durante o processo de atendimento.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/Funcionarios.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/Funcionarios.pm
new file mode 100644
index 0000000..ab5a77e
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/Funcionarios.pm
@@ -0,0 +1,170 @@
+package Fila::Administracao::Controller::Funcionarios;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+use Digest::MD5 qw(md5_hex md5_base64);
+
+sub index :Path('') :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{funcionarios} = $c->model('DB::Funcionario')->search
+ (
+ {},{
+ 'join' => ['local_atual','gerente_atual'],
+ 'select' => ['me.id_funcionario','me.nome','me.jid','local_atual.vt_fim','gerente_atual.vt_fim'],
+ 'as' => ['id_funcionario', 'nome', 'jid', 'vt_fim','gerente_vt_fim'],
+ 'order_by'=> 'nome' }
+ );
+ #({},
+ # { order_by => 'nome' });
+
+}
+
+sub preload :Chained :PathPart('funcionarios') :CaptureArgs(1) {
+ my ($self, $c, $id) = @_;
+
+ $c->stash->{funcionario} = $c->model('DB::Funcionario')->find
+ ({ id_funcionario => $id }) or die 'Funcionario nao encontrado';
+}
+
+sub ver :Chained('preload') :PathPart('') :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{template} = 'funcionarios/ver.tt';
+ $c->stash->{locais} =
+ $c->stash->{funcionario}->locais->search({},{prefetch => 'local',
+ order_by => 'me.vt_ini'});
+ $c->stash->{gerentes} =
+ $c->stash->{funcionario}->gerentes->search({},{prefetch => 'local',
+ order_by => 'me.vt_ini'});
+
+ unless ($c->req->param('submitted')) {
+ $c->req->param($_, $c->stash->{funcionario}->$_())
+ for qw(nome jid);
+ }
+}
+
+sub salvar :Chained('preload') :PathPart('salvar') :Args(0) {
+ my ($self, $c) = @_;
+
+ unless ($c->req->param('submitted')) {
+ $c->res->redirect($c->uri_for('/funcionarios/'.$c->stash->{funcionario}->id_funcionario));
+ } else {
+ if ($c->req->param('senha')) {
+ if ($c->req->param('senha') eq $c->req->param('confirmacao')) {
+ $c->stash->{funcionario}->update
+ ({ nome => $c->req->param('nome'),
+ jid => $c->req->param('jid').'@people.fila.vhost' ,
+ password => md5_hex($c->req->param('senha')) });
+ } else {
+ $c->stash->{template} = 'funcionarios/ver.tt';
+ return $c->stash->{error} = "Senhas não conferem";
+ }
+ } else {
+ $c->stash->{funcionario}->update
+ ({ nome => $c->req->param('nome'),
+ jid => $c->req->param('jid').'@people.fila.vhost' });
+ }
+ $c->res->redirect($c->uri_for('/funcionarios/'));
+ }
+}
+
+sub criar :Local :Args(0) {
+ my ($self, $c) = @_;
+ if ($c->req->param('submitted')) {
+ if ($c->req->param('senha') eq $c->req->param('confirmacao')) {
+ $c->model('DB::Funcionario')->create
+ ({ nome => $c->req->param('nome'),
+ jid => $c->req->param('jid').'@people.fila.vhost',
+ password => md5_hex($c->req->param('senha')) });
+ $c->res->redirect($c->uri_for('/funcionarios/'));
+ } else {
+ $c->stash->{error} = "Senhas não conferem";
+ }
+ }
+}
+
+sub associar_gerente :Chained('preload') :PathPart('gerente/associar') :Args(0) {
+ my ($self, $c) = @_;
+ # primeiro testa para ver se o funcionario mencionado está ligado a uma mesa.
+ my $guiche_associado = $c->model('DB::AtendenteGuiche')->find
+ ({ id_funcionario => $c->stash->{funcionario}->id_funcionario ,
+ vt_fim => 'Infinity'});
+ if($guiche_associado){
+ $c->stash->{error} = 'Atendente nao pode ser gerente se estiver ligado a uma mesa';
+ $c->forward('/funcionarios/ver');
+ } else {
+ # para a figura não ter que procurar qual é o gerente atual, a gente sempre
+ # desassocia o gerente atual do local para associar o que ele está pedindo
+ my $local = $c->model('DB::Local')->find
+ ({ id_local => $c->req->param('id_local') },
+ { join => 'gerentes' })->gerentes->search
+ ({ 'gerentes.vt_fim' => 'Infinity' })->update
+ ({ vt_fim => DateTime->now(time_zone => 'local') });
+ $c->stash->{funcionario}->gerentes->create
+ ({ id_local => $c->req->param('id_local'),
+ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity' });
+ $c->res->redirect('/funcionarios/'.$c->stash->{funcionario}->id_funcionario );
+ }
+ }
+
+sub associar_local :Chained('preload') :PathPart('local/associar') :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{funcionario}->locais->create
+ ({ id_local => $c->req->param('id_local'),
+ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity' });
+ $c->res->redirect('/funcionarios/'.$c->stash->{funcionario}->id_funcionario);
+}
+
+sub desassociar_gerente :Chained('preload') :PathPart('gerente') :Args(1) {
+ my ($self, $c, $id_local) = @_;
+ $c->stash->{funcionario}->gerentes->search
+ ({ id_local => $id_local,
+ vt_fim => 'Infinity' })->update
+ ({ vt_fim => DateTime->now(time_zone => 'local') });
+ $c->res->redirect('/funcionarios/'.$c->stash->{funcionario}->id_funcionario);
+}
+
+sub desassociar_local :Chained('preload') :PathPart('local') :Args(1) {
+ my ($self, $c, $id_local) = @_;
+ $c->stash->{funcionario}->locais->search
+ ({ id_local => $id_local,
+ vt_fim => 'Infinity' })->update
+ ({ vt_fim => DateTime->now(time_zone => 'local') });
+ $c->res->redirect('/funcionarios/'.$c->stash->{funcionario}->id_funcionario);
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::Controller::Funcionarios - Gestão dos Funcionários
+
+=head1 DESCRIPTION
+
+Este módulo implementa a administração dos dados dos funcionários,
+incluindo a associação aos locais de atendimento e a associação à
+função de gerente.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/Guiches.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/Guiches.pm
new file mode 100644
index 0000000..2b5c400
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/Guiches.pm
@@ -0,0 +1,120 @@
+package Fila::Administracao::Controller::Guiches;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+
+sub preload :Chained('/locais/preload') :PathPart('guiche') :CaptureArgs(1) {
+ my ($self, $c, $id_guiche) = @_;
+ $c->stash->{guiche} = $c->stash->{local}->guiches->find
+ ({ id_guiche => $id_guiche });
+}
+
+sub encerrar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{guiche}->update
+ ({ vt_fim => DateTime->now(time_zone => 'local') });
+ $c->res->redirect($c->uri_for('/locais/'.$c->stash->{local}->id_local));
+}
+
+sub reabrir :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ my $guiche = $c->stash->{guiche}->update
+ ({ vt_fim => 'Infinity' });
+ $c->res->redirect($c->uri_for('/locais/'.$c->stash->{local}->id_local));
+}
+
+sub ver :Chained('preload') :PathPart('') :Args(0) {
+ my ($self, $c) = @_;
+
+ unless ($c->req->param('submitted')) {
+ $c->req->param($_, $c->stash->{guiche}->get_column($_))
+ for qw(identificador jid_opiniometro);
+ }
+}
+
+sub encerrar_categoria :Chained('preload') :PathPart :Args(1) {
+ my ($self, $c, $id_categoria) = @_;
+ $c->stash->{guiche}->categorias_atuais->find
+ ({ id_categoria => $id_categoria })->update
+ ({ vt_fim => DateTime->now(time_zone => 'local') });
+ $c->res->redirect($c->uri_for('/locais/'.$c->stash->{local}->id_local.
+ '/guiche/'.$c->stash->{guiche}->id_guiche));
+}
+
+sub associar_categoria :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{guiche}->categorias->create
+ ({ id_categoria => $c->req->param('id_categoria'),
+ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity' });
+ $c->res->redirect($c->uri_for('/locais/'.$c->stash->{local}->id_local.
+ '/guiche/'.$c->stash->{guiche}->id_guiche));
+}
+
+sub salvar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{guiche}->update
+ ({ map { $_ => $c->req->param($_) }
+ qw(identificador jid_opiniometro) });
+ $c->res->redirect($c->uri_for('/locais/'.$c->stash->{local}->id_local));
+}
+
+sub criar :Chained('/locais/preload') :PathPart('guiche/criar') :Args(0) {
+ my ($self, $c) = @_;
+
+ # cria um novo guiche e seta seu estado inicial como 'fechado'
+
+ if ($c->req->param('submitted')) {
+ my $estado_fechado = $c->model('DB::TipoEstadoGuiche')->find
+ ({ nome => 'fechado' });
+ unless ($estado_fechado) {
+ $c->stash->{error} = 'Ocorreu um erro de configuracao do sistema, estado "fechado" de guiche nao encontrado.';
+ } else {
+ my $guiche = $c->stash->{local}->guiches->create
+ ({ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity',
+ pular_opiniometro => 0,
+ ( map { $_ => $c->req->param($_) }
+ qw(identificador jid_opiniometro) ) });
+ $guiche->estados->create
+ ({ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity',
+ id_estado => $estado_fechado->id_estado });
+
+ $c->res->redirect($c->uri_for('/locais/'.$c->stash->{local}->id_local));
+ }
+ }
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::Controller::Guiches - Gerencia os Guichês
+
+=head1 DESCRIPTION
+
+O guichê é a mesa onde o atendente realiza os atendimentos. Esse é o
+módulo responsável por gerenciar as informações dos guichês.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/Locais.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/Locais.pm
new file mode 100644
index 0000000..51d9f7e
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/Locais.pm
@@ -0,0 +1,107 @@
+package Fila::Administracao::Controller::Locais;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+
+sub index :Path('') :Args(0) {
+ my ( $self, $c ) = @_;
+ $c->stash->{locais} = $c->model('DB::Local')->search
+ ({},
+ { order_by => 'nome' });
+}
+
+sub preload :Chained :PathPart('locais') :CaptureArgs(1) {
+ my ($self, $c, $id_local) = @_;
+ $c->stash->{local} = $c->model('DB::Local')->find
+ ({ id_local => $id_local });
+}
+
+sub encerrar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{local}->update
+ ({ vt_fim => DateTime->now(time_zone => 'local') });
+ $c->res->redirect($c->uri_for('/locais'));
+}
+
+sub reabrir :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{local}->update
+ ({ vt_fim => 'Infinity' });
+ $c->res->redirect($c->uri_for('/locais'));
+}
+
+sub salvar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{local}->update
+ ({ map { $_ => $c->req->param($_) }
+ qw(nome jid_senhas jid_painel jid_opiniometro) });
+ $c->res->redirect($c->uri_for('/locais'));
+}
+
+sub ver :Chained('preload') :PathPart('') :Args(0) {
+ my ($self, $c) = @_;
+
+ unless ($c->req->param('submitted')) {
+ $c->req->param($_,$c->stash->{local}->get_column($_))
+ for qw(nome jid_senhas jid_painel jid_opiniometro)
+ }
+
+ $c->stash->{guiches} = $c->stash->{local}->guiches->search
+ ({},{ order_by => 'identificador' });
+
+ $c->stash->{configuracoes} = $c->stash->{local}->configuracoes_categoria->search
+ ({},{ prefetch => 'categoria', order_by => [ 'me.vt_ini', 'categoria.nome' ] });
+
+ $c->stash->{limites} = $c->stash->{local}->configuracoes_limite->search
+ ({},{ prefetch => 'estado', order_by => [ 'me.vt_ini', 'estado.nome' ] });
+
+ $c->stash->{conf_perguntas} = $c->stash->{local}->configuracoes_perguntas->search({});
+
+ $c->stash->{conf_perguntas_praca} = $c->stash->{local}->configuracoes_perguntas_praca->search({});
+
+}
+
+sub criar :Local :Args(0) {
+ my ($self, $c) = @_;
+ if ($c->req->param('submitted')) {
+ my $local = $c->model('DB::Local')->create
+ ({ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity',
+ ( map { $_ => $c->req->param($_) }
+ qw(nome jid_senhas jid_painel jid_opiniometro) ) });
+ $c->res->redirect($c->uri_for('/locais/'.$local->id_local));
+ }
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::Locais - Controller para a gestão dos locais
+
+=head1 DESCRIPTION
+
+É através desse módulo que são geridas as informações sobre as praças
+de atendimento.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/Perguntas.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/Perguntas.pm
new file mode 100644
index 0000000..04faed8
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/Perguntas.pm
@@ -0,0 +1,105 @@
+package Fila::Administracao::Controller::Perguntas;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+
+sub index :Path('') :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{perguntas} = $c->model('DB::PerguntaAvaliacao')->search
+ ({},
+ { order_by => 'pergunta' });
+}
+
+sub preload :Chained :PathPart('perguntas') :CaptureArgs(1) {
+ my ($self, $c, $id_pergunta) = @_;
+ $c->stash->{perguntas} = $c->model('DB::PerguntaAvaliacao')->find
+ ({ id_pergunta => $id_pergunta });
+}
+
+sub encerrar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{perguntas}->update(
+ {
+ vt_fim => DateTime->now(time_zone => 'local')
+ });
+ $c->res->redirect($c->uri_for('/perguntas'));
+}
+
+sub reabrir :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{perguntas}->update(
+ {
+ vt_fim => 'infinity'
+ });
+ $c->res->redirect($c->uri_for('/perguntas'));
+}
+
+sub salvar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{perguntas}->update
+ ({ map { $_ => $c->req->param($_) }
+ qw(pergunta ) });
+ $c->res->redirect($c->uri_for('/perguntas'));
+}
+
+sub ver :Chained('preload') :PathPart('') :Args(0) {
+ my ($self, $c) = @_;
+
+ unless ($c->req->param('submitted')) {
+ $c->req->param($_,$c->stash->{perguntas}->get_column($_))
+ for qw(id_pergunta pergunta )
+ }
+
+}
+
+sub criar :Local :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{perguntas} = $c->model('DB::PerguntaAvaliacao')->search({});
+
+ if ($c->req->param('submitted')) {
+ $c->stash->{perguntas}->create
+ ({ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity',
+ ( map { $_ => $c->req->param($_) }
+ qw(pergunta ) ) });
+ $c->res->redirect($c->uri_for('/perguntas'));
+ }
+}
+
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::Controller::Perguntas - Gerencia as perguntas
+para o opiniometro
+
+=head1 DESCRIPTION
+
+Este módulo implementa a interface de gerencia das perguntas do
+opiniometro.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/Perguntas_praca.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/Perguntas_praca.pm
new file mode 100644
index 0000000..3dc7a0d
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/Perguntas_praca.pm
@@ -0,0 +1,105 @@
+package Fila::Administracao::Controller::Perguntas_praca;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+
+sub index :Path('') :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{perguntas_praca} = $c->model('DB::PerguntaAvaliacaoPraca')->search
+ ({},
+ { order_by => 'pergunta' });
+}
+
+sub preload :Chained :PathPart('perguntas_praca') :CaptureArgs(1) {
+ my ($self, $c, $id_pergunta) = @_;
+ $c->stash->{perguntas_praca} = $c->model('DB::PerguntaAvaliacaoPraca')->find
+ ({ id_pergunta => $id_pergunta });
+}
+
+sub encerrar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{perguntas_praca}->update(
+ {
+ vt_fim => DateTime->now(time_zone => 'local')
+ });
+ $c->res->redirect($c->uri_for('/perguntas_praca'));
+}
+
+sub reabrir :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{perguntas_praca}->update(
+ {
+ vt_fim => 'infinity'
+ });
+ $c->res->redirect($c->uri_for('/perguntas_praca'));
+}
+
+sub salvar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{perguntas_praca}->update
+ ({ map { $_ => $c->req->param($_) }
+ qw(pergunta ) });
+ $c->res->redirect($c->uri_for('/perguntas_praca'));
+}
+
+sub ver :Chained('preload') :PathPart('') :Args(0) {
+ my ($self, $c) = @_;
+
+ unless ($c->req->param('submitted')) {
+ $c->req->param($_,$c->stash->{perguntas_praca}->get_column($_))
+ for qw(id_pergunta pergunta )
+ }
+
+}
+
+sub criar :Local :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{perguntas_praca} = $c->model('DB::PerguntaAvaliacaoPraca')->search({});
+
+ if ($c->req->param('submitted')) {
+ $c->stash->{perguntas_praca}->create
+ ({ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity',
+ ( map { $_ => $c->req->param($_) }
+ qw(pergunta ) ) });
+ $c->res->redirect($c->uri_for('/perguntas_praca'));
+ }
+}
+
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::Controller::Perguntas_praca - Gerencia as
+perguntas do opiniometro geral
+
+=head1 DESCRIPTION
+
+Este módulo gerencia as perguntas que são utilizadas no opiniômetro
+geral da praça.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/Root.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/Root.pm
new file mode 100644
index 0000000..b5ccec5
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/Root.pm
@@ -0,0 +1,57 @@
+package Fila::Administracao::Controller::Root;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use DateTime;
+use parent 'Catalyst::Controller';
+
+__PACKAGE__->config->{namespace} = '';
+
+sub auto :Private {
+ my ($self, $c) = @_;
+ $c->stash->{now} = DateTime->now(time_zone => 'local');
+}
+
+sub index : Path Args(0) {}
+
+sub default : Path {
+ my ( $self, $c ) = @_;
+ $c->response->body( 'Page not found' );
+ $c->response->status(404);
+}
+
+sub end : ActionClass('RenderView') {}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::Controller::Root - Implementa a raiz da navegação
+
+=head1 DESCRIPTION
+
+A aplicação de administração é responsável por gerir algumas
+informações padrões para a aplicação inteira, como a definição do
+time_zone padrão bem como a definição da ação default que usa o view
+para renderizar a saída.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/Servicos.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/Servicos.pm
new file mode 100644
index 0000000..7fd1ce9
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/Servicos.pm
@@ -0,0 +1,108 @@
+package Fila::Administracao::Controller::Servicos;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+
+sub index :Path('') :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{servicos} = $c->model('DB::Servico')->search
+ ({},
+ { order_by => 'nome' });
+}
+
+sub preload :Chained :PathPart('servicos') :CaptureArgs(1) {
+ my ($self, $c, $id_servico) = @_;
+ $c->stash->{servicos} = $c->model('DB::Servico')->find
+ ({ id_servico => $id_servico });
+}
+
+
+sub encerrar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{servicos}->update(
+ {
+ vt_fim => DateTime->now(time_zone => 'local')
+ });
+ $c->res->redirect($c->uri_for('/servicos'));
+}
+
+sub reabrir :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{servicos}->update(
+ {
+ vt_fim => 'infinity'
+ });
+ $c->res->redirect($c->uri_for('/servicos'));
+}
+
+sub salvar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{servicos}->update
+ ({ map { $_ => $c->req->param($_) }
+ qw(nome id_classe ) });
+ $c->res->redirect($c->uri_for('/servicos'));
+}
+
+sub ver :Chained('preload') :PathPart('') :Args(0) {
+ my ($self, $c) = @_;
+
+ unless ($c->req->param('submitted')) {
+ $c->req->param($_,$c->stash->{servicos}->get_column($_))
+ for qw(id_servico nome id_classe)
+ }
+
+ $c->stash->{classes} = $c->model('DB::ClasseServico')->search
+ ({},{ order_by => 'id_classe' });
+
+}
+
+sub criar :Local :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{servicos} = $c->model('DB::Servico')->search({});
+
+ if ($c->req->param('submitted')) {
+ $c->stash->{servicos}->create
+ ({ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity',
+ ( map { $_ => $c->req->param($_) }
+ qw(nome id_classe) ) });
+ $c->res->redirect($c->uri_for('/servicos'));
+ }
+}
+
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administraca::Controller::Servicos - Gerencia os serviços
+
+=head1 DESCRIPTION
+
+Este módulo implementa o controller para a gerencia dos serviços da
+praca.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Controller/Servicos_interno.pm b/Fila-Administracao/lib/Fila/Administracao/Controller/Servicos_interno.pm
new file mode 100644
index 0000000..853535b
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Controller/Servicos_interno.pm
@@ -0,0 +1,108 @@
+package Fila::Administracao::Controller::Servicos_interno;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+
+sub index :Path('') :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{servicos_interno} = $c->model('DB::ServicoInterno')->search
+ ({},
+ { order_by => 'nome' });
+}
+
+sub preload :Chained :PathPart('servicos_interno') :CaptureArgs(1) {
+ my ($self, $c, $id_servico) = @_;
+ $c->stash->{servicos_interno} = $c->model('DB::ServicoInterno')->find
+ ({ id_servico => $id_servico });
+}
+
+
+sub encerrar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{servicos_interno}->update(
+ {
+ vt_fim => DateTime->now(time_zone => 'local')
+ });
+ $c->res->redirect($c->uri_for('/servicos_interno'));
+}
+
+sub reabrir :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{servicos_interno}->update(
+ {
+ vt_fim => 'infinity'
+ });
+ $c->res->redirect($c->uri_for('/servicos_interno'));
+}
+
+sub salvar :Chained('preload') :PathPart :Args(0) {
+ my ($self, $c) = @_;
+ $c->stash->{servicos_interno}->update
+ ({ map { $_ => $c->req->param($_) }
+ qw(nome id_classe ) });
+ $c->res->redirect($c->uri_for('/servicos_interno'));
+}
+
+sub ver :Chained('preload') :PathPart('') :Args(0) {
+ my ($self, $c) = @_;
+
+ unless ($c->req->param('submitted')) {
+ $c->req->param($_,$c->stash->{servicos_interno}->get_column($_))
+ for qw(id_servico nome id_classe)
+ }
+
+ $c->stash->{classes} = $c->model('DB::ClasseServico')->search
+ ({},{ order_by => 'id_classe' });
+
+}
+
+sub criar :Local :Args(0) {
+ my ($self, $c) = @_;
+
+ $c->stash->{servicos_interno} = $c->model('DB::ServicoInterno')->search({});
+
+ if ($c->req->param('submitted')) {
+ $c->stash->{servicos_interno}->create
+ ({ vt_ini => DateTime->now(time_zone => 'local'),
+ vt_fim => 'Infinity',
+ ( map { $_ => $c->req->param($_) }
+ qw(nome id_classe) ) });
+ $c->res->redirect($c->uri_for('/servicos_interno'));
+ }
+}
+
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::Controller::Servicos_interno - Gestão dos serviços internos
+
+=head1 DESCRIPTION
+
+Este módulo gerencia os dados dos serviços internos, criando, ativando
+e desativando os cadastros.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/Model/DB.pm b/Fila-Administracao/lib/Fila/Administracao/Model/DB.pm
new file mode 100644
index 0000000..4ae8831
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/Model/DB.pm
@@ -0,0 +1,40 @@
+package Fila::Administracao::Model::DB;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use warnings;
+use base 'Catalyst::Model::DBIC::Schema';
+
+
+1;
+
+__END__
+
+=head1 NAME
+
+Fila::Administracao::Model::DB - Configura o Model para acesso ao
+banco de dados
+
+=head1 DESCRIPTION
+
+Este módulo configura um Model catalyst para acesso ao banco de dados
+do sistema de atendimento. As configurações desse acesso estão
+definidas no arquivo fila_administracao.yml.
+
+=cut
+
diff --git a/Fila-Administracao/lib/Fila/Administracao/View/TT.pm b/Fila-Administracao/lib/Fila/Administracao/View/TT.pm
new file mode 100644
index 0000000..cc9cc19
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Administracao/View/TT.pm
@@ -0,0 +1,34 @@
+package Fila::Administracao::View::TT;
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+
+use strict;
+use base 'Catalyst::View::TT';
+
+__PACKAGE__->config(TEMPLATE_EXTENSION => '.tt');
+
+=head1 NAME
+
+Fila::Administracao::View::TT - TT View para Fila::Administracao
+
+=head1 DESCRIPTION
+
+TT View para Fila::Administracao.
+
+=cut
+
+1;
diff --git a/Fila-Administracao/lib/Fila/Servico b/Fila-Administracao/lib/Fila/Servico
new file mode 120000
index 0000000..d120748
--- /dev/null
+++ b/Fila-Administracao/lib/Fila/Servico
@@ -0,0 +1 @@
+../../../Fila-Servico/lib/Fila/Servico
\ No newline at end of file
diff --git a/Fila-Administracao/root/bg_cabecalho2.gif b/Fila-Administracao/root/bg_cabecalho2.gif
new file mode 100644
index 0000000..9d62c2e
Binary files /dev/null and b/Fila-Administracao/root/bg_cabecalho2.gif differ
diff --git a/Fila-Administracao/root/categorias/criar.tt b/Fila-Administracao/root/categorias/criar.tt
new file mode 100644
index 0000000..27e5cab
--- /dev/null
+++ b/Fila-Administracao/root/categorias/criar.tt
@@ -0,0 +1,30 @@
+[%#
+# Copyright 2008, 2009 - Oktiva Comércio e Serviços de Informática Ltda.
+#
+# Este arquivo é parte do programa FILA - Sistema de Atendimento
+#
+# O FILA é um software livre; você pode redistribui-lo e/ou modifica-lo
+# dentro dos termos da Licença Pública Geral GNU como publicada pela
+# Fundação do Software Livre (FSF); na versão 2 da Licença.
+#
+# Este programa é distribuido na esperança que possa ser util, mas SEM
+# NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
+# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU
+# para maiores detalhes.
+#
+# Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o
+# título "LICENCA.txt", junto com este programa, se não, escreva para a
+# Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
+%]
+[% INCLUDE 'header.tt' %]
+
+