run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
run ( $_REQUEST['action'] );
?> ]]>
Editar Equipamento
{* mensagem *}
{if $msg ne ""}
{foreach item=elem from=$msg}
{$elem}
{/foreach}
{/if}
{foreach item=elem from=$lista_equipamentos}
Dados do Equipamento
*
Tipo:
{html_options name="tipo_equipamento_id" options=$lista_tipos_equipamentos selected=$elem.tipo_equipamento_id}
*
Descrição:
*
Responsável:
{wf_select_user name="responsavel" id_value=$elem.responsavel_id desc_value= $elem.responsavel}
Observações Importantes
Condições de Reserva / Devolução
(*) Campo de preenchimento obrigatório.
{/foreach}
]]>
Editar Sala
{* mensagem *}
{if $msg ne ""}
{foreach item=elem from=$msg}
{$elem}
{/foreach}
{/if}
{foreach item=elem from=$lista_salas}
Dados da Sala
*
Nome da Sala
Descrição
*
Localização
*
Capacidade
pessoas
*
Responsável
{wf_select_user name="responsavel" id_value=$elem.responsavel_id desc_value=$elem.responsavel}
Observações Importantes
Condições de Reserva / Devolução
(*) Campo de preenchimento obrigatório.
{/foreach}
]]>
Aprovar Locação
{* mensagem *}
{if $msg ne ""}
{foreach item=elem from=$msg}
{$elem}
{/foreach}
{/if}
Solicitante:
{$dados_solicitacao.solicitante_nome}
Data da Solicitação:
{$dados_solicitacao.data_solicitacao}
Usuário Responsável:
{$dados_solicitacao.responsavel_nome}
Setor:
{$dados_solicitacao.responsavel_area}
Telefone:
{$dados_solicitacao.responsavel_telefone}
Dados da Reserva
{if $dados_solicitacao.tipo_evento==0}
Reservado para: Evento
{else}
Reservado para: Treinamento
{/if}
Descrição:
{$dados_solicitacao.desc_solicitacao}
Número de Pessoas:
{$dados_solicitacao.num_pessoas}
Centro de Custo:
{$dados_solicitacao.centro_custo_nome}
Café:
{if $dados_solicitacao.cafe == 0}
Não
{else}
Sim
{/if}
{if $dados_solicitacao.cafe == 1}
Obs:
{$dados_solicitacao.obs_cafe}
{/if}
Observações Importantes relacionadas à Reserva:
{$dados_solicitacao.obs_reserva}
Equipamentos para Locação
Equipamento
Observação
Data Solicitação
Horário
Situação
Aprovar
Início
Fim
Sim
Não
{foreach item=elem from=$equipamentos_locacao}
{$elem.descricao}
{$elem.observacao}
{$elem.data}
{$elem.hora_inicio}
{$elem.hora_fim}
{if $elem.situacao eq 'Locação Reprovada CHEFIA'}
{elseif $elem.situacao eq 'Locação Aprovada CHEFIA'}
{else}
{/if}
{$elem.situacao}
{if $elem.situacao eq 'Locação Reprovada CHEFIA'}
{elseif $elem.situacao eq 'Locação Aprovada CHEFIA'}
{else}
{/if}
{/foreach}
]]>
Avaliar Reserva
{* mensagem *}
{if $msg ne ""}
{foreach item=elem from=$msg}
{$elem}
{/foreach}
{/if}
Solicitante:
{$dados_solicitacao.solicitante_nome}
Data da Solicitação:
{$dados_solicitacao.data_solicitacao}
Usuário Responsável:
{$dados_solicitacao.responsavel_nome}
Setor:
{$dados_solicitacao.responsavel_area}
Telefone:
{$dados_solicitacao.responsavel_telefone}
Dados da Reserva
{if $dados_solicitacao.tipo_evento==0}
Reservado para: Evento
{else}
Reservado para: Treinamento
{/if}
Descrição:
{$dados_solicitacao.desc_solicitacao}
Número de Pessoas:
{$dados_solicitacao.num_pessoas}
Centro de Custo:
{$dados_solicitacao.centro_custo_nome}
Café:
{if $dados_solicitacao.cafe == 0}
Não
{else}
Sim
{/if}
{if $dados_solicitacao.cafe == 1}
Obs:
{$dados_solicitacao.obs_cafe}
{else}
{/if}
Observações Importantes relacionadas à Reserva:
{$dados_solicitacao.obs_reserva}
Recursos Solicitados
{foreach item=elem from=$datas_solicitacao}
Datas: {$elem.data}
Hora Início: {$elem.hora_inicio}
Hora Término: {$elem.hora_fim}
Recursos
Descrição
Responsável
Telefone
Situação
{foreach item=elem1 from=$recursos}
{if $elem1.data_hora_inicio == $elem.data_hora_inicio}
{if $elem1.recurso eq "Locacao"}
Locação
{else}
{$elem1.recurso}
{/if}
{$elem1.descricao}
{$elem1.responsavel}
{$elem1.telefone}
{if $elem1.situacao eq 'Reserva Confirmada' || $elem1.situacao eq 'Locação Aprovada COEVE' || $elem1.situacao eq 'Locação Aprovada CHEFIA'}
{elseif $elem1.situacao eq 'Reserva Recusada' || $elem1.situacao eq 'Locação Reprovada COEVE' || $elem1.situacao eq 'Locação Reprovada CHEFIA'}
{else}
{/if}
{$elem1.situacao}
{/if}
{/foreach}
{/foreach}
Avaliação
Atendeu acima da expectativa
Atendeu parcialmente
Atendeu de forma plena
Não atendeu
Cometários:
]]>
Avaliar Solicitação
{* mensagem *}
{if $msg ne ""}
{foreach item=elem from=$msg}
{$elem}
{/foreach}
{/if}
Solicitante:
{$dados_solicitacao.solicitante_nome}
Data da Solicitação:
{$dados_solicitacao.data_solicitacao}
Usuário Responsável:
{$dados_solicitacao.responsavel_nome}
Setor:
{$dados_solicitacao.responsavel_area}
Telefone:
{$dados_solicitacao.responsavel_telefone}
Dados da Reserva
{if $dados_solicitacao.tipo_evento==0}
Reservado para: Evento
{else}
Reservado para: Treinamento
{/if}
Descrição:
{$dados_solicitacao.desc_solicitacao}
Número de Pessoas:
{$dados_solicitacao.num_pessoas}
Centro de Custo:
{$dados_solicitacao.centro_custo_nome}
Café:
{if $dados_solicitacao.cafe == 0}
Não
{else}
Sim
{/if}
{if $dados_solicitacao.cafe == 1}
Obs:
{$dados_solicitacao.obs_cafe}
{else}
{/if}
Observações Importantes relacionadas à Reserva:
{$dados_solicitacao.obs_reserva}
Recursos em situação de espera
{foreach item=elem from=$datas_solicitacao}
Datas: {$elem.data}
Hora Início: {$elem.hora_inicio}
Hora Término: {$elem.hora_fim}
Recursos
Descrição
Responsável
Telefone
Situação
Confirmar Reserva
Confirmar Locação
Ações
Sim
Não
Locar
Sim
Não
{foreach item=elem1 from=$recursos}
{if $elem1.data_hora_inicio == $elem.data_hora_inicio}
{if $elem1.recurso eq "Locação"}
Locação
{else}
{$elem1.recurso}
{/if}
{$elem1.descricao}
{$elem1.responsavel}
{$elem1.telefone}
{if $elem1.situacao eq 'Reserva Confirmada'}
{elseif $elem1.situacao eq 'Reserva Recusada'}
{elseif $elem1.situacao eq 'Em espera'}
{elseif $elem1.situacao eq 'Locar'}
{elseif $elem1.situacao eq 'Locação Aprovada COEVE'}
{elseif $elem1.situacao eq 'Locação Reprovada COEVE'}
{else}
{/if}
{$elem1.situacao}
{if (($elem1.situacao == 'Locar' || $elem1.situacao == 'Locação Aprovada COEVE' || $elem1.situacao == 'Locação Reprovada COEVE') && $elem1.recurso eq "Locação")|| $elem1.situacao eq "Solicitação Cancelada"}
{elseif $elem1.situacao eq "Reserva Confirmada"}
{else}
{if $elem1.recurso == 'Sala'}
{else}
{/if}
{/if}
{if $elem1.situacao=="Reserva Recusada"}
{elseif (($elem1.situacao == 'Locar' || $elem1.situacao == 'Locação Aprovada COEVE' || $elem1.situacao == 'Locação Reprovada COEVE') && $elem1.recurso eq "Locação")|| $elem1.situacao eq "Solicitação Cancelada"}
{else}
{if $elem1.recurso == 'Sala'}
{else}
{/if}
{/if}
{if $elem1.recurso == 'Sala' || $elem1.situacao eq "Solicitação Cancelada"}
{else}
{if $elem1.situacao == 'Locar' || $elem1.situacao == 'Locação Aprovada COEVE' || $elem1.situacao == 'Locação Reprovada COEVE'}
{else}
{/if}
{/if}
{if $elem1.recurso == 'Sala' || $elem1.situacao eq "Solicitação Cancelada"}
{else}
{if $elem1.situacao ne 'Locar' && $elem1.situacao ne 'Locação Aprovada COEVE' && $elem1.situacao ne 'Locação Reprovada COEVE'}
{elseif $elem1.situacao == 'Locação Aprovada COEVE'}
{else}
{/if}
{/if}
{if $elem1.recurso == 'Sala' || $elem1.situacao eq "Solicitação Cancelada"}
{else}
{if $elem1.situacao ne 'Locar' && $elem1.situacao ne 'Locação Aprovada COEVE' && $elem1.situacao ne 'Locação Reprovada COEVE'}
{elseif $elem1.situacao == 'Locação Reprovada COEVE'}
{else}
{/if}
{/if}
{if $elem1.recurso ne 'Locação' }
{if $elem1.recurso == 'Sala'}
{else}
{/if}
{else}
{/if}
{/if}
{/foreach}
{/foreach}
Softwares / Versões necessários:
{$dados_solicitacao.soft_necessario}
Local de Entrega do equipamento:
{$dados_solicitacao.local_entrega_equipamento}
]]>
Cancelar Reservas
{if $msg ne ""}
{foreach item=elem from=$msg }
{$elem}
{/foreach}
{/if}
Filtrar Reservas
Data Solicitação:
{wf_calendar default=true name="pesq_data_solicitacao" value=$pesq_data_solicitacao ifFormat="%d/%m/%Y"}
Tipo:
{if $grupo eq "COEVE"}
Descrição:
Solicitante:
{wf_select_user name="pesq_solicitante" id_value="$pesq_solicitante" desc_value="$pesq_solicitante"}
Responsável:
{wf_select_user name="pesq_responsavel" id_value="$pesq_responsavel" desc_value="$pesq_responsavel" size="15"}
{else}
Descrição:
{/if}
Reservas
Atenção!
-
Exibir explicação
]]>
{literal}
function open_print_view(act_url, data)
{
window.open(act_url+'&action=Imprimir&print_mode=true&data='+data,'Imprimir','height = 600, width = 700, scrollbars = yes, menubar=yes');
}
{/literal}
Consultar Café
Período: {$dt_primeiro_dia} - {$dt_ultimo_dia}
Seg
Ter
Qua
Qui
Sex
Sab
Dom
{foreach item=elem from=$dados}
[{$elem.dia}]
{foreach item=elem1 from=$elem.cafe}
{$elem1.hora_inicio} - {$elem1.hora_fim}
Local: {$elem1.sala}
Observação: {$elem1.observacao}
{/foreach}
{/foreach}
<< Semana Anterior
Próxima Semana >>
]]>
{literal}
function open_print_view(act_url, data)
{
window.open(act_url+'&action=Imprimir&print_mode=true&data='+data,'Imprimir','height = 600, width = 700, scrollbars = yes, menubar=yes');
}
{/literal}
Consultar Equipamentos
Período: {$dt_primeiro_dia} - {$dt_ultimo_dia}
Seg
Ter
Qua
Qui
Sex
Sab
Dom
{foreach item=elem from=$dados}
[{$elem.dia}]
{foreach item=elem1 from=$elem.equipamentos}
{$elem1.hora_inicio} - {$elem1.hora_fim}
Equipamento: {$elem1.descricao}
Local: {$elem1.local}
{/foreach}
{/foreach}
<< Semana Anterior
Próxima Semana >>
]]>
Consultar Recursos
{if $msg ne ""}
{foreach item=elem from=$msg }
{$elem}
{/foreach}
{/if}
Filtrar
Recurso:
Nome Equipamento / Sala:
Descrição:
Responsável:
{wf_select_user name="pesq_responsavel" id_value="$pesq_responsavel" desc_value="$pesq_responsavel"}
{if $equipamentos ne ""}
Equipamentos
Ações
Equipamento
Descrição
Responsável
Telefone
{foreach item=elem from=$equipamentos}
{$elem.desc_tipo_equipamento}
{$elem.desc_equipamento}
{$elem.responsavel}
{$elem.telefone}
{/foreach}
{/if}
{if $salas ne ""}
Salas
Ações
Nome
Descrição
Responsável
Telefone
{foreach item=elem from=$salas}
{$elem.nome}
{$elem.descricao}
{$elem.responsavel}
{$elem.telefone}
{/foreach}
{/if}
{if $equipamentos eq "" && $salas eq ""}
Exibir
Nome
Descrição
Responsável
Telefone
Não existem dados a serem apresentados.
{/if}
]]>
Consultar Reservas
{if $msg ne ""}
{foreach item=elem from=$msg }
{$elem}
{/foreach}
{/if}
Filtrar Reservas
Data Solicitação:
{wf_calendar default=true name="pesq_data_solicitacao" value=$pesq_data_solicitacao ifFormat="%d/%m/%Y" style="width:3em"}
Tipo:
Status da Reserva:
Descrição:
Solicitante:
{wf_select_user name="pesq_solicitante" id_value="$pesq_solicitante" desc_value="$pesq_solicitante"}
Reservas
]]>
{literal}
function open_print_view(act_url, data)
{
window.open(act_url+'&action=Imprimir&print_mode=true&data='+data,'Imprimir','height = 600, width = 700, scrollbars = yes, menubar=yes');
}
{/literal}
Consultar Solicitação de Salas
Período: {$dt_primeiro_dia} - {$dt_ultimo_dia}
Seg
Ter
Qua
Qui
Sex
Sab
Dom
{foreach item=elem from=$dados}
[{$elem.dia}]
{foreach item=elem1 from=$elem.salas}
{$elem1.hora_inicio} - {$elem1.hora_fim}
{if $elem1.tipo_evento eq 0}
Evento:
{else}
Curso:
{/if}
{$elem1.desc_solicitacao}
Sala: {$elem1.sala}
Solicitante: {$elem1.solicitante}
Observação: {$elem1.obs_reserva}
Situação: {$elem1.situacao}
{/foreach}
{/foreach}
<< Semana Anterior
Próxima Semana >>
]]>
Exibir Reserva
{* mensagem *}
{if $msg ne ""}
{foreach item=elem from=$msg}
{$elem}
{/foreach}
{/if}
Solicitante:
{$dados_reserva.solicitante}
Data da Solicitação:
{$dados_reserva.data_solicitacao}
Usuário Responsável:
{$dados_reserva.responsavel}
Área:
{$dados_reserva.area}
Telefone:
{$dados_reserva.telefone}
Dados da Reserva
Reserva para:
{if $dados_reserva.tipo_evento == 1}
Treinamento
{else}
Evento
{/if}
Descrição:
{$dados_reserva.desc_solicitacao}
Centro de Custo:
{$dados_reserva.centro_custo}
Número de Pessoas:
{$dados_reserva.num_pessoas} pessoas
Softwares / Versões necessários:
{$dados_reserva.soft_necessario}
Local de Entrega do equipamento:
{$dados_reserva.local_entrega_equipamento}
Café:
{if $dados_reserva.cafe == '1'}
Sim
Obs:
{$dados_reserva.obs_cafe}
{else}
Não
{/if}
{if $dados_reserva.obs_reserva ne ""}
Observações Importantes relacionadas à Reserva
{$dados_reserva.obs_reserva}
{/if}
Datas Reservadas
{foreach item=elem from=$datas_reserva}
Data: {$elem.data}
Hora Início: {$elem.hora_inicio}
Hora Término: {$elem.hora_fim}
Recursos
Descrição
Responsável
Telefone
Situação
{foreach item=elem1 from=$recursos}
{if $elem1.data_hora_inicio == $elem.data_hora_inicio}
{if $elem1.recurso eq "Locacao"}
Locação
{else}
{$elem1.recurso}
{/if}
{$elem1.descricao}
{$elem1.responsavel}
{$elem1.telefone}
{if $elem1.situacao eq 'Solicitação Cancelada' || $elem1.situacao eq 'Locação Reprovada COEVE' || $elem1.situacao eq 'Locação Reprovada CHEFIA' || $elem1.situacao eq 'Reserva Recusada' }
{elseif $elem1.situacao eq 'Locação Aprovada COEVE' || $elem1.situacao eq 'Locação Aprovada CHEFIA' || $elem1.situacao eq 'Reserva Confirmada' }
{elseif $elem1.situacao eq 'Em espera' || $elem1.situacao eq 'Locar'}
{else}
{/if}
{$elem1.situacao}
{/if}
{/foreach}
{/foreach}
]]>
Exibir Disponibilidade
Dados do Recurso
Nome:
{if $recurso.sala_id eq ""}
{$recurso.desc_tipo_equipamento}
{else}
{$recurso.nome}
{/if}
Descrição:
{if $recurso.sala_id eq ""}
{$recurso.desc_equipamento}
{else}
{$recurso.descricao}
{/if}
Responsável:
{$recurso.responsavel}
Área:
{$recurso.area}
Telefone:
{$recurso.telefone}
Disponibilidade
Data
Hora Início
Hora Fim
Reservado para:
Solicitante
Telefone
Situação Reserva
{if $dados ne ""}
{foreach item=elem1 from=$dados}
{$elem1.data}
{$elem1.hora_inicio}
{$elem1.hora_fim}
{$elem1.desc_solicitacao}
{$elem1.solicitante}
{$elem1.telefone}
{if $elem1.situacao eq 'Reserva Confirmada'}
{elseif $elem1.situacao eq 'Em espera'}
{else}
{/if}
{$elem1.situacao}
{/foreach}
{else}
Não existem reservas futuras para este recurso.
{/if}
]]>
Exibir Equipamento
{foreach item=elem from=$lista_equipamentos}
Dados do Equipamento
Tipo do Equipamento:
{$elem.desc_tipo_equipamento}
Descrição:
{$elem.desc_equipamento}
Responsável:
{$elem.responsavel}
Área:
{$elem.area}
Telefone:
{$elem.telefone}
{if $elem.observacao ne ""}
Observações Importantes
{$elem.observacao}
{/if}
{if $solicitar != 'solicitar'}
{/if}
{/foreach}
]]>
Exibir Reserva
{include file='Exibir_Reserva_Corpo.tpl'}
]]>
Exibir Sala
{foreach item=elem from=$lista_salas}
Dados da Sala
Nome da Sala:
{$elem.nome}
Descrição:
{$elem.descricao}
Localização:
{$elem.localizacao}
Capacidade:
{$elem.capacidade} pessoas
Responsável:
{$elem.responsavel}
Área:
{$elem.area}
Telefone:
{$elem.telefone}
{if $elem.observacao ne ""}
Observações Importantes
Condições de Reserva / Devolução
{$elem.observacao}
{/if}
{if $solicitar != 'solicitar'}
{/if}
{/foreach}
]]>
window.document.onload=window.print();
Calendário Semanal de Solicitação de Salas
Período: {$dt_primeiro_dia} - {$dt_ultimo_dia}
Seg
Ter
Qua
Qui
Sex
Sab
Dom
{foreach item=elem from=$dados}
[{$elem.dia}]
{foreach item=elem1 from=$elem.salas}
{$elem1.hora_inicio} - {$elem1.hora_fim}
{if $elem1.tipo_evento eq 0}
Evento:
{else}
Curso:
{/if}
{$elem1.desc_solicitacao}
Sala: {$elem1.sala}
Solicitante: {$elem1.solicitante}
Observação: {$elem1.obs_reserva}
Situação: {$elem1.situacao}
{/foreach}
{/foreach}
]]>
window.document.onload=window.print();
Calendário Semanal de Entrega de Café
Período: {$dt_primeiro_dia} - {$dt_ultimo_dia}
Seg
Ter
Qua
Qui
Sex
Sab
Dom
{foreach item=elem from=$dados}
[{$elem.dia}]
{foreach item=elem1 from=$elem.cafe}
{$elem1.hora_inicio} - {$elem1.hora_fim}
Local: {$elem1.sala}
Observação: {$elem1.observacao}
{/foreach}
{/foreach}
]]>
window.document.onload=window.print();
Calendário Semanal de Entrega de Equipamentos
Período: {$dt_primeiro_dia} - {$dt_ultimo_dia}
Seg
Ter
Qua
Qui
Sex
Sab
Dom
{foreach item=elem from=$dados}
[{$elem.dia}]
{foreach item=elem1 from=$elem.equipamentos}
{$elem1.hora_inicio} - {$elem1.hora_fim}
Equipamento: {$elem1.descricao}
Local: {$elem1.local}
{/foreach}
{/foreach}
]]>
Cadastrar Equipamento
{* mensagem *}
{if $msg ne ""}
{foreach item=elem from=$msg}
{$elem}
{/foreach}
{/if}
Dados do Equipamento
*
Tipo
{html_options name="tipo_equipamento_id" options=$lista_tipos_equipamentos selected=$tipo_equipamento_id}
*
Descrição
*
Responsável
{wf_select_user name="responsavel" id_value="$responsavel_id" desc_value="$responsavel" title="Clique aqui para selecionar o responsável pelo equipamento."}
Observações Importantes
Condições de Reserva / Devolução
(*) Campo de preenchimento obrigatório.
]]>
Incluir Sala
{* mensagem *}
{if $msg ne ""}
{foreach item=elem from=$msg}
{$elem}
{/foreach}
{/if}
Dados da Sala
*
Nome
Descrição
*
Localização
*
Capacidade
pessoas
*
Responsável
{wf_select_user name="responsavel" id_value="$responsavel_id" desc_value="$responsavel" title="Clique aqui para selecionar o responsável pela sala."}
Observações Importantes
Condições de Reserva / Devolução
(*) Campo de preenchimento obrigatório.
]]>
Manter Equipamento
{* mensagem *}
{if $msg ne ""}
{$msg}
{/if}
Filtrar e Inserir Novos Equipamentos
Situação:
Nome do Equipamento:
Responsável:
{wf_select_user name="pesq_responsavel" id_value="$pesq_responsavel" desc_value="$pesq_responsavel"}
{if $equipamentos ne ""}
{if $equipamentos[0].ativos ne ""}
Equipamentos Ativos
Ações
Equipamento
Descrição
Responsável
Area
Telefone
{foreach item=elem from=$equipamentos[0].ativos}
{$elem.desc_tipo_equipamento}
{$elem.desc_equipamento}
{$elem.responsavel}
{$elem.area}
{$elem.telefone}
{/foreach}
{/if}
{if $equipamentos[0].inativos ne ""}
Equipamentos Inativos
Ações
Equipamento
Descrição
Responsável
Area
Telefone
{foreach item=elem from=$equipamentos[0].inativos}
Ativar
{$elem.desc_tipo_equipamento}
{$elem.desc_equipamento}
{$elem.responsavel}
{$elem.area}
{$elem.telefone}
{/foreach}
{/if}
{if $equipamentos[0].ativos eq "" && $equipamentos[0].inativos eq ""}
Não existem dados a serem apresentados.
{/if}
{/if}
]]>
Manter Sala
{* mensagem *}
{if $msg ne ""}
{$msg}
{/if}
Filtrar e Inserir Novas Salas
Situação:
Nome da Sala:
Responsável:
{wf_select_user name="pesq_responsavel" id_value="$pesq_responsavel" desc_value="$pesq_responsavel"}
{if $salas ne ""}
{if $salas[0].ativos ne ""}
Salas Ativas
Exibir
Desativar
Editar
Nome da Sala
Responsável
Area
Telefone
{foreach item=elem from=$salas[0].ativos}
{$elem.nome}
{$elem.responsavel}
{$elem.area}
{$elem.telefone}
{/foreach}
{/if}
{if $salas[0].inativos ne ""}
Salas Inativas
Ação
Nome da Sala
Responsável
Area
Telefone
{foreach item=elem from=$salas[0].inativos}
Ativar Sala
{$elem.nome}
{$elem.responsavel}
{$elem.area}
{$elem.telefone}
{/foreach}
{/if}
{if $salas[0].ativos eq "" && $salas[0].inativos eq ""}
Não existem dados a serem apresentados.
{/if}
{/if}
]]>
Manter Tipo de Equipamento
{* mensagem *}
{if $msg ne ""}
{$msg}
{/if}
Pesquisar e Inserir Novos Tipos de Equipamentos
Tipo de Equipamento
]]>
Registra Andamento da Reserva
{* mensagem *}
{if $msg ne ""}
{foreach item=elem from=$msg}
{$elem}
{/foreach}
{/if}
Solicitante:
{$dados_solicitacao.solicitante_nome}
Data da Solicitação:
{$dados_solicitacao.data_solicitacao}
Usuário Responsável:
{$dados_solicitacao.responsavel_nome}
Setor:
{$dados_solicitacao.responsavel_area}
Telefone:
{$dados_solicitacao.responsavel_telefone}
Dados da Reserva
{if $dados_solicitacao.tipo_evento==0}
Reservado para: Evento
{else}
Reservado para: Treinamento
{/if}
Descrição:
{$dados_solicitacao.desc_solicitacao}
Número de Pessoas:
{$dados_solicitacao.num_pessoas}
Centro de Custo:
{$dados_solicitacao.centro_custo_nome}
Café:
{if $dados_solicitacao.cafe == 0}
Não
{else}
Sim
{/if}
{if $dados_solicitacao.cafe == 1}
Obs:
{$dados_solicitacao.obs_cafe}
{else}
{/if}
Observações Importantes relacionadas à Reserva:
{$dados_solicitacao.obs_reserva}
Recursos Solicitados
{foreach item=elem from=$datas_solicitacao}
Datas: {$elem.data}
Hora Início: {$elem.hora_inicio}
Hora Término: {$elem.hora_fim}
Recursos
Descrição
Responsável
Telefone
Situação
{foreach item=elem1 from=$recursos}
{if $elem1.data_hora_inicio == $elem.data_hora_inicio}
{if $elem1.recurso eq "Locacao"}
Locação
{else}
{$elem1.recurso}
{/if}
{$elem1.descricao}
{$elem1.responsavel}
{$elem1.telefone}
{if $elem1.situacao eq 'Reserva Confirmada' || $elem1.situacao eq 'Locação Aprovada CHEFIA' || $elem1.situacao eq 'Locação Aprovada COEVE'}
{elseif $elem1.situacao eq 'Reserva Recusada' || $elem1.situacao eq 'Locação Reprovada CHEFIA' || $elem1.situacao eq 'Locação Reprovada COEVE'}
{else}
{/if}
{$elem1.situacao}
{/if}
{/foreach}
{/foreach}
Avaliação
*
Solicitar avaliação?
{if $dados_solicitacao.necessita_avaliacao == 1}
{else}
{/if}
Sim
{if $dados_solicitacao.necessita_avaliacao == 2}
{else}
{/if}
Não
Situação do Recurso
{if $dados_solicitacao.situacao_recurso == 1}
{else}
{/if}
Recurso Retirado
{if $dados_solicitacao.situacao_recurso == 2}
{else}
{/if}
Recurso Devolvido
Comentário
{if $dados_solicitacao.historico_reserva ne ""}
Histórico:
{$dados_solicitacao.historico_reserva}
{/if}
]]>
function showDtFim()
{
if ($('repeticao').value > "1")
{
$('data_final').show();
}
else
{
$('data_final').hide();
}
return true;
}
function esconderForm(form,btn)
{
// Esconde tabela e mostra botão
form.hide();
btn.show();
}
{/literal}
Solicitar Reserva
{if $erro_solicitacao ne ""}
{foreach item=elem from=$erro_solicitacao }
{$elem}
{/foreach}
{/if}
Solicitante:
{$dados_solicitacao.solicitante}
Data da Solicitação:
{$dados_solicitacao.data_solicitacao}
{include file='dados_reserva.tpl'}
{include file='data_horarios.tpl'}
{include file='reserva_sala.tpl'}
{include file='reserva_equipamentos.tpl'}
]]>
Dados da Reserva
*
Reserva para:
{if $dados_solicitacao.tipo_evento == 1}
Evento
Treinamento
{else}
Evento
Treinamento
{/if}
*
Responsável:
{wf_select_user name="responsavel_id" id_value="$responsavel_id" desc_value="$responsavel" title="Clique aqui para selecionar o responsável pela Solicitação."}
*
Descrição:
*
Centro de Custo:
{html_options name="centro_custo_id" options=$dados_solicitacao.lista_centro_custo selected=$dados_solicitacao.centro_custo_id}
*
Número de Pessoas:
Softwares / Versões necessários:
Local de Entrega do equipamento:
Observações Importantes relacionadas à Reserva
]]>
Datas e Horários da Reserva
{if $lista_tmp_datas ne ""}
Cuidado ao excluir uma data
- Ao excluir uma data, todos os recursos já escolhidos para esta solicitação tambem serão excluídos pois estes dependem
das datas de solicitação da reserva.
{/if}
Excluir
Data
Hora Início
Hora Fim
{if $lista_tmp_datas ne ""}
{foreach item=elem from=$lista_tmp_datas}
{$elem.data}
{$elem.hora_inicio}
{$elem.hora_fim}
{/foreach}
{else}
Não existem dados a serem apresentados.
{/if}
]]>
Recursos da reserva - Equipamentos
Excluir
Tipo de Equipamento
Equipamento
Responsável
Área
Ramal
{if $lista_tmp_equipamentos ne ""}
{foreach item=elem from=$lista_tmp_equipamentos"}
{$elem.dados.desc_tipo_equipamento}
{$elem.dados.desc_equipamento}
{$elem.dados.responsavel}
{$elem.dados.area}
{$elem.dados.telefone}
{/foreach}
{else}
Não existem dados a serem apresentados.
{/if}
{if $lista_equipamentos_locacao_tmp ne "" }
Lista de Equipamentos para Locação
Excluir
Equipamento
Observação
{foreach item=elem from=$lista_equipamentos_locacao_tmp}
{$elem.descricao}
{$elem.observacao}
{/foreach}
{/if}
{/literal}
]]>
Recursos da reserva - Sala
Excluir
Sala
Localização
Responsável
Área
Ramal
{if $lista_tmp_salas ne ""}
{foreach item=elem from=$lista_tmp_salas}
{$elem.dados.nome}
{$elem.dados.localizacao}
{$elem.dados.responsavel}
{$elem.dados.area}
{$elem.dados.telefone}
{/foreach}
{else}
Não existem dados a serem apresentados.
{/if}
{if $lista_tmp_salas ne ""}
Café
{if $dados_solicitacao.cafe == 1}
Sim
Não
Obs:
{else}
Sim
Não
Obs:
{/if}
{/if}
]]>
Solicitante:
{$solicitacao.solicitante}
Data da Solicitação:
{$solicitacao.data_solicitacao}
Usuário Responsável:
{$solicitacao.responsavel}
Área:
{$solicitacao.area}
Telefone:
{$solicitacao.telefone}
Dados da Reserva
Reserva para:
{if $solicitacao.tipo_evento == 1}
Treinamento
{else}
Evento
{/if}
Descrição:
{$solicitacao.desc_solicitacao}
Centro de Custo:
{$solicitacao.centro_custo}
Número de Pessoas:
{$solicitacao.num_pessoas} pessoas
Softwares / Versões necessários:
{$solicitacao.soft_necessario}
Local de Entrega do equipamento:
{$solicitacao.local_entrega_equipamento}
Café:
{if $solicitacao.cafe == '1'}
Sim
Obs:
{$solicitacao.obs_cafe}
{else}
Não
{/if}
Observações Importantes relacionadas à Reserva
{$solicitacao.obs_reserva}
Recursos Solicitados
{foreach item=elem from=$datas_solicitacao}
Datas: {$elem.data}
Hora Início: {$elem.hora_inicio}
Hora Término: {$elem.hora_fim}
Recursos
Descrição
Responsável
Telefone
Situação
{foreach item=elem1 from=$recursos}
{if $elem1.data_hora_inicio == $elem.data_hora_inicio}
{if $elem1.recurso eq "Locacao"}
Locação
{else}
{$elem1.recurso}
{/if}
{$elem1.descricao}
{$elem1.responsavel}
{$elem1.telefone}
{if $elem1.situacao eq 'Locação Aprovada COEVE' || $elem1.situacao eq 'Locação Aprovada CHEFIA' || $elem1.situacao eq 'Reserva Confirmada' }
{elseif $elem1.situacao eq 'Solicitação Cancelada' || $elem1.situacao eq 'Locação Reprovada COEVE' || $elem1.situacao eq 'Locação Reprovada CHEFIA' || $elem1.situacao eq 'Reserva Recusada' }
{elseif $elem1.situacao eq 'Em espera'}
{else}
{/if}
{$elem1.situacao}
{/if}
{/foreach}
{/foreach}
Histórico
{if $solicitacao.situacao_recurso == 1}
Recurso Retirado
{else}
Recurso Retirado
{/if}
{if $solicitacao.situacao_recurso == 2}
Recurso Devolvido
{else}
Recurso Devolvido
{/if}
{if $solicitacao.historico_reserva ne ""}
Comentários realcionados a reserva
{$solicitacao.historico_reserva}
{/if}
Avaliação
{if $solicitacao.necessita_avaliacao eq 2 || $solicitacao.avaliacao eq 0 }
Não solicitada / avaliada
{else}
Não solicitada / avaliada
{/if}
{if $solicitacao.avaliacao eq 1}
Atendeu acima da expectativa
{else}
Atendeu acima da expectativa
{/if}
{if $solicitacao.avaliacao eq 3}
Atendeu parcialmente
{else}
Atendeu parcialmente
{/if}
{if $solicitacao.avaliacao eq 2}
Atendeu de forma plena
{else}
Atendeu de forma plena
{/if}
{if $solicitacao.avaliacao eq 4}
Não atendeu
{else}
Não atendeu
{/if}
{if $solicitacao.avaliacao eq 5}
Cancelado
{else}
Cancelado
{/if}
{if $solicitacao.comentario_avaliacao!=''}
Comentários:
{$solicitacao.comentario_avaliacao}
{/if}
Situação da Solicitação de Reserva
{if $solicitacao.status_reserva=='Reserva Cancelada'}
{elseif $solicitacao.status_reserva=='Reserva Recusada'}
{elseif $solicitacao.status_reserva=='Em Andamento'}
{elseif $solicitacao.status_reserva=='Reserva Concluída'}
{/if}
{$solicitacao.status_reserva}
]]>
Exibir Reserva
{include file='Exibir_Reserva_Corpo.tpl'}
]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->APROVAR_LOCACAO);
}
/**
* Executa a ação avaliar locação da atividade.
* @return void
* @access public
*/
function avaliar_locacao()
{
$this->model->avaliar_locacaoAction();
$this->loadViewVars();
$this->showForm($this->APROVAR_LOCACAO);
}
/**
* Executa a ação enviar da atividade.
* @return void
* @access public
*/
function enviar()
{
if (!$this->model->enviarAction())
$this->__default();
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?> ]]>
dados_solicitacao = $this->dados_solicitacao_instancia();
$this->lista_equipamentos = $this->lista_equipamentos();
$this->addViewVar("dados_solicitacao" , $this->dados_solicitacao);
$this->addViewVar("equipamentos_locacao" , $this->lista_equipamentos);
return true;
}
/**
* Implementa acao avaliar locaçao - Muda o valor do campo situacao na tabela equipamento_locacao
* @access public
* @return bool
*/
function avaliar_locacaoAction()
{
$this->dados_solicitacao = $this->dados_solicitacao_instancia();
$this->lista_equipamentos = $this->lista_equipamentos();
$this->equipamento_locacao_id = $this->request['params'];
$acao = $this->request[$this->equipamento_locacao_id];
$this->commandText = "
UPDATE
reserva_recursos.equipamento_locacao
SET
situacao = '".$acao."'
WHERE
equipamento_locacao_id =".$this->equipamento_locacao_id;
$this->resultSet = $this->DAO->query($this->commandText);
$this->defaultAction();
return true;
}
/**
* Implementa acao enviar - verifica se todos sos recursos foram avaliados e passa para a proxima atividade
* @access public
* @return bool
*/
function enviarAction()
{
$erros = array();
$this->commandText = "
SELECT
equipamento_locacao_id
FROM
reserva_recursos.equipamento_locacao
WHERE
reserva_id = ".$this->request['reserva_id']."
AND
situacao = 'Locação Aprovada COEVE'";
$this->resultSet = $this->DAO->query($this->commandText);
$cont = 0;
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$cont = $cont+1;
}
if ($cont != 0)
{
$erros = 'Todos os recursos devem ser avaliados. Ainda existe algum recurso esperando aprovação, verifique.';
$this->addViewVar("msg" , $erros );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
else
{
$this->updateAttributes( );
$this->updateInstance ( );
$this->instance->setNextActivity ("Registrar Andamento da Reserva");
if ($this->_tipo_evento == 0) // Evento
$this->instance->setNextRole("COEVE");
else // curso
$this->instance->setNextRole("DIPRH");
$this->commitInstance ( );
return true;
}
}
/**
* Implementa acao lista_equipamentos - monta um array com os dados de todos os equipamentos para locacao para
* uma determinada reserva
* @access public
* @return array
*/
function lista_equipamentos()
{
// seleciona somente os equipamentos para locação
$this->commandText = "
SELECT
equipamento_locacao_id,
reserva_id,
to_char((data_hora_inicio),'DD/MM/YYYY') as data,
to_char((data_hora_inicio),'HH24:MI') as hora_inicio,
to_char((data_hora_fim),'HH24:MI') as hora_fim,
descricao,
observacao,
situacao
FROM
reserva_recursos.equipamento_locacao
WHERE
reserva_id = ".$this->dados_solicitacao['reserva_id']."
ORDER BY data_hora_inicio, data_hora_fim, descricao ";
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$equipamento[] = array(
"equipamento_locacao_id"=> $res['equipamento_locacao_id'],
"reserva_id" => $res['reserva_id'],
"descricao" => $res['descricao'],
"observacao" => $res['observacao'],
"data" => $res['data'],
"hora_inicio" => $res['hora_inicio'],
"hora_fim" => $res['hora_fim'],
"situacao" => $res['situacao']);
}
return $equipamento;
}
}
?> ]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->AVALIAR_RESERVA);
}
/**
* Executa a ação concluir da atividade.
* @return void
* @access public
*/
function concluir()
{
if (!$this->model->concluirAction())
$this->__default();
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?> ]]>
dados_solicitacao_instancia();
$datas_solicitacao = $this->data_solicitacao($dados_solicitacao['reserva_id']);
$recursos = $this->lista_recursos_por_data_id_recurso($datas_solicitacao,$dados_solicitacao['reserva_id']);
$this->addViewVar("datas_solicitacao" , $datas_solicitacao );
$this->addViewVar("dados_solicitacao" , $dados_solicitacao );
$this->addViewVar("recursos" , $recursos );
return true;
}
/**
* Implementa acao conluir da atividade - Grava a avaliação do usuario no banco de dados e passa para
* a atividade 'concluir'
* @access public
* @return bool
*/
function concluirAction()
{
$dados_solicitacao = $this->dados_solicitacao_instancia();
if ($this->request['avaliacao'] == '')
{
$datas_solicitacao = $this->data_solicitacao($dados_solicitacao['reserva_id']);
$recursos = $this->lista_recursos_por_data_id_recurso($datas_solicitacao,$dados_solicitacao['reserva_id']);
$this->addViewVar("datas_solicitacao" , $datas_solicitacao );
$this->addViewVar("dados_solicitacao" , $dados_solicitacao );
$this->addViewVar("recursos" , $recursos );
$this->addViewVar("comentario_avaliacao" , $this->request['comentario_avaliacao']);
$this->addViewVar("msg" , "É necessário o preenchimento do campo Avaliação.");
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
else
{
$this->commandText = "
UPDATE
reserva_recursos.reserva
SET
avaliacao = '".$this->request['avaliacao']."',
comentario_avaliacao = '".$this->request['comentario_avaliacao']."',
status_reserva = 'Reserva Concluída'
WHERE
reserva_id = ".$dados_solicitacao['reserva_id'] ;
$this->resultSet = $this->DAO->query($this->commandText);
$this->updateAttributes();
$this->_comentario_avaliacao = $this->request['comentario_avaliacao'];
$this->_avaliacao = $this->request['avaliacao'];
$this->updateInstance();
$this->instance->setNextActivity("concluir");
$this->commitInstance();
return true;
}
}
}
?> ]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->AVALIAR_SOLICITACAO);
}
/**
* Executa a ação confirmar equipamento da atividade.
* @return void
* @access public
*/
function confirmar_equipamento()
{
$this->model->confirmar_equipamentoAction();
$this->model->defaultAction();
$this->loadViewVars();
$this->showForm($this->AVALIAR_SOLICITACAO);
}
/**
* Executa a ação confirmar sala da atividade.
* @return void
* @access public
*/
function confirmar_sala()
{
$this->model->confirmar_salaAction();
$this->model->defaultAction();
$this->loadViewVars();
$this->showForm($this->AVALIAR_SOLICITACAO);
}
/**
* Executa a ação enviar da atividade.
* @return void
* @access public
*/
function enviar()
{
if (!$this->model->enviarAction())
{
$this->__default();
}
}
/**
* Executa a ação exibir equipamento da atividade.
* @return void
* @access public
*/
function exibir_equipamento()
{
$this->model->exibir_equipamentoAction();
$this->loadViewVars();
$this->showForm($this->EXIBIR_EQUIPAMENTO);
}
/**
* Executa a ação exibr sala da atividade.
* @return void
* @access public
*/
function exibir_sala()
{
$this->model->exibir_salaAction();
$this->loadViewVars();
$this->showForm($this->EXIBIR_SALA);
}
/**
* Executa a ação locar equipamento da atividade.
* @return void
* @access public
*/
function locar_equipamento()
{
$this->model->locar_equipamentoAction();
$this->model->defaultAction();
$this->loadViewVars();
$this->showForm($this->AVALIAR_SOLICITACAO);
}
/**
* Executa a ação rejeitar equipamento da atividade.
* @return void
* @access public
*/
function rejeitar_equipamento()
{
$this->model->rejeitar_equipamentoAction();
$this->model->defaultAction();
$this->loadViewVars();
$this->showForm($this->AVALIAR_SOLICITACAO);
}
/**
* Executa a ação rejeitar sala da atividade.
* @return void
* @access public
*/
function rejeitar_sala()
{
$this->model->rejeitar_salaAction();
$this->model->defaultAction();
$this->loadViewVars();
$this->showForm($this->AVALIAR_SOLICITACAO);
}
/**
* Executa a ação cancelar avaliação da atividade.
* @return void
* @access public
*/
function cancelar_avaliacao()
{
$this->model->cancelar_avaliacaoAction();
$this->cancelar();
//$this->showForm($this->AVALIAR_SOLICITACAO);
}
/**
* Executa a ação confirmar locacao da atividade.
* @return void
* @access public
*/
function confirmar_locacao()
{
$this->model->confirmar_locacaoAction();
$this->model->defaultAction();
$this->loadViewVars();
$this->showForm($this->AVALIAR_SOLICITACAO);
}
/**
* Executa a ação confirmar locacao da atividade.
* @return void
* @access public
*/
function reprovar_locacao()
{
$this->model->reprovar_locacaoAction();
$this->model->defaultAction();
$this->loadViewVars();
$this->showForm($this->AVALIAR_SOLICITACAO);
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?>
]]>
dados_solicitacao_instancia();
$datas_solicitacao = $this->data_solicitacao($dados_solicitacao['reserva_id']);
$recursos = $this->lista_recursos_por_data_id_recurso($datas_solicitacao,$dados_solicitacao['reserva_id']);
$this->addViewVar("dados_solicitacao" , $dados_solicitacao );
$this->addViewVar("recursos" , $recursos );
$this->addViewVar("datas_solicitacao" , $datas_solicitacao );
return true;
}
/**
* Implementa acao confirmar_sala - Muda o valor do campo situacao na tabela reserva_sala
* para 'Reserva Confirmada'.
* @access public
* @return bool
*/
function confirmar_salaAction()
{
$this->commandText = "
UPDATE
reserva_recursos.reserva_sala
SET
situacao = 'Reserva Confirmada'
WHERE
reserva_sala_id =".$this->request['params'];
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Implementa acao rejeitar_sala - Muda o valor do campo situacao na tabela reserva_sala
* para 'Reserva Recusada'.
* @access public
* @return bool
*/
function rejeitar_salaAction()
{
$this->commandText = "
UPDATE
reserva_recursos.reserva_sala
SET
situacao = 'Reserva Recusada'
WHERE
reserva_sala_id =".$this->request['params'];
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Implementa acao rejeitar_equipamento - Muda o valor do campo situacao na tabela reserva_equipamento
* para Reserva Recusada'.
* @access public
* @return bool
*/
function rejeitar_equipamentoAction()
{
$this->commandText = "
UPDATE
reserva_recursos.reserva_equipamento
SET
situacao = 'Reserva Recusada'
WHERE
reserva_equipamento_id =".$this->request['params'];
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Implementa acao confirmar_equipamento - Muda o valor do campo situacao na tabela reserva_equipamento
* para 'Reserva Confirmada'.
* @access public
* @return bool
*/
function confirmar_equipamentoAction()
{
$this->commandText = "
UPDATE
reserva_recursos.reserva_equipamento
SET
situacao = 'Reserva Confirmada'
WHERE
reserva_equipamento_id =".$this->request['params'];
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Implementa acao locar_equipamento - Muda o valor do campo situacao na tabela reserva_equipamento
* para 'Locar'.
* @access public
* @return bool
*/
function locar_equipamentoAction()
{
$this->commandText = "
UPDATE
reserva_recursos.reserva_equipamento
SET
situacao = 'Locar'
WHERE
reserva_equipamento_id =".$this->request['params'];
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Implementa acao confirmar_locacao - Muda o valor do campo situacao na tabela reserva_equipamento
* para 'Locacao Aprovada COEVE'.
* @access public
* @return bool
*/
function confirmar_locacaoAction()
{
$params = $this->request['params'];
$params = explode(",", $params);
$recurso_id = $params[0];
$recurso = $params[1];
if ($recurso == "Equipamento")
{
$this->commandText = "
UPDATE
reserva_recursos.reserva_equipamento
SET
situacao = 'Locação Aprovada COEVE'
WHERE
reserva_equipamento_id =".$recurso_id;
$this->resultSet = $this->DAO->query($this->commandText);
}
else
{
$this->commandText = "
UPDATE
reserva_recursos.equipamento_locacao
SET
situacao = 'Locação Aprovada COEVE'
WHERE
equipamento_locacao_id =".$recurso_id;
$this->resultSet = $this->DAO->query($this->commandText);
}
return true;
}
/**
* Implementa acao reprovar_locacao - Muda o valor do campo situacao na tabela reserva_equipamento
* para 'Locacao Reprovada COEVE'.
* @access public
* @return bool
*/
function reprovar_locacaoAction()
{
$params = $this->request['params'];
$params = explode(",", $params);
$recurso_id = $params[0];
$recurso = $params[1];
if ($recurso == "Equipamento")
{
$this->commandText = "
UPDATE
reserva_recursos.reserva_equipamento
SET
situacao = 'Locação Reprovada COEVE'
WHERE
reserva_equipamento_id =".$recurso_id;
$this->resultSet = $this->DAO->query($this->commandText);
}
else
{
$this->commandText = "
UPDATE
reserva_recursos.equipamento_locacao
SET
situacao = 'Locação Reprovada COEVE'
WHERE
equipamento_locacao_id =".$recurso_id;
$this->resultSet = $this->DAO->query($this->commandText);
}
return true;
}
/**
* Implementa acao exibir_equipamento da atividade - Mostra os detalhes do recurso solicitado
* @access public
* @return bool
*/
function exibir_equipamentoAction()
{
$lista_equipamentos = $this->dados_equipamento($this->request['params']);
$this->addViewVar("lista_equipamentos" , $lista_equipamentos );
$this->addViewVar("solicitar" , "solicitar" );
return true;
}
/**
* Implementa acao exibir_sala da atividade - Mostra os detalhes do recurso solicitado
* @access public
* @return bool
*/
function exibir_salaAction()
{
$lista_salas = $this->dados_sala($this->request['params']);
$this->addViewVar("lista_salas" , $lista_salas );
$this->addViewVar("solicitar" , "solicitar" );
return true;
}
/**
* Implementa acao enviar da atividade - Se todos os campos já estiverem sido avaliados, ou seja,
* se nenhum campo situacao na tabela reserva_equipamento e reserva_sala estiverem com o valor
* 'Em espera' para a solicitacao em questao passa para as outras atividades. Senão retorna erro.
* As atividades seguintes sao: 'Concluir'-> se todas as avaliações forem Rejeitadas; 'Aprovar Locação'
* -> se alguma avaliação for marcada para Locar e 'Registrar Andamento da Reserva'-> se todos os
* recursos forem cofirmados com pelo menos um Reservado e nenhum para locar.
* @access public
* @return bool
*/
function enviarAction()
{
$erros = array();
$dados_solicitacao = $this->dados_solicitacao_instancia();
$datas_solicitacao = $this->data_solicitacao($dados_solicitacao['reserva_id']);
$recursos = $this->lista_recursos_por_data_id_recurso($datas_solicitacao,$dados_solicitacao['reserva_id']);
foreach ($recursos as $r)
{
$cont_recursos = $cont_recursos + 1;
$situacao[] = $r['situacao'];
}
if (in_array('Em espera', $situacao, TRUE))
{
$erros = 'Todos os recursos devem ser avaliados. Ainda existe algum recurso em espera, verifique.';
$this->addViewVar("msg" , $erros );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
elseif (in_array('Locar', $situacao, TRUE))
{
$erros = 'Todos os recursos a serem locados devem ter sua locação aprovada ou reprovada.';
$this->addViewVar("msg" , $erros );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
elseif (in_array('Locação Aprovada COEVE', $situacao, TRUE))
{
$this->envia_email();
/* apaga o equipamento da tabela de equipamentos reservados e cria um registro pra ele
* na tabela equipamento_locacao */
$this->commandText = "
SELECT
RE.reserva_equipamento_id,
RE.reserva_id,
RE.data_hora_inicio,
RE.data_hora_fim,
E.descricao
FROM
reserva_recursos.reserva_equipamento as RE, reserva_recursos.equipamento as E
WHERE
RE.equipamento_id = E.equipamento_id
AND
RE.situacao = 'Locação Aprovada COEVE'";
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$equipamentos_locacao[] = array(
"reserva_equipamento_id" => $res['reserva_equipamento_id'],
"reserva_id" => $res['reserva_id'],
"data_hora_inicio" => $res['data_hora_inicio'],
"data_hora_fim" => $res['data_hora_fim'],
"descricao" => $res['descricao']);
}
if (!empty($equipamentos_locacao ))
{
foreach ($equipamentos_locacao as $el)
{
// insere o equipamento desejado na tabela de locacao de equipamentos
$dados2 = array(
$el['reserva_id'],
$el['data_hora_inicio'],
$el['data_hora_fim'],
$el['descricao'],
'Locação Aprovada COEVE');
$this->commandText2 = "
INSERT INTO reserva_recursos.equipamento_locacao (
reserva_id,
data_hora_inicio,
data_hora_fim,
descricao,
situacao )
VALUES (?,?,?,?,?)";
$this->resultSet = $this->DAO->query($this->commandText2,$dados2);
// deleta o equipamento a ser locado na tabela de equipamentos reservados
$this->commandText3 = "
DELETE
FROM
reserva_recursos.reserva_equipamento
WHERE
reserva_equipamento_id =".$el['reserva_equipamento_id'];
$this->resultSet = $this->DAO->query($this->commandText3);
}
}
$orgchart = $this->factory->getInstance('wf_orgchart');
$dados_usuario = $orgchart->getEmployee($dados_solicitacao['solicitante_id']);
$area_id = $dados_usuario['area_id'];
$area = $orgchart->getArea($area_id);
$superior_id = $area['titular_funcionario_id'];
$this->updateAttributes( );
$this->updateInstance( );
$this->instance->setNextActivity("Aprovar Locação");
/* tirar esse comentario quando estiver valendo de verdade */
$this->instance->setNextUser($superior_id);
$this->commitInstance( );
return true;
}
$num_recusados = 0;
foreach($situacao as $s)
{
if (($s =='Reserva Recusada') || ($s =='Locação Reprovada COEVE'))
{
$num_recusados = $num_recusados + 1;
}
}
/* se todos os recursos estiverem com a situacao Reserva Recusada ou Locação
* Reprovada COEVE vai pra atividade concluir e muda o status da reserva para Reserva Recusada
*/
if (($num_recusados == $cont_recursos))
{
$this->envia_email();
$this->commandText = "
UPDATE
reserva_recursos.reserva
SET
status_reserva = 'Reserva Recusada'
WHERE
reserva_id =".$this->request['_reserva_id'];
$this->resultSet = $this->DAO->query($this->commandText);
$this->updateAttributes( );
$this->updateInstance( );
$this->instance->setNextActivity("concluir");
$this->commitInstance( );
return true;
}
else
{
$this->envia_email();
$this->updateAttributes( );
$this->updateInstance( );
$this->instance->setNextActivity("Registrar Andamento da Reserva");
$this->commitInstance( );
return true;
}
}
/**
* Implementa acao envia_email da atividade - Monta os dados para enviar o email ao usuario
* @access public
* @return bool
*/
function envia_email()
{
$this->updateAttributes( );
$this->dados_solicitante = $this->dados_usuario($this->_solicitante_id);
$this->_destinatario = $this->dados_solicitante['email'];
$this->_email_remetente = "eventos@celepar.pr.gov.br";
$this->_assunto = "Solicitação de Reserva de Recursos";
$this->_texto_email = '
Solicitação de Reserva de Recursos
Sua Solicitação de Reserva de Recursos já foi avaliada.
Veja como ficaram as solicitações dos recursos efetuadas por você no Workflow do Expresso, processo Reserva de Recursos -> Consultar -> Consultar Reservas.
Em caso de dúvida, contate a COEVE - Coordenação de Eventos através do ramal 5507.
';
return true;
}
/**
* Implementa acao cancelar_avaliacao da atividade - Troca os valores do campo situação para Em espera.
* @access public
* @return bool
*/
function cancelar_avaliacaoAction()
{
$dados_solicitacao = $this->dados_solicitacao_instancia();
$datas_solicitacao = $this->data_solicitacao($dados_solicitacao['reserva_id']);
$recursos = $this->lista_recursos_por_data_id_recurso($datas_solicitacao,$dados_solicitacao['reserva_id']);
foreach ($recursos as $r)
{
if ($r['recurso']=='Sala')
{
$this->commandText = "
UPDATE
reserva_recursos.reserva_sala
SET
situacao = 'Em espera'
WHERE
reserva_sala_id =".$r['num_reserva'];
$this->resultSet = $this->DAO->query($this->commandText);
}
elseif ($r['recurso']=='Equipamento')
{
$this->commandText2 = "
UPDATE
reserva_recursos.reserva_equipamento
SET
situacao = 'Em espera'
WHERE
reserva_equipamento_id =".$r['num_reserva'];
$this->resultSet2 = $this->DAO->query($this->commandText2);
}
else
{
$this->commandText2 = "
UPDATE
reserva_recursos.equipamento_locacao
SET
situacao = 'Locar'
WHERE
reserva_equipamento_id =".$r['num_reserva'];
$this->resultSet2 = $this->DAO->query($this->commandText2);
}
}
return true;
}
}
?> ]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->CANCELAR_RESERVA);
}
/**
* Executa a ação exibir reserva da atividade.
* @return void
* @access public
*/
function exibir_reserva()
{
$this->model->exibir_reservaAction();
$this->loadViewVars();
$this->showForm($this->EXIBIR_RESERVA);
}
/**
* Executa a ação cancelar completa da atividade.
* @return void
* @access public
*/
function cancelar_completa()
{
$this->model->cancelar_completaAction();
$this->__default();
}
/**
* Executa a ação cancelar itens da atividade.
* @return void
* @access public
*/
function cancelar_itens()
{
if ($this->model->cancelar_itensAction())
{
$this->loadViewVars();
$this->showForm($this->EXIBIR_RESERVA);
}
else
$this->__default();
}
/**
* Executa a ação cancelar data da atividade.
* @return void
* @access public
*/
function cancelar_data()
{
if ($this->model->cancelar_dataAction())
{
$this->loadViewVars();
$this->showForm($this->EXIBIR_RESERVA);
}
else
$this->__default();
}
/**
* Executa a ação filtrar da atividade.
* @return void
* @access public
*/
function filtrar()
{
if ($this->model->filtrarAction())
{
$this->loadViewVars();
$this->showForm($this->CANCELAR_RESERVA);
}
else
$this->__default();
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?> ]]>
factory->getInstance('wf_role');
$usuarios_id_perfil = $wf_role->getUsersFromRole(COEVE);
foreach ($usuarios_id_perfil as $uip)
$id_perfil[] = $uip['id'] ;
// atribui a variavel $usuario_atual o id de quem está logado no expresso
$usuario_atual = $this->getWfProperty('wf_user_id');
$order = " ORDER BY data_solicitacao desc";
$select = $this->select_solicitacoes_nao_canceladas();
// se que está logado pertence ao perfil COEVE - tem acesso a todas as reservas
if (in_array($usuario_atual,$id_perfil))
{
$select = $select.$order;
$todas_solicitacoes = $this->resultado_solicitacoes($select);
$solicitacoes_futuras = $this->solicitacoes_futuras($todas_solicitacoes);
$grupo = 'COEVE';
}
// se quem está logado for usuario comum - tem acesso somente as reserva solicitadas por ele mesmo
else
{
$where = " AND solicitante_id = ".$usuario_atual;
$select = $select.$where.$order;
$todas_solicitacoes = $this->resultado_solicitacoes($select);
$solicitacoes_futuras = $this->solicitacoes_futuras($todas_solicitacoes);
$grupo = 'Usuarios';
}
if (!empty($solicitacoes_futuras))
{
foreach ($solicitacoes_futuras as $sf)
$dados_solicitacoes[]=$this->dados_solicitacao_por_reserva($sf);
}
$this->addViewVar("solicitacoes" , $dados_solicitacoes );
$this->addViewVar("grupo" , $grupo );
return true;
}
/**
* Monta um array com o id de todas as solicitações posteriores a data de hoje
* @access public
* @return array
*/
function solicitacoes_futuras($todas_solicitacoes)
{
// para cada solicitacao encontrar as datas
if (!empty($todas_solicitacoes))
{
foreach ($todas_solicitacoes as $ls)
$datas_solicitacoes[] = $this->data_solicitacao($ls) ;
}
$hoje = date('Y-m-d H:i:s');
// selecionar somente as solicitações onde a data final é maior que a data de hj.
if (!empty($datas_solicitacoes))
{
foreach ($datas_solicitacoes as $ds)
{
foreach ($ds as $ds2)
{
if ($ds2['data_hora_fim']>= $hoje)
$solicitacao[] = $ds2['reserva_id'];
}
// monta o array somente com as solicitações em andamento
if (!empty($solicitacao))
$solicitacoes_futuras[]=$solicitacao[0];
$solicitacao = array();
}
}
return $solicitacoes_futuras;
}
/**
* Monta o codigo sql para buscar todas as solicitações que ainda não foram canceladas
* @access public
* @return string
*/
function select_solicitacoes_nao_canceladas()
{
// monta o select para achar as solicitações
$select = $this->select_solicitacoes();
$where = " AND status_reserva != 'Reserva Cancelada'";
$select = $select.$where;
return $select;
}
/**
* Verifica se pelo menos um campo de pesquisa foi utilizado para utilizar o filtro
* @access public
* @return array
*/
function erro_filtro()
{
$erro = array();
if (empty($this->request['pesq_data_solicitacao']) &&
empty($this->request['pesq_descricao']) &&
empty($this->request['pesq_solicitante']) &&
empty($this->request['pesq_responsavel']) &&
$this->request['pesq_tipo_evento'] == 2)
{
$erro[] = "Escolha um dos campos de pesquisa para filtrar as Reservas.";
}
return $erro;
}
/**
* Implementa acao filtrar da atividade
* @access public
* @return bool
*/
function filtrarAction()
{
$usuario_atual = $this->getWfProperty('wf_user_id');
$grupo = $this->request['grupo'];
if($this->request['params']=='todos')
$this->defaultAction();
else
{
if (!count($this->erro_filtro()))
{
if (!empty($this->request['pesq_data_solicitacao']))
{
$data = ($this->request['pesq_data_solicitacao']);
$dia = $data[0].$data[1];
$mes = $data[3].$data[4];
$ano = $data[6].$data[7].$data[8].$data[9];
$data_nova = $ano."-".$mes."-".$dia;
$where1 = " AND upper(data_solicitacao) LIKE '%".addslashes(strtoupper($data_nova))."%' ";
}
if ($this->request['pesq_descricao']!="")
$where2 = " AND upper(desc_solicitacao) LIKE '%".addslashes(strtoupper($this->request['pesq_descricao']))."%' ";
if ($this->request['pesq_tipo_evento']!=2)
$where3 = " AND tipo_evento =".$this->request['pesq_tipo_evento']." ";
$where4 = $where1.$where2.$where3;
if ($grupo == 'COEVE')
{
if ($this->request['pesq_responsavel']!="")
$where5 = " AND responsavel_id =".$this->request['pesq_responsavel']." ";
if ($this->request['pesq_solicitante']!="")
$where6 = " AND solicitante_id =".$this->request['pesq_solicitante']." ";
$order = " ORDER BY data_solicitacao desc";
$select_solicitacoes = $this->select_solicitacoes_nao_canceladas();
$select_solicitacoes = $select_solicitacoes.$where4.$where5.$where6.$order;
}
else
{
$where5 = " AND solicitante_id =".$usuario_atual." ";
$order = " ORDER BY data_solicitacao desc";
$select_solicitacoes = $this->select_solicitacoes_nao_canceladas();
$select_solicitacoes = $select_solicitacoes.$where4.$where5.$order;
}
$todas_solicitacoes = $this->resultado_solicitacoes($select_solicitacoes);
$solicitacoes_futuras = $this->solicitacoes_futuras($todas_solicitacoes);
if (!empty($solicitacoes_futuras))
{
foreach ($solicitacoes_futuras as $sf)
$dados_solicitacoes[]=$this->dados_solicitacao_por_reserva($sf);
}
$this->addViewVar("solicitacoes" , $dados_solicitacoes );
$this->addViewVar("grupo" , $grupo );
return true;
}
else
{
$this->addViewVar("msg" , $this->erro_filtro() );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
}
/**
* Implementa acao exibir reserva da atividade
* @access public$this->_reserva_id
* @return bool
*/
function exibir_reservaAction()
{
$reserva_id = $this->request['params'];
$dados_solicitacao = $this->dados_solicitacao_por_reserva($reserva_id);
$datas_solicitacao = $this->data_solicitacao($reserva_id);
$recursos = $this->lista_recursos_por_data_id_recurso($datas_solicitacao,$reserva_id);
$this->addViewVar("dados_reserva" , $dados_solicitacao );
$this->addViewVar("recursos" , $recursos );
$this->addViewVar("datas_reserva" , $datas_solicitacao );
return true;
}
/**
* Implementa acao cancelar completa da atividade
* @access public
* @return bool
*/
function cancelar_completaAction()
{
$reserva_id = $this->request['reserva_id'];
$dados_solicitacao = $this->dados_solicitacao_por_reserva($reserva_id);
$data_solicitacao = $this->data_solicitacao($reserva_id);
$recursos = $this->lista_recursos_por_data_id_recurso($data_solicitacao,$reserva_id);
foreach ($recursos as $r)
{
$id_recurso = $r['num_reserva'];
$recurso = $r['recurso'];
/* cancela todos os recursos da reserva */
$this->inverte_status_recursos($recurso,$id_recurso);
}
$this->inverte_status_reserva($reserva_id);
return true;
}
/**
* Implementa acao cancelar itens da atividade - Dá a opção de cancelar item por item da solicitacao,
* se todos os itens da solicitação forem cancelados a solicitação inteira será cancelada
* @access public
* @return bool
*/
function cancelar_itensAction()
{
/* recupera o parametro paddaso pelo dispach, como são dois parametros separados por virgula
* é necessário utilizar a função explode para separar a string em um array de duas posições
*/
$params = $this->request['params'];
$params = explode(",", $params);
$id_recurso = $params['0'];
$recurso = $params['1'];
$reserva_id = $this->request['reserva_id'];
/* cancela um determinado recurso */
$this->inverte_status_recursos($recurso,$id_recurso);
$dados_solicitacao = $this->dados_solicitacao_por_reserva($reserva_id);
$datas_solicitacao = $this->data_solicitacao($reserva_id);
$recursos = $this->lista_recursos_por_data_id_recurso($datas_solicitacao,$reserva_id);
/* Verifica a situação de todos os recursos da reserva */
$count_cancelada = 0;
foreach ($recursos as $r)
{
if ($r['situacao'] != 'Solicitação Cancelada')
$count_nao_cancelada = $count_nao_cancelada + 1;
}
/* se todos os recursos da reserva estiverem cancelados, muda o status da reserva para
* Reserva Cancelada.
*/
if ($count_nao_cancelada == 0)
{
$this->inverte_status_reserva($reserva_id);
return false;
}
else
{
$this->addViewVar("acao" , "cancela_itens" );
$this->addViewVar("dados_reserva" , $dados_solicitacao );
$this->addViewVar("datas_reserva" , $datas_solicitacao );
$this->addViewVar("recursos" , $recursos );
$this->addViewVar("icon_msg" , "icon_msg_sucesso.png" );
$this->addViewVar("class_msg" , "msg_sucesso" );
$this->addViewVar("msg" , "O cancelamento do recurso foi realizado com sucesso." );
return true;
}
}
/**
* Muda o valor do campo situação de um determinado recurso de uma determinada solicitacao
* @access public
* @param string $recurso recurso que será mudado
* @param int $id_recurso id do recurso reservado
* @return bool
*/
function inverte_status_recursos($recurso,$id_recurso)
{
if ($recurso == "Locação")
{
$this->commandText = "
UPDATE
reserva_recursos.equipamento_locacao
SET
situacao = 'Solicitação Cancelada'
WHERE
equipamento_locacao_id =".$id_recurso;
}
else
{
$this->commandText = "
UPDATE
reserva_recursos.reserva_".$recurso."
SET
situacao = 'Solicitação Cancelada'
WHERE
reserva_".$recurso."_id =".$id_recurso;
}
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Muda o valor do campo situação de uma determinada reserva
* @access public
* @param int $reserva_id id da reserva
* @return bool
*/
function inverte_status_reserva($reserva_id)
{
$this->commandText = "
UPDATE
reserva_recursos.reserva
SET
status_reserva = 'Reserva Cancelada'
WHERE
reserva_id =".$reserva_id;
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Implementa acao cancelar data da atividade - Dá a opção de cancelar por data de solicitacao,
* se todos os itens da solicitação forem cancelados a solicitação inteira será cancelada
* @access public
* @return bool
*/
function cancelar_dataAction()
{
/* recupera o parametro passado pelo dispach, como são dois parametros separados por virgula
* é necessário utilizar a função explode para separar a string em um array de duas posições
*/
$datas = $this->request['params'];
$datas = explode(",", $datas);
$data_hora_inicio = $datas['0'];
$data_hora_fim = $datas['1'];
$reserva_id = $this->request['reserva_id'];
/* inverte a situacao das salas de ums reserva num determinado horário*/
$this->commandText = "
UPDATE
reserva_recursos.reserva_sala
SET
situacao = 'Solicitação Cancelada'
WHERE
reserva_id =".$reserva_id."
AND
data_hora_inicio = '".$data_hora_inicio."'
AND
data_hora_fim = '".$data_hora_fim."'";
$this->resultSet = $this->DAO->query($this->commandText);
/* inverte a situacao dos equipamentos de uma reserva num determinado horário */
$this->commandText2 = "
UPDATE
reserva_recursos.reserva_equipamento
SET
situacao = 'Solicitação Cancelada'
WHERE
reserva_id =".$reserva_id."
AND
data_hora_inicio = '".$data_hora_inicio."'
AND
data_hora_fim = '".$data_hora_fim."'";
$this->resultSet2 = $this->DAO->query($this->commandText2);
/* inverte a situacao das locações de uma reserva num determinado horário */
$this->commandText3 = "
UPDATE
reserva_recursos.equipamento_locacao
SET
situacao = 'Solicitação Cancelada'
WHERE
reserva_id =".$reserva_id."
AND
data_hora_inicio = '".$data_hora_inicio."'
AND
data_hora_fim = '".$data_hora_fim."'";
$this->resultSet3 = $this->DAO->query($this->commandText3);
$dados_solicitacao = $this->dados_solicitacao_por_reserva($reserva_id);
$datas_solicitacao = $this->data_solicitacao($reserva_id);
$recursos = $this->lista_recursos_por_data_id_recurso($datas_solicitacao,$reserva_id);
/* Verifica a situação de todos os recursos da reserva */
$count_cancelada = 0;
foreach ($recursos as $r)
{
if ($r['situacao'] != 'Solicitação Cancelada')
$count_nao_cancelada = $count_nao_cancelada + 1;
}
/* se todos os recursos da reserva estiverem cancelados, muda o status da reserva para
* Reserva Cancelada.*/
if ($count_nao_cancelada == 0)
{
$this->inverte_status_reserva($reserva_id);
return false;
}
else
{
$this->addViewVar("acao" , "cancela_data" );
$this->addViewVar("dados_reserva" , $dados_solicitacao );
$this->addViewVar("datas_reserva" , $datas_solicitacao );
$this->addViewVar("recursos" , $recursos );
$this->addViewVar("icon_msg" , "icon_msg_sucesso.png" );
$this->addViewVar("class_msg" , "msg_sucesso" );
$this->addViewVar("msg" , "A data de solicitação de reserva foi cancelada com sucesso." );
return true;
}
}
}
?> ]]>
model->defaultAction ( );
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->__default ( );
$this->model->DAO->disconnect ( );
}
}
?>
]]>
]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->CONSULTAR_ENTREGA);
}
/**
* Executa a ação proxima da atividade.
* @return void
* @access public
*/
function proxima()
{
$this->model->proximaAction();
$this->loadViewVars();
$this->showForm($this->CONSULTAR_ENTREGA);
}
/**
* Executa a ação anterior da atividade.
* @return void
* @access public
*/
function anterior()
{
$this->model->anteriorAction();
$this->loadViewVars();
$this->showForm($this->CONSULTAR_ENTREGA);
}
/**
* Executa a ação imprimir da atividade.
* @return void
* @access public
*/
function imprimir()
{
$this->model->imprimirAction();
$this->loadViewVars();
$this->showForm($this->IMPRIMIR_ENTREGA);
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?> ]]>
semana = $this->monta_semana();
$this->dt_primeiro_dia = $this->semana['primeiro_dia'];
$this->dt_ultimo_dia = $this->semana['ultimo_dia'];
$dados = $this->monta_array($this->dt_primeiro_dia, $this->dt_ultimo_dia);
$this->addViewVar("dt_primeiro_dia" , substr(($this->dt_primeiro_dia), 8,2)."/".substr(($this->dt_primeiro_dia), 5,2)."/".substr(($this->dt_primeiro_dia), 0,4) );
$this->addViewVar("dt_ultimo_dia" , substr(($this->dt_ultimo_dia), 8,2)."/".substr(($this->dt_ultimo_dia), 5,2)."/".substr(($this->dt_ultimo_dia), 0,4) );
$this->addViewVar("dados" , $dados );
return true;
}
/**
* Monta um array com todo os dados necessários referentes as solicitações que requisitaram café
* @access public
* @return array
*/
function monta_array($dt_primeiro_dia, $dt_ultimo_dia)
{
/* monta um array com todos os dados que passarão para o template */
$data = $dt_primeiro_dia;
while ($data <= $dt_ultimo_dia)
{
$dt = substr(($data), 0,4)."-".substr(($data), 5,2)."-".substr(($data), 8,2);
$dt_completa_inicio = $dt." 00:00:00";
$dt_completa_fim = $dt." 23:59:59";
$this->commandText = "
SELECT
RS.sala_id,
RS.reserva_id,
to_char((RS.data_hora_inicio) ,'DD/MM/YYYY' ) as data,
to_char((RS.data_hora_inicio) ,'HH24:MI' ) as hora_inicio,
to_char((RS.data_hora_fim) ,'HH24:MI' ) as hora_fim,
S.nome,
R.cafe,
R.obs_cafe
FROM
(reserva_recursos.reserva_sala as RS INNER JOIN reserva_recursos.reserva as R
ON
RS.reserva_id = R.reserva_id) INNER JOIN reserva_recursos.sala as S
ON
S.sala_id = RS.sala_id
WHERE
RS.data_hora_inicio >= '".$dt_completa_inicio."'
AND
RS.data_hora_inicio <= '".$dt_completa_fim."'
AND
R.cafe = '1'
AND
RS.situacao != 'Reserva Recusada'
AND
RS.situacao != 'Solicitação Cancelada'
AND
R.status_reserva != 'Reserva Cancelada'
ORDER BY
RS.data_hora_inicio";
$this->resultSet = $this->DAO->query($this->commandText);
$cafe = array();
$count = 0;
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$count = $count + 1;
$cafe[] = array(
"sala_id" => $res['sala_id'],
"reserva_id" => $res['reserva_id'],
"data" => $res['data'],
"hora_inicio" => $res['hora_inicio'],
"hora_fim" => $res['hora_fim'],
"sala" => $res['nome'],
"observacao" => $res['obs_cafe']);
}
$dados[] = array (
"data" => substr(($data), 8,2)."/".substr(($data), 5,2)."/".substr(($data), 0,4),
"dia" => substr(($data), 8,2),
"mes" => substr(($data), 5,2),
"ano" => substr(($data), 0,4),
"count" => $count,
"cafe" => $cafe);
$temp = explode("/", $data);
$data = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] + 1, $temp[0]));
}
return $dados;
}
/**
* Implementa acao de ir para a proxima semana da atividade
* @access public
* @return bool
*/
function proximaAction()
{
$data = substr(($this->request['params']), 6,4)."/".substr(($this->request['params']), 3,2)."/".substr(($this->request['params']), 0,2);
$temp = explode("/", $data);
$dt_primeiro_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] + 1, $temp[0]));
$dt_ultimo_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] + 7, $temp[0]));
$dados = $this->monta_array($dt_primeiro_dia, $dt_ultimo_dia);
$this->addViewVar("dt_primeiro_dia" , substr(($dt_primeiro_dia), 8,2)."/".substr(($dt_primeiro_dia), 5,2)."/".substr(($dt_primeiro_dia), 0,4) );
$this->addViewVar("dt_ultimo_dia" , substr(($dt_ultimo_dia), 8,2)."/".substr(($dt_ultimo_dia), 5,2)."/".substr(($dt_ultimo_dia), 0,4) );
$this->addViewVar("dados" , $dados );
return true;
}
/**
* Implementa acao de ir para a semana anterior da atividade
* @access public
* @return bool
*/
function anteriorAction()
{
$data = substr(($this->request['params']), 6,4)."/".substr(($this->request['params']), 3,2)."/".substr(($this->request['params']), 0,2);
$temp = explode("/", $data);
$dt_ultimo_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] - 1, $temp[0]));
$dt_primeiro_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] - 7, $temp[0]));
$dados = $this->monta_array($dt_primeiro_dia, $dt_ultimo_dia);
$this->addViewVar("dt_primeiro_dia" , substr(($dt_primeiro_dia), 8,2)."/".substr(($dt_primeiro_dia), 5,2)."/".substr(($dt_primeiro_dia), 0,4) );
$this->addViewVar("dt_ultimo_dia" , substr(($dt_ultimo_dia), 8,2)."/".substr(($dt_ultimo_dia), 5,2)."/".substr(($dt_ultimo_dia), 0,4) );
$this->addViewVar("dados" , $dados );
return true;
}
/**
* Implementa acao imprimir da atividade
* @access public
* @return bool
*/
function imprimirAction()
{
$data = substr(($this->request['data']), 6,4)."/".substr(($this->request['data']), 3,2)."/".substr(($this->request['data']), 0,2);
$temp = explode("/", $data);
$dt_ultimo_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] + 0, $temp[0]));
$dt_primeiro_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] - 6, $temp[0]));
$dados = $this->monta_array($dt_primeiro_dia, $dt_ultimo_dia);
$this->addViewVar("dt_primeiro_dia" , substr(($dt_primeiro_dia), 8,2)."/".substr(($dt_primeiro_dia), 5,2)."/".substr(($dt_primeiro_dia), 0,4) );
$this->addViewVar("dt_ultimo_dia" , substr(($dt_ultimo_dia), 8,2)."/".substr(($dt_ultimo_dia), 5,2)."/".substr(($dt_ultimo_dia), 0,4) );
$this->addViewVar("dados" , $dados );
return true;
}
}
?> ]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->CONSULTAR_ENTREGA);
}
/**
* Executa a ação proxima da atividade.
* @return void
* @access public
*/
function proxima()
{
$this->model->proximaAction();
$this->loadViewVars();
$this->showForm($this->CONSULTAR_ENTREGA);
}
/**
* Executa a ação anterior da atividade.
* @return void
* @access public
*/
function anterior()
{
$this->model->anteriorAction();
$this->loadViewVars();
$this->showForm($this->CONSULTAR_ENTREGA);
}
/**
* Executa a ação imprimir da atividade.
* @return void
* @access public
*/
function imprimir()
{
$this->model->imprimirAction();
$this->loadViewVars();
$this->showForm($this->IMPRIMIR_ENTREGA);
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?> ]]>
semana = $this->monta_semana();
$this->dt_primeiro_dia = $this->semana['primeiro_dia'];
$this->dt_ultimo_dia = $this->semana['ultimo_dia'];
$dados = $this->monta_array($this->dt_primeiro_dia, $this->dt_ultimo_dia);
$this->addViewVar("dt_primeiro_dia" , substr(($this->dt_primeiro_dia), 8,2)."/".substr(($this->dt_primeiro_dia), 5,2)."/".substr(($this->dt_primeiro_dia), 0,4) );
$this->addViewVar("dt_ultimo_dia" , substr(($this->dt_ultimo_dia), 8,2)."/".substr(($this->dt_ultimo_dia), 5,2)."/".substr(($this->dt_ultimo_dia), 0,4) );
$this->addViewVar("dados" , $dados );
return true;
}
/**
* Monta um array com todos os dados necessários para mostrar a reserva de equipamentos
* para um determinado periodo
* @access public
* @return array
*/
function monta_array($dt_primeiro_dia, $dt_ultimo_dia)
{
/* monta um array com todos os dados que passarão para o template */
$data = $dt_primeiro_dia;
while ($data <= $dt_ultimo_dia)
{
$dt = substr(($data), 0,4)."-".substr(($data), 5,2)."-".substr(($data), 8,2);
$dt_completa_inicio = $dt." 00:00:00";
$dt_completa_fim = $dt." 23:59:59";
$this->commandText = "
SELECT
RE.equipamento_id,
RE.reserva_id,
to_char((RE.data_hora_inicio) ,'DD/MM/YYYY' ) as data,
to_char((RE.data_hora_inicio) ,'HH24:MI' ) as hora_inicio,
to_char((RE.data_hora_fim) ,'HH24:MI' ) as hora_fim,
R.local_entrega_equipamento,
E.descricao
FROM
(reserva_recursos.reserva_equipamento as RE INNER JOIN reserva_recursos.reserva as R
ON
RE.reserva_id = R.reserva_id) INNER JOIN reserva_recursos.equipamento as E
ON
E.equipamento_id = RE.equipamento_id
WHERE
RE.data_hora_inicio >= '".$dt_completa_inicio."'
AND
RE.data_hora_inicio <= '".$dt_completa_fim."'
AND
RE.situacao != 'Reserva Recusada'
AND
RE.situacao != 'Solicitação Cancelada'
AND
R.status_reserva != 'Reserva Cancelada'
ORDER BY
RE.data_hora_inicio";
$this->resultSet = $this->DAO->query($this->commandText);
$equipamentos = array();
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$equipamentos[] = array(
"equipamento_id" => $res['equipamento_id'],
"reserva_id" => $res['reserva_id'],
"data" => $res['data'],
"hora_inicio" => $res['hora_inicio'],
"hora_fim" => $res['hora_fim'],
"local" => $res['local_entrega_equipamento'],
"descricao" => $res['descricao']);
}
$dados[] = array (
"data" => substr(($data), 8,2)."/".substr(($data), 5,2)."/".substr(($data), 0,4),
"dia" => substr(($data), 8,2),
"mes" => substr(($data), 5,2),
"ano" => substr(($data), 0,4),
"equipamentos" => $equipamentos);
$temp = explode("/", $data);
$data = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] + 1, $temp[0]));
}
return $dados;
}
/**
* Implementa acao de ir para a proxima semana da atividade
* @access public
* @return bool
*/
function proximaAction()
{
$data = substr(($this->request['params']), 6,4)."/".substr(($this->request['params']), 3,2)."/".substr(($this->request['params']), 0,2);
$temp = explode("/", $data);
$dt_primeiro_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] + 1, $temp[0]));
$dt_ultimo_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] + 7, $temp[0]));
$dados = $this->monta_array($dt_primeiro_dia, $dt_ultimo_dia);
$this->addViewVar("dt_primeiro_dia" , substr(($dt_primeiro_dia), 8,2)."/".substr(($dt_primeiro_dia), 5,2)."/".substr(($dt_primeiro_dia), 0,4) );
$this->addViewVar("dt_ultimo_dia" , substr(($dt_ultimo_dia), 8,2)."/".substr(($dt_ultimo_dia), 5,2)."/".substr(($dt_ultimo_dia), 0,4) );
$this->addViewVar("dados" , $dados );
return true;
}
/**
* Implementa acao de ir para a semana anterior da atividade
* @access public
* @return bool
*/
function anteriorAction()
{
$data = substr(($this->request['params']), 6,4)."/".substr(($this->request['params']), 3,2)."/".substr(($this->request['params']), 0,2);
$temp = explode("/", $data);
$dt_ultimo_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] - 1, $temp[0]));
$dt_primeiro_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] - 7, $temp[0]));
$dados = $this->monta_array($dt_primeiro_dia, $dt_ultimo_dia);
$this->addViewVar("dt_primeiro_dia" , substr(($dt_primeiro_dia), 8,2)."/".substr(($dt_primeiro_dia), 5,2)."/".substr(($dt_primeiro_dia), 0,4) );
$this->addViewVar("dt_ultimo_dia" , substr(($dt_ultimo_dia), 8,2)."/".substr(($dt_ultimo_dia), 5,2)."/".substr(($dt_ultimo_dia), 0,4) );
$this->addViewVar("dados" , $dados );
return true;
}
/**
* Implementa acao imprimir da atividade
* @access public
* @return bool
*/
function imprimirAction()
{
$data = substr(($this->request['data']), 6,4)."/".substr(($this->request['data']), 3,2)."/".substr(($this->request['data']), 0,2);
$temp = explode("/", $data);
$dt_ultimo_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] + 0, $temp[0]));
$dt_primeiro_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] - 6, $temp[0]));
$dados = $this->monta_array($dt_primeiro_dia, $dt_ultimo_dia);
$this->addViewVar("dt_primeiro_dia" , substr(($dt_primeiro_dia), 8,2)."/".substr(($dt_primeiro_dia), 5,2)."/".substr(($dt_primeiro_dia), 0,4) );
$this->addViewVar("dt_ultimo_dia" , substr(($dt_ultimo_dia), 8,2)."/".substr(($dt_ultimo_dia), 5,2)."/".substr(($dt_ultimo_dia), 0,4) );
$this->addViewVar("dados" , $dados );
return true;
}
}
?> ]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->CONSULTAR_RECURSOS);
}
/**
* Executa a ação padrao/inicial da atividade.
* @return void
* @access private
*/
function disponibilidade_equipamento()
{
$this->model->disponibilidade_equipamentoAction();
$this->loadViewVars();
$this->showForm($this->EXIBIR_DISPONIBILIDADE);
}
/**
* Executa a ação padrao/inicial da atividade.
* @return void
* @access private
*/
function disponibilidade_sala()
{
$this->model->disponibilidade_salaAction();
$this->loadViewVars();
$this->showForm($this->EXIBIR_DISPONIBILIDADE);
}
/**
* Executa a ação filtrar da atividade.
* @return void
* @access private
*/
function filtrar()
{
if ($this->model->filtrarAction())
{
$this->loadViewVars();
$this->showForm($this->CONSULTAR_RESERVAS);
}
else
$this->__default();
}
/**
* Executa a ação mostrar equipamentos da atividade.
* @return void
* @access private
*/
function mostra_equipamento()
{
$this->model->mostra_equipamentoAction();
$this->loadViewVars();
$this->showForm($this->EXIBIR_EQUIPAMENTO);
}
/**
* Executa a ação mostrar sala da atividade.
* @return void
* @access private
*/
function mostra_sala()
{
$this->model->mostra_salaAction();
$this->loadViewVars();
$this->showForm($this->EXIBIR_SALA);
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?> ]]>
select_equipamentos().$order;
$equipamentos = $this->resultado_equipamentos($select_equipamentos);
$order = " ORDER BY nome";
$select_sala = $this->select_salas().$order;
$salas = $this->resultado_salas($select_sala);
$this->addViewVar("salas" , $salas );
$this->addViewVar("equipamentos" , $equipamentos );
return true;
}
/**
* Implementa acao disponibilidade_equipamento da atividade
* @access public
* @return bool
*/
function disponibilidade_equipamentoAction()
{
$equipamento_id = $this->request['params'];
$data_atual = date('Y-m-d H:i:s');
$this->commandText = "
SELECT
RE.equipamento_id,
RE.reserva_id,
RE.data_hora_inicio,
RE.data_hora_fim,
RE.situacao,
R.solicitante_id,
R.desc_solicitacao,
to_char((RE.data_hora_inicio),'DD/MM/YYYY') as data,
to_char((RE.data_hora_inicio),'HH24:MI') as hora_inicio,
to_char((RE.data_hora_fim),'HH24:MI') as hora_fim
FROM
reserva_recursos.reserva_equipamento AS RE, reserva_recursos.reserva AS R
WHERE
RE.reserva_id = R.reserva_id
AND
RE.equipamento_id = ".$equipamento_id."
AND
RE.data_hora_inicio > '".$data_atual."'
AND
(RE.situacao = 'Em espera' OR RE.situacao = 'Reserva Confirmada')
ORDER BY data, hora_inicio, hora_fim";
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$dados_usuario = $this->dados_usuario($res['solicitante_id']);
$solicitante = $dados_usuario['nome_completo'];
$telefone = $dados_usuario['telefone'];
$dados[] = array(
"equipamento_id" => $res['equipamento_id'],
"reserva_id" => $res['reserva_id'],
"data_hora_inicio" => $res['data_hora_inicio'],
"data_hora_fim" => $res['data_hora_fim'],
"situacao" => $res['situacao'],
"solicitante_id" => $res['solicitante_id'],
"desc_solicitacao" => $res['desc_solicitacao'],
"data" => $res['data'],
"hora_inicio" => $res['hora_inicio'],
"hora_fim" => $res['hora_fim'],
"solicitante" => $solicitante,
"telefone" => $telefone);
}
$recurso = $this->dados_equipamento($equipamento_id);
$recurso = $recurso[0];
$this->addViewVar("recurso" , $recurso );
$this->addViewVar("dados" , $dados );
return true;
}
/**
* Implementa acao disponibilidade_sala da atividade
* @access public
* @return bool
*/
function disponibilidade_salaAction()
{
$sala_id = $this->request['params'];
$data_atual = date('Y-m-d H:i:s');
$this->commandText = "
SELECT
RS.sala_id,
RS.reserva_id,
RS.data_hora_inicio,
RS.data_hora_fim,
RS.situacao,
R.solicitante_id,
R.desc_solicitacao,
to_char((RS.data_hora_inicio),'DD/MM/YYYY') as data,
to_char((RS.data_hora_inicio),'HH24:MI') as hora_inicio,
to_char((RS.data_hora_fim),'HH24:MI') as hora_fim
FROM
reserva_recursos.reserva_sala AS RS, reserva_recursos.reserva AS R
WHERE
RS.reserva_id = R.reserva_id
AND
RS.sala_id = ".$sala_id."
AND
RS.data_hora_inicio > '".$data_atual."'
AND
(RS.situacao = 'Em espera' OR RS.situacao = 'Reserva Confirmada')
ORDER BY data, hora_inicio, hora_fim";
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$dados_usuario = $this->dados_usuario($res['solicitante_id']);
$solicitante = $dados_usuario['nome_completo'];
$telefone = $dados_usuario['telefone'];
$dados[] = array(
"sala_id" => $res['sala_id'],
"reserva_id" => $res['reserva_id'],
"data_hora_inicio" => $res['data_hora_inicio'],
"data_hora_fim" => $res['data_hora_fim'],
"situacao" => $res['situacao'],
"solicitante_id" => $res['solicitante_id'],
"desc_solicitacao" => $res['desc_solicitacao'],
"data" => $res['data'],
"hora_inicio" => $res['hora_inicio'],
"hora_fim" => $res['hora_fim'],
"solicitante" => $solicitante,
"telefone" => $telefone);
}
$recurso = $this->dados_sala($sala_id);
$recurso = $recurso[0];
$this->addViewVar("recurso" , $recurso );
$this->addViewVar("dados" , $dados );
return true;
}
/**
* Implementa acao filtrar da atividade
* @access public
* @return bool
*/
function filtrarAction()
{
$tipo_pesquisa = $this->request['params'];
if ($tipo_pesquisa == 'todos')
$this->defaultAction();
else
{
if (!count($this->erro_filtro()))
{
if ($this->request['recurso']== 1) // equipamentos
{
if (!empty($this->request['pesq_nome']))
$where1 = " AND upper(TE.descricao) LIKE '%".addslashes(strtoupper($this->request['pesq_nome']))."%' ";
if ($this->request['pesq_descricao']!="")
$where2 = " AND upper(E.descricao) LIKE '%".addslashes(strtoupper($this->request['pesq_descricao']))."%' ";
if ($this->request['pesq_responsavel']!="")
$where3 = " AND E.responsavel_id =".$this->request['pesq_responsavel']." ";
$where = $where1.$where2.$where3;
$select_equipamentos = $this->select_equipamentos();
$select_equipamentos = $select_equipamentos.$where;
$equipamentos = $this->resultado_equipamentos($select_equipamentos);
$this->addViewVar("equipamentos" , $equipamentos );
}
else // salas
{
if (!empty($this->request['pesq_nome']))
$where1 = " AND upper(nome) LIKE '%".addslashes(strtoupper($this->request['pesq_nome']))."%' ";
if ($this->request['pesq_descricao']!="")
$where2 = " AND upper(descricao) LIKE '%".addslashes(strtoupper($this->request['pesq_descricao']))."%' ";
if ($this->request['pesq_responsavel']!="")
$where3 = " AND responsavel_id =".$this->request['pesq_responsavel']." ";
$where = $where1.$where2.$where3;
$select_salas = $this->select_salas();
$select_salas = $select_salas.$where;
$salas = $this->resultado_salas($select_salas);
$this->addViewVar("salas" , $salas );
}
return true;
}
else
{
$this->addViewVar("msg" , $this->erro_filtro() );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
}
/**
* Faz as verificações necessárias para filtrar os recursos
* @access public
* @return array
*/
function erro_filtro()
{
$erro = array();
if ( empty($this->request['pesq_nome']) && empty($this->request['pesq_descricao']) && empty($this->request['pesq_responsavel']) && ($this->request['recurso']== 0))
$erro[]="Escolha uma das opções da Consulta de Equipamentos para pesquisa.";
return $erro;
}
/**
* Monta o codigo SQL para selecionar os equipamentos ativos
* @access public
* @return string
*/
function select_equipamentos()
{
$this->commandText = "
SELECT
E.equipamento_id,
E.tipo_equipamento_id,
E.responsavel_id,
E.descricao as desc_equipamento,
TE.descricao as desc_tipo_equipamento
FROM
reserva_recursos.equipamento AS E, reserva_recursos.tipo_equipamento AS TE
WHERE
E.tipo_equipamento_id = TE.tipo_equipamento_id
AND
E.ativo = 1";
return $this->commandText;
}
/**
* Monta um array com os equipamentos resultantes do filtro
* @access public
* @return array
*/
function resultado_equipamentos($commandText)
{
$this->resultSet = $this->DAO->query($commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$dados_usuario = $this->dados_usuario($res['responsavel_id']);
$responsavel = $dados_usuario['nome_completo'];
$telefone = $dados_usuario['telefone'];
$equipamentos[] = array(
"equipamento_id" => $res['equipamento_id'],
"tipo_equipamento_id" => $res['tipo_equipamento_id'],
"desc_equipamento" => $res['desc_equipamento'],
"responsavel" => $responsavel,
"desc_tipo_equipamento" => $res['desc_tipo_equipamento'],
"telefone" => $telefone );
}
return $equipamentos;
}
/**
* Monta o codigo SQL para selecionar as salas ativas
* @access public
* @return string
*/
function select_salas()
{
$this->commandText = "
SELECT
sala_id,
responsavel_id,
nome,
descricao,
localizacao,
capacidade,
observacao
FROM
reserva_recursos.sala
WHERE
ativo = 1";
return $this->commandText;
}
/**
* Monta um array com as salas resultantes do filtro
* @access public
* @return array
*/
function resultado_salas($commandText)
{
$this->resultSet = $this->DAO->query($commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$dados_usuario = $this->dados_usuario($res['responsavel_id']);
$area = $dados_usuario['area'];
$responsavel = $dados_usuario['nome_completo'];
$telefone = $dados_usuario['telefone'];
$salas[] = array(
"sala_id" => $res['sala_id'],
"responsavel_id"=> $res['responsavel_id'],
"nome" => $res['nome'],
"descricao" => $res['descricao'],
"localizacao" => $res['localizacao'],
"observacao" => $res['observacao'],
"capacidade" => $res['capacidade'],
"responsavel" => $responsavel,
"area" => $area,
"telefone" => $telefone );
}
return $salas;
}
/**
* Implementa acao mostrar equipamento da atividade
* @access public
* @return bool
*/
function mostra_equipamentoAction()
{
$equipamento_id = $this->request['params'];
$solicitar = $this->request['solicitar'];
$lista_equipamentos = $this->dados_equipamento($equipamento_id);
$this->addViewVar("lista_equipamentos" , $lista_equipamentos );
$this->addViewVar("solicitar" , $solicitar );
return true;
}
/**
* Implementa acao mostrar sala da atividade
* @access public
* @return bool
*/
function mostra_salaAction()
{
$sala_id = $this->request['params'];
$solicitar = $this->request['solicitar'];
$lista_salas = $this->dados_sala($sala_id);
$this->addViewVar("lista_salas" , $lista_salas);
$this->addViewVar("solicitar" , $solicitar);
return true;
}
}
?> ]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->CONSULTAR_RESERVAS);
}
/**
* Executa a ação exibir reserva da atividade.
* @return void
* @access public
*/
function exibir_reserva()
{
$this->model->exibir_reservaAction();
$this->loadViewVars();
$this->showForm($this->EXIBIR_RESERVA);
}
/**
* Executa a ação filtrar da atividade.
* @return void
* @access public
*/
function filtrar()
{
if ($this->model->filtrarAction())
{
$this->loadViewVars();
$this->showForm($this->CONSULTAR_RESERVAS);
}
else
$this->__default();
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?> ]]>
select_solicitacoes();
$order = " ORDER BY data_solicitacao desc";
$select_solicitacao = $select_solicitacao.$order;
$lista_solicitacoes = $this->resultado_solicitacoes($select_solicitacao);
foreach ($lista_solicitacoes as $ls)
$dados_solicitacao[] = $this->dados_solicitacao_por_reserva($ls);
$this->addViewVar("dados_solicitacao" , $dados_solicitacao);
return true;
}
/**
* Implementa acao filtrar da atividade
* @access public
* @return bool
*/
function filtrarAction()
{
if ($this->request['params']=='todos')
$this->defaultAction();
else
{
if (!count($this->erro_filtro()))
{
if (!empty($this->request['pesq_data_solicitacao']))
{
$data = ($this->request['pesq_data_solicitacao']);
$dia = $data[0].$data[1];
$mes = $data[3].$data[4];
$ano = $data[6].$data[7].$data[8].$data[9];
/* muda o formato da data para o formato cadastrado no banco */
$data_nova = $ano."-".$mes."-".$dia;
$where1 = " AND upper(data_solicitacao) LIKE '%".addslashes(strtoupper($data_nova))."%' ";
}
if ($this->request['pesq_descricao']!="")
$where2 = " AND upper(desc_solicitacao) LIKE '%".addslashes(strtoupper($this->request['pesq_descricao']))."%' ";
if (!empty($this->request['pesq_solicitante']))
$where3 = " AND solicitante_id =".$this->request['pesq_solicitante']." ";
if ($this->request['pesq_tipo_evento']!=2)
$where4 = " AND tipo_evento =".$this->request['pesq_tipo_evento']." ";
if (!empty($this->request['pesq_status_reserva']))
$where5 = " AND status_reserva ILIKE '".addslashes($this->request['pesq_status_reserva'])."' ";
$where = $where1.$where2.$where3.$where4.$where5;
$order = "ORDER BY data_solicitacao desc";
$select_solicitacoes = $this->select_solicitacoes();
$select_solicitacoes = $select_solicitacoes.$where.$order;
$lista_solicitacoes = $this->resultado_solicitacoes($select_solicitacoes);
foreach ($lista_solicitacoes as $ls)
{
$dados_solicitacao[] = $this->dados_solicitacao_por_reserva($ls);
}
$this->addViewVar("dados_solicitacao" , $dados_solicitacao);
return true;
}
else
{
$this->addViewVar("msg" , $this->erro_filtro() );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
}
/**
* Verifica se pelo menos um campo de pesquisa foi utilizado para utilizar o filtro
* @access public
* @return array
*/
function erro_filtro()
{
$erro = array();
if (empty($request['pesq_data_solicitacao']) && empty($request['pesq_descricao']) &&
empty($request['pesq_solicitante']) && ($request['pesq_status_reserva']== 0) &&
($request['pesq_tipo_evento'] == 2))
{
$erro[] = "Escolha um dos campos de pesquisa para filtrar as Reservas.";
}
return $erro;
}
/**
* Implementa acao de exibir detalhes de um reserva
* @access public
* @return bool
*/
function exibir_reservaAction()
{
$reserva_id = $this->request['params'];
$dados_solicitacao = $this->dados_solicitacao_por_reserva($reserva_id);
$datas_solicitacao = $this->data_solicitacao($reserva_id);
$recursos = $this->lista_recursos_por_data_id_recurso($datas_solicitacao,$reserva_id);
$this->addViewVar("recursos" , $recursos );
$this->addViewVar("datas_solicitacao" , $datas_solicitacao );
$this->addViewVar("solicitacao" , $dados_solicitacao );
return true;
}
}
?> ]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->CONSULTAR);
}
/**
* Executa a ação proxima da atividade.
* @return void
* @access public
*/
function proxima()
{
$this->model->proximaAction();
$this->loadViewVars();
$this->showForm($this->CONSULTAR);
}
/**
* Executa a ação anterior da atividade.
* @return void
* @access public
*/
function anterior()
{
$this->model->anteriorAction();
$this->loadViewVars();
$this->showForm($this->CONSULTAR);
}
/**
* Executa a ação imprimir da atividade.
* @return void
* @access public
*/
function imprimir()
{
$this->model->imprimirAction();
$this->loadViewVars();
$this->showForm($this->IMPRIMIR);
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?> ]]>
semana = $this->monta_semana();
$this->dt_primeiro_dia = $this->semana['primeiro_dia'];
$this->dt_ultimo_dia = $this->semana['ultimo_dia'];
$dados = $this->monta_array($this->dt_primeiro_dia, $this->dt_ultimo_dia);
$this->addViewVar("dt_primeiro_dia" , substr(($this->dt_primeiro_dia), 8,2)."/".substr(($this->dt_primeiro_dia), 5,2)."/".substr(($this->dt_primeiro_dia), 0,4) );
$this->addViewVar("dt_ultimo_dia" , substr(($this->dt_ultimo_dia), 8,2)."/".substr(($this->dt_ultimo_dia), 5,2)."/".substr(($this->dt_ultimo_dia), 0,4) );
$this->addViewVar("dados" , $dados );
return true;
}
/**
* Monta um array com todo os dados necessários referentes as solicitações de salas
* @access public
* @return array
*/
function monta_array($dt_primeiro_dia, $dt_ultimo_dia)
{
/* monta um array com todos os dados que passarão para o template */
$data = $dt_primeiro_dia;
while ($data <= $dt_ultimo_dia)
{
$dt = substr(($data), 0,4)."-".substr(($data), 5,2)."-".substr(($data), 8,2);
$dt_completa_inicio = $dt." 00:00:00";
$dt_completa_fim = $dt." 23:59:59";
$this->commandText = "
SELECT
RS.sala_id,
RS.reserva_id,
to_char((RS.data_hora_inicio) ,'DD/MM/YYYY' ) as data,
to_char((RS.data_hora_inicio) ,'HH24:MI' ) as hora_inicio,
to_char((RS.data_hora_fim) ,'HH24:MI' ) as hora_fim,
RS.situacao,
S.nome,
R.solicitante_id,
R.tipo_evento,
R.desc_solicitacao,
R.obs_reserva
FROM
(reserva_recursos.reserva_sala as RS INNER JOIN reserva_recursos.reserva as R
ON
RS.reserva_id = R.reserva_id) INNER JOIN reserva_recursos.sala as S
ON
S.sala_id = RS.sala_id
WHERE
RS.data_hora_inicio >= '".$dt_completa_inicio."'
AND
RS.data_hora_inicio <= '".$dt_completa_fim."'
AND
RS.situacao != 'Reserva Recusada'
AND
RS.situacao != 'Solicitação Cancelada'
AND
R.status_reserva != 'Reserva Cancelada'
ORDER BY
RS.data_hora_inicio";
$this->resultSet = $this->DAO->query($this->commandText);
$salas = array();
$count = 0;
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$ldap = $this->factory->getInstance('wf_ldap');
$dados_usuario = $ldap->get_entry($res['solicitante_id']);
$solicitante = $dados_usuario['cn'];
$count = $count + 1;
$salas[] = array(
"sala_id" => $res['sala_id'],
"reserva_id" => $res['reserva_id'],
"data" => $res['data'],
"hora_inicio" => $res['hora_inicio'],
"hora_fim" => $res['hora_fim'],
"sala" => $res['nome'],
"situacao" => $res['situacao'],
"solicitante" => $solicitante,
"tipo_evento" => $res['tipo_evento'],
"desc_solicitacao" => $res['desc_solicitacao'],
"obs_reserva" => $res['obs_reserva']);
}
$dados[] = array (
"data" => substr(($data), 8,2)."/".substr(($data), 5,2)."/".substr(($data), 0,4),
"dia" => substr(($data), 8,2),
"mes" => substr(($data), 5,2),
"ano" => substr(($data), 0,4),
"count" => $count,
"salas" => $salas);
$temp = explode("/", $data);
$data = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] + 1, $temp[0]));
}
return $dados;
}
/**
* Implementa acao de ir para a proxima semana da atividade
* @access public
* @return bool
*/
function proximaAction()
{
$data = substr(($this->request['params']), 6,4)."/".substr(($this->request['params']), 3,2)."/".substr(($this->request['params']), 0,2);
$temp = explode("/", $data);
$dt_primeiro_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] + 1, $temp[0]));
$dt_ultimo_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] + 7, $temp[0]));
$dados = $this->monta_array($dt_primeiro_dia, $dt_ultimo_dia);
$this->addViewVar("dt_primeiro_dia" , substr(($dt_primeiro_dia), 8,2)."/".substr(($dt_primeiro_dia), 5,2)."/".substr(($dt_primeiro_dia), 0,4) );
$this->addViewVar("dt_ultimo_dia" , substr(($dt_ultimo_dia), 8,2)."/".substr(($dt_ultimo_dia), 5,2)."/".substr(($dt_ultimo_dia), 0,4) );
$this->addViewVar("dados" , $dados );
return true;
}
/**
* Implementa acao de ir para a semana anterior da atividade
* @access public
* @return bool
*/
function anteriorAction()
{
$data = substr(($this->request['params']), 6,4)."/".substr(($this->request['params']), 3,2)."/".substr(($this->request['params']), 0,2);
$temp = explode("/", $data);
$dt_ultimo_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] - 1, $temp[0]));
$dt_primeiro_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] - 7, $temp[0]));
$dados = $this->monta_array($dt_primeiro_dia, $dt_ultimo_dia);
$this->addViewVar("dt_primeiro_dia" , substr(($dt_primeiro_dia), 8,2)."/".substr(($dt_primeiro_dia), 5,2)."/".substr(($dt_primeiro_dia), 0,4) );
$this->addViewVar("dt_ultimo_dia" , substr(($dt_ultimo_dia), 8,2)."/".substr(($dt_ultimo_dia), 5,2)."/".substr(($dt_ultimo_dia), 0,4) );
$this->addViewVar("dados" , $dados );
return true;
}
/**
* Implementa acao imprimir da atividade
* @access public
* @return bool
*/
function imprimirAction()
{
$data = substr(($this->request['data']), 6,4)."/".substr(($this->request['data']), 3,2)."/".substr(($this->request['data']), 0,2);
$temp = explode("/", $data);
$dt_ultimo_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] + 0, $temp[0]));
$dt_primeiro_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] - 6, $temp[0]));
$dados = $this->monta_array($dt_primeiro_dia, $dt_ultimo_dia);
$this->addViewVar("dt_primeiro_dia" , substr(($dt_primeiro_dia), 8,2)."/".substr(($dt_primeiro_dia), 5,2)."/".substr(($dt_primeiro_dia), 0,4) );
$this->addViewVar("dt_ultimo_dia" , substr(($dt_ultimo_dia), 8,2)."/".substr(($dt_ultimo_dia), 5,2)."/".substr(($dt_ultimo_dia), 0,4) );
$this->addViewVar("dados" , $dados );
return true;
}
}
?> ]]>
super(&$model , &$env);
$this->assign('inbox', $this->model->getWfProperty('wf_workflow_path') . SEP . 'index.php?start_tab=0');
$this->assign('processes', $this->model->getWfProperty('wf_workflow_path') . SEP . 'index.php?start_tab=1');
$this->assign('activity_title', 'Reserva de Recursos');
}
}
?> ]]>
fields[] = array(
'name' => $field_name,
'caption' => $field_caption,
'width' => $field_width,
't_dado' => $t_dado,
'type' => 'text'
);
}
/**
* Adiciona um campo de formulário do tipo 'select' para entrada de dados no filtro. \n
* @param string $field_name nome do campo interno do formulário (será utilizado no GET/POST da página)
* @param string $table_name nome da tabela que contem o campo interno do formulário
* @param string $field_caption nome do campo que será mostrado ao usuário
* @param string $t_dado tipo do campo field_name
* @param array $values_desc_array array associativo do tipo (valor => descrição) das opções a serem selecionadas.
* @return void
* @public
*/
function add_select_field($table_name, $field_name,$field_caption,$values_desc_array,$t_dado)
{
$this->fields[] = array(
'name' => $field_name,
'table' => $table_name,
'caption' => $field_caption,
'values' => $values_desc_array,
't_dado' => $t_dado,
'type' => 'select'
);
}
/**
* Gera o código HTML do filtro, de acordo com os campos informados através dos métodos add_field() e add_select_field().
* @param string $baseurl url base que será usada na propriedade "action" no formulário contruido pelo filtro
* @return Código HTML do filtro
* @access public
*/
function build_filter()
{
$filter_code = "
";
foreach($this->fields as $field)
{
$filter_code .= "";
$filter_code .= $field['caption']."
";
if ($field['type'] == "text")
{
$filter_code .= "";
}
if ($field['type'] == "select")
{
$filter_code .= "";
}
$filter_code .= "
";
}
$filter_code .= "
";
$filter_code .= "
";
$filter_code .= "";
return $filter_code;
}
/**
* Gera a string WHERE do SELECT, de acordo com os campos preenchidos do filtro.
* Para utilizar essa função, o nome dos campos no formulário devem ser os mesmos dos
* campos na tabela do banco de dados.
* @param array $request_array array com os dados do request (geralmente $_REQUEST), para que seja possível identificar os campos do filtro que foram preenchidos
* @return string sequência a ser adicionada na cláusula WHERE do SELECT Ex.: nome_campo LIKE '\%palavra\%'
*/
function get_where($request_array)
{
$str = "";
foreach($this->fields as $field)
{
/* se o filtro a ser utilizado for do tipo data */
if ((($field['t_dado']) == "datetime") && ($request_array[$field['name']]) != "")
{
$data = ($request_array[$field['name']]);
$dia = $data[0].$data[1];
$mes = $data[3].$data[4];
$ano = $data[6].$data[7].$data[8].$data[9];
/* muda o formato da data para o formato cadastrado no banco */
$data_nova = $ano."-".$mes."-".$dia;
$str .= ' AND upper(' . ((!empty($field['table']))? $field['table'] . "." : '') . $field['name'].') LIKE \'%'.addslashes(strtoupper($data_nova)).'%\'';
}
/* se o filtro a ser utilizado for do tipo int e a opcão escolhida for diferente de 0 */
else if ((($field['t_dado']) == "int") && (($request_array[$field['name']]) != 0))
{
$str .= " AND (" . ((!empty($field['table']))? $field['table'] . "." : "") . $field['name'].") = ".addslashes(strtoupper($request_array[$field['name']]));
}
else
{
if ((($request_array[$field['name']]) != "")&&(($field['t_dado']) != "int"))
{
$str .= ' AND upper(' . ((!empty($field['table']))? $field['table'] . "." : '') . $field['name'].') LIKE \'%'.addslashes(strtoupper($request_array[$field['name']])).'%\'';
}
else
{
$str .= '';
}
}
}
//retira o AND do início da string
if (strlen($str))
{
$str = substr($str,4,strlen($str)-4);
}
return $str;
}
/**
* Gera uma string com os parametros a serem colocados no link de paginação caso os dados estejam filtrados
* @param array $request_array array com os dados do request (geralmente $_REQUEST), para que seja possível identificar os campos do filtro que foram preenchidos
* @return string sequência a ser adicionada na cláusula WHERE do SELECT Ex.: nome_campo LIKE '\%palavra\%'
*/
function get_paging_params($request_array)
{
$str = '&filtro=1';
foreach($this->fields as $field)
{
$str .= isset($request_array[$field['name']])?'&'.$field['name'].'='.$request_array[$field['name']]:'';
}
return $str;
}
}
?> ]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->MANTER_EQUIPAMENTO);
}
/**
* Executa a ação ativar da atividade.
* @return void
* @access public
*/
function ativar()
{
$this->model->ativarAction();
$this->__default();
}
/**
* Executa a ação filtrar da atividade.
* @return void
* @access public
*/
function filtrar()
{
$this->model->filtrarAction();
$this->loadViewVars();
$this->showForm($this->MANTER_EQUIPAMENTO);
}
/**
* Executa a ação alterar os dados dos equipamentos já cadastrados.
* @return void
* @access public
*/
function alterar()
{
$this->model->alterarAction();
$this->loadViewVars();
$this->showForm($this->ALTERAR_EQUIPAMENTO);
}
/**
* Executa a ação de cadastrar um novo equipamento.
* @return void
* @access public
*/
function criar()
{
if ($this->model->criarAction())
$this->__default();
else
{
$this->model->novoAction();
$this->loadViewVars();
$this->showForm($this->INSERIR_EQUIPAMENTO);
}
}
/**
* Executa a ação desativar equipamentos.
* @return void
* @access public
*/
function desativar()
{
$this->model->desativarAction();
$this->__default();
}
/**
* Executa a ação exibir detalhes dos equipamentos já cadastrados.
* @return void
* @access public
*/
function exibir()
{
$this->model->exibirAction();
$this->loadViewVars();
$this->showForm($this->EXIBIR_EQUIPAMENTO);
}
/**
* Executa a ação incluir novos equipamentos.
* @return void
* @access public
*/
function novo()
{
$this->model->novoAction();
$this->loadViewVars();
$this->showForm($this->INSERIR_EQUIPAMENTO);
}
/**
* Executa a ação salvar alterações feitas nos dados dos equipamentos já cadastrados.
* @return void
* @access public
*/
function salvar_alteracoes()
{
if ($this->model->salvar_alteracoesAction())
$this->__default();
else
{
$this->model->salvar_alteracoesAction();
$this->loadViewVars();
$this->showForm($this->ALTERAR_EQUIPAMENTO);
}
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?>
]]>
commandText = $this->select_equipamentos();
$order = "ORDER BY TE.descricao, E.descricao";
$this->commandText = $this->commandText.$order;
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ) )
$id_equipamentos[] = $res['equipamento_id'];
$equipamentos = $this->monta_array_equipamentos($id_equipamentos);
$this->addViewVar("equipamentos" , $equipamentos );
return true;
}
/**
* Muda o valor do campo ativo de 0 para 1
* @return bool
* @access public
*/
function ativarAction()
{
$dados = array ('1' , $this->request['params']);
$this->commandText = "
UPDATE
reserva_recursos.equipamento
SET
ativo = ?
WHERE
equipamento_id = ?";
$this->resultSet = $this->DAO->query($this->commandText,$dados);
return true;
}
/**
* Monta um array contendo array separado para equipamentos ativos e inativos
* @return array
* @param array $id_equipamentos array com todos os ids dos equipamentos cadastrados
* @access public
*/
function monta_array_equipamentos($id_equipamentos)
{
if (!empty($id_equipamentos))
{
foreach ($id_equipamentos as $e)
{
$dados = array();
$dados[] = $this->dados_equipamento($e);
$dados_equipamentos[] = $dados[0][0];
}
}
$equipamentos = $dados_equipamentos;
if (!empty($equipamentos))
{
foreach ($equipamentos as $e)
{
if ($e['ativo'] == 1)
{
$ativos[] = array (
"equipamento_id" => $e['equipamento_id'],
"tipo_equipamento_id" => $e['tipo_equipamento_id'],
"desc_equipamento" => $e['desc_equipamento'],
"responsavel_id" => $e['responsavel_id'],
"responsavel" => $e['responsavel'],
"observacao" => $e['observacao'],
"desc_tipo_equipamento" => $e['desc_tipo_equipamento'],
"area" => $e['area'],
"telefone" => $e['telefone'],
"ativo" => $e['ativo']);
}
else
{
$inativos[] = array (
"equipamento_id" => $e['equipamento_id'],
"tipo_equipamento_id" => $e['tipo_equipamento_id'],
"desc_equipamento" => $e['desc_equipamento'],
"responsavel_id" => $e['responsavel_id'],
"responsavel" => $e['responsavel'],
"observacao" => $e['observacao'],
"desc_tipo_equipamento" => $e['desc_tipo_equipamento'],
"area" => $e['area'],
"telefone" => $e['telefone'],
"ativo" => $e['ativo']);
}
}
}
$equipamentos = array ("0"=> array("ativos" => $ativos, "inativos" => $inativos));
return $equipamentos;
}
/**
* Monta o codigo SQL para fazer a seleção de todos os equipamentos
* @access public
* @return string
*/
function select_equipamentos()
{
$this->commandText = "
SELECT
E.equipamento_id, TE.descricao
FROM
reserva_recursos.equipamento as E, reserva_recursos.tipo_equipamento as TE
WHERE
E.tipo_equipamento_id = TE.tipo_equipamento_id
AND
E.equipamento_id > 0";
$this->resultSet = $this->DAO->query($this->commandText);
return $this->commandText;
}
/**
* Implementa ação alterar os dados dos equipamentos já cadastrados
* @access public
* @return bool
*/
function alterarAction()
{
if (empty($this->request['equipamento_id']))
$equipamento_id = $this->request["params"];
else
$equipamento_id = $this->request['equipamento_id'];
$lista_equipamentos = $this->dados_equipamento($equipamento_id);
$lista_tipos_equipamentos = $this->lista_tipos_equipamentos_ativos();
$this->addViewVar("lista_tipos_equipamentos", $lista_tipos_equipamentos );
$this->addViewVar("lista_equipamentos" , $lista_equipamentos );
$this->addViewVar("equipamento_id" , $equipamento_id );
return true;
}
/**
* Inclui um novo equipamento no banco de dados
* @access public
* @return bool
*/
function criarAction()
{
$dados_usuario = $this->dados_usuario($this->request['responsavel']);
$responsavel = $dados_usuario['nome_completo'];
$descricao = trim($this->request['desc_equipamento']);
$observacao = trim($this->request['obs_equipamento']);
if (!count($this->verificaErros()))
{
$this->commandText =
"INSERT INTO reserva_recursos.equipamento (
tipo_equipamento_id,
responsavel_id,
descricao,
observacao,
ativo)
VALUES (?,?,?,?,?)";
$dados = array(
$this->request['tipo_equipamento_id'],
$this->request['responsavel'],
$descricao,
$observacao,
1);
$this->resultSet = $this->DAO->query($this->commandText,$dados);
$this->addViewVar("icon_msg" , "icon_msg_sucesso.png" );
$this->addViewVar("class_msg" , "msg_sucesso" );
$this->addViewVar("msg" , "Equipamento cadastrado com sucesso." );
return true;
}
else
{
$this->addViewVar("desc_equipamento" , $descricao );
$this->addViewVar("responsavel_id" , $this->request['responsavel'] );
$this->addViewVar("tipo_equipamento_id" , $this->request['tipo_equipamento_id'] );
$this->addViewVar("obs_equipamento" , $observacao );
$this->addViewVar("responsavel" , $responsavel );
$this->addViewVar("lista_tipos_equipamentos", $this->lista_tipos_equipamentos );
$this->addViewVar("msg" , $this->verificaErros() );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
/**
* Faz a verificação se existem reservas futuras confirmadas ou em espera para este
* equipamento, se não existir faz a exclusão do equipamento.
* @access public
* @return bool
*/
function desativarAction()
{
$equipamento_id = $this->request["params"];
// verifica se existem reservas futuras para este equipamento
$this->commandText = "
SELECT
equipamento_id,
data_hora_inicio,
data_hora_fim
FROM
reserva_recursos.reserva_equipamento
WHERE
data_hora_inicio > CURRENT_TIMESTAMP
AND
(situacao = 'Em espera' OR situacao = 'Reserva Confirmada')
AND
equipamento_id = ".$equipamento_id;
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
$lista_equipamentos[] = $res;
if (!count($lista_equipamentos))
{
$this->commandText =
"UPDATE
reserva_recursos.equipamento
SET
ativo = 0
WHERE
equipamento_id = $equipamento_id";
$this->resultSet = $this->DAO->query($this->commandText);
$this->addViewVar("icon_msg" , "icon_msg_sucesso.png" );
$this->addViewVar("class_msg" , "msg_sucesso" );
$this->addViewVar("msg" , "Equipamento excluido com sucesso." );
return true;
}
else
{
$this->addViewVar("msg" , "Impossível desativar o registro. Existem reservas futuras para este equipamento.");
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
/**
* Implementa a ação filtrar da atividade
* @return bool
* @access public
*/
function filtrarAction()
{
if ($this->request['situacao']== 0 && empty($this->request['pesq_nome']) && empty($this->request['pesq_responsavel']))
{
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
$this->addViewVar("msg" , "Digite um termo de busca." );
$this->defaultAction();
return false;
}
else
{
if ($this->request['pesq_nome']!= "")
$where1 = " AND upper(descricao) LIKE '%".addslashes(strtoupper($this->request['pesq_nome']))."%' ";
if ($this->request['pesq_responsavel']!="")
$where2 = " AND responsavel_id =".$this->request['pesq_responsavel']." ";
$this->commandText = $this->select_equipamentos();
$order = "ORDER BY descricao";
$this->commandText = $this->commandText.$where1.$where2.$order;
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ) )
$id_equipamentos[] = $res['equipamento_id'];
$equipamentos = $this->monta_array_equipamentos($id_equipamentos);
if ($this->request['situacao']== 1)
$equipamentos = array("0"=>array("ativos" => $equipamentos[0]['ativos']));
elseif ($this->request['situacao']== 2)
$equipamentos = array("0"=>array("inativos" => $equipamentos[0]['inativos']));
$this->addViewVar("equipamentos" , $equipamentos );
return true;
}
}
/**
* Mostra os dados de um determinado equipamento.
* @access public
* @return bool
*/
function exibirAction()
{
$equipamento_id = $this->request["params"];
$lista_equipamentos = $this->dados_equipamento($equipamento_id);
$this->addViewVar("lista_equipamentos", $lista_equipamentos );
return true;
}
/**
* Implementa ação de inserção de novos equipamentos
* @access public
* @return bool
*/
function novoAction()
{
$this->lista_tipos_equipamentos = $this->lista_tipos_equipamentos_ativos();
$this->addViewVar("lista_tipos_equipamentos", $this->lista_tipos_equipamentos );
$this->addViewVar("desc_equipamento" , $this->request['desc_equipamento']);
return true;
}
/**
* Verifica se todos o campos do formulário estão preenchidos e efetiva a alteracao do
* registro escolhido no banco de dados
* @access public
* @return bool
*/
function salvar_alteracoesAction()
{
$dados_usuario = $this->dados_usuario($this->request['responsavel']);
$responsavel = $dados_usuario['nome_completo'];
if (!count($this->verificaErros()))
{
$this->commandText = "
UPDATE
reserva_recursos.equipamento
SET
tipo_equipamento_id = ?,
responsavel_id = ?,
descricao = ?,
observacao = ?
WHERE
equipamento_id = ?";
$dados = array (
$this->request['tipo_equipamento_id'],
$this->request['responsavel'],
$this->request['desc_equipamento'],
$this->request['obs_equipamento'],
$this->request['equipamento_id']);
$this->resultSet = $this->DAO->query($this->commandText,$dados);
$this->addViewVar("icon_msg" , "icon_msg_sucesso.png" );
$this->addViewVar("class_msg" , "msg_sucesso" );
$this->addViewVar("msg" , "Alteração efetuada com sucesso." );
return true;
}
else
{
$lista_tipos_equipamentos = $this->lista_tipos_equipamentos_ativos();
$lista_equipamentos[] = array(
"equipamento_id" => $this->request['equipamento_id'],
"tipo_equipamento_id" => $this->request['tipo_equipamento_id'],
"desc_equipamento" => $this->request['desc_equipamento'],
"responsavel_id" => $this->request['responsavel'],
"responsavel" => $responsavel,
"observacao" => $this->request['obs_equipamento']);
$this->addViewVar("lista_tipos_equipamentos", $lista_tipos_equipamentos );
$this->addViewVar("lista_equipamentos" , $lista_equipamentos );
$this->addViewVar("lista_equipamentos" , $lista_equipamentos );
$this->addViewVar("msg" , $this->verificaErros() );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
/**
* verifica se todos os campos necessarios para gravacao no BD estão preenchidos.
* @access public
* @return array
*/
function verificaErros()
{
$erros = array();
// captura os erros
if (($this->request['tipo_equipamento_id']) == 0)
$erros[] = 'Selecione um tipo para o equipamento.';
if (empty($this->request['desc_equipamento']))
$erros[] = 'Informe a descrição do Equipamento.';
if (empty($this->request['responsavel']))
$erros[] = 'Selecione o responsável pelo equipamento.';
return $erros;
}
}
?> ]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->MANTER_SALA);
}
/**
* Executa a ação alterar sala.
* @return void
* @access public
*/
function alterar()
{
$this->model->alterarAction();
$this->loadViewVars();
$this->showForm($this->ALTERAR_SALA);
}
/**
* Executa a ação de criar sala.
* @return void
* @access public
*/
function criar()
{
if ($this->model->criarAction())
$this->__default();
else
{
$this->model->novoAction();
$this->loadViewVars();
$this->showForm($this->INSERIR_SALA);
}
}
/**
* Executa a ação desativar sala.
* @return void
* @access public
*/
function desativar()
{
$this->model->desativarAction();
$this->__default();
}
/**
* Executa a ação exibir sala.
* @return void
* @access public
*/
function exibir()
{
$this->model->exibirAction();
$this->loadViewVars();
$this->showForm($this->EXIBIR_SALA);
}
/**
* Executa a ação incluir novas salas.
* @return void
* @access public
*/
function novo()
{
$this->model->novoAction();
$this->loadViewVars();
$this->showForm($this->INSERIR_SALA);
}
/**
* Executa a ação salvar as alterações dos dados da sala.
* @return void
* @access public
*/
function salvar_alteracoes()
{
if ($this->model->salvar_alteracoesAction())
$this->__default();
else
{
$this->loadViewVars();
$this->showForm($this->ALTERAR_SALA);
}
}
/**
* Executa a ação filtrar da atividade.
* @return void
* @access public
*/
function filtrar()
{
$this->model->filtrarAction();
$this->loadViewVars();
$this->showForm($this->MANTER_SALA);
}
/**
* Executa a ação ativar da atividade.
* @return void
* @access public
*/
function ativar()
{
$this->model->ativarAction();
$this->__default();
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?> ]]>
commandText = $this->select_salas();
$order = "ORDER BY nome";
$this->commandText = $this->commandText.$order;
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ) )
$id_salas[] = $res['sala_id'];
$salas = $this->monta_array_salas($id_salas);
$this->addViewVar("salas" , $salas );
return true;
}
/**
* Muda o valor do campo ativo de 0 para 1
* @return bool
* @access public
*/
function ativarAction()
{
$this->commandText = "
UPDATE
reserva_recursos.sala
SET
ativo = 1
WHERE
sala_id = ".$this->request['params'];
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Implementa a ação filtrar da atividade
* @return bool
* @access public
*/
function filtrarAction()
{
if ($this->request['situacao']== 0 && empty($this->request['pesq_nome']) && empty($this->request['pesq_responsavel']))
{
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
$this->addViewVar("msg" , "Digite um termo de busca." );
$this->defaultAction();
return false;
}
else
{
if ($this->request['pesq_nome']!= "")
$where1 = " AND upper(nome) LIKE '%".addslashes(strtoupper($this->request['pesq_nome']))."%' ";
if ($this->request['pesq_responsavel']!="")
$where2 = " AND responsavel_id =".$this->request['pesq_responsavel']." ";
$this->commandText = $this->select_salas();
$order = "ORDER BY nome";
$this->commandText = $this->commandText.$where1.$where2.$order;
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ) )
$id_salas[] = $res['sala_id'];
$salas = $this->monta_array_salas($id_salas);
if ($this->request['situacao']== 1)
$salas = array("0"=>array("ativos" => $salas[0]['ativos']));
elseif ($this->request['situacao']== 2)
$salas = array("0"=>array("inativos" => $salas[0]['inativos']));
$this->addViewVar("salas" , $salas );
return true;
}
}
/**
* Monta um array contendo array separado para salas ativas e inativas
* @return array
* @param array $id_salas array com todos os ids das salas cadastradas
* @access public
*/
function monta_array_salas($id_salas)
{
if (!empty($id_salas))
{
foreach ($id_salas as $s)
{
$dados = array();
$dados[] = $this->dados_sala($s);
$dados_salas[] = $dados[0][0];
}
}
$salas = $dados_salas;
if (!empty($salas))
{
foreach ($salas as $s)
{
if ($s['ativo'] == 1)
{
$ativos[] = array (
"sala_id" => $s['sala_id'],
"responsavel_id"=> $s['responsavel_id'],
"nome" => $s['nome'],
"descricao" => $s['descricao'],
"localizacao" => $s['localizacao'],
"observacao" => trim($s['observacao']),
"capacidade" => $s['capacidade'],
"responsavel" => $s['responsavel'],
"area" => $s['area'],
"telefone" => $s['telefone'],
"ativo" => $s['ativo']);
}
else
{
$inativos[] = array (
"sala_id" => $s['sala_id'],
"responsavel_id"=> $s['responsavel_id'],
"nome" => $s['nome'],
"descricao" => $s['descricao'],
"localizacao" => $s['localizacao'],
"observacao" => trim($s['observacao']),
"capacidade" => $s['capacidade'],
"responsavel" => $s['responsavel'],
"area" => $s['area'],
"telefone" => $s['telefone'],
"ativo" => $s['ativo']);
}
}
}
$salas = array ("0"=> array("ativos" => $ativos, "inativos" => $inativos));
return $salas;
}
/**
* Monta o codigo sql para selecionar todas as salas ativas
* @return string retorna o comando sql para realizar a busca no banco de dados
* @access public
*/
function select_salas()
{
$this->commandText = "
SELECT
sala_id,
ativo
FROM
reserva_recursos.sala
WHERE sala_id > 0 ";
return $this->commandText;
}
/**
* Implementa ação alterar dados da sala
* @access public
* @return bool
*/
function alterarAction()
{
$sala_id = $this->request["params"];
$lista_salas = $this->dados_sala($sala_id);
$this->addViewVar("lista_salas" , $lista_salas);
return true;
}
/**
* Verifica se todos os campos obrigatorios estão preenchidos e se estiverem
* inclui novos registros na tabela sala
* @access public
* @return bool
*/
function criarAction()
{
$dados_usuario = $this->dados_usuario($this->request['responsavel']);
$responsavel = $dados_usuario['nome_completo'];
if (!count($this->verificaErros()))
{
$this->commandText =
"INSERT INTO reserva_recursos.sala(
responsavel_id,
nome,
descricao,
localizacao,
capacidade,
observacao,
ativo )
VALUES (?,?,?,?,?,?,?)";
$dados = array (
trim($this->request['responsavel']),
trim($this->request['nome_sala']),
trim($this->request['desc_sala']),
trim($this->request['local_sala']),
$this->request['capacidade'],
$this->request['obs_sala'],
1);
$this->resultSet = $this->DAO->query($this->commandText,$dados);
$this->addViewVar("icon_msg" , "icon_msg_sucesso.png" );
$this->addViewVar("class_msg" , "msg_sucesso" );
$this->addViewVar("msg" , "Sala cadastrada com sucesso." );
return true;
}
else
{
$this->addViewVar("responsavel_id" , trim($this->request['responsavel']) );
$this->addViewVar("nome_sala" , trim($this->request['nome_sala']) );
$this->addViewVar("desc_sala" , trim($this->request['desc_sala']) );
$this->addViewVar("local_sala" , trim($this->request['local_sala']) );
$this->addViewVar("capacidade" , trim($this->request['capacidade']) );
$this->addViewVar("obs_sala" , trim($this->request['obs_sala']) );
$this->addViewVar("responsavel" , trim($responsavel) );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
$this->addViewVar("msg" , $this->verificaErros() );
return false;
}
}
/**
* Implementa ação desativar salas cadastradas
* @access public
* @return bool
*/
function desativarAction()
{
$sala_id = $this->request["params"];
// verifica se esta sala possui uma reserva futura
$this->commandText = "
SELECT
sala_id,
data_hora_inicio,
data_hora_fim
FROM
reserva_recursos.reserva_sala
WHERE
data_hora_inicio > CURRENT_TIMESTAMP
AND
(situacao = 'Em espera' OR situacao = 'Reserva Confirmada')
AND sala_id = ".$sala_id;
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
$lista_salas[] = $res;
if (!count($lista_salas))
{
$this->commandText =
"UPDATE
reserva_recursos.sala
SET
ativo = 0
WHERE
sala_id = $sala_id";
$this->resultSet = $this->DAO->query($this->commandText);
$this->addViewVar("icon_msg" , "icon_msg_sucesso.png" );
$this->addViewVar("class_msg" , "msg_sucesso" );
$this->addViewVar("msg" , "Sala excluída com sucesso." );
return true;
}
else
{
$this->addViewVar("msg" , "Impossível desativar o registro. Existem reservas futuras para esta sala.");
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
/**
* Implementa acao exibir os detalhes de uma determianda sala
* @access public
* @return bool
*/
function exibirAction()
{
$sala_id = $this->request["params"];
$lista_salas = $this->dados_sala($sala_id);
$this->addViewVar("lista_salas", $lista_salas);
return true;
}
/**
* Implementa ação inserir nova sala
* @access public
* @return bool
*/
function novoAction()
{
$nome_sala = trim($this->request['nome_sala']);
$this->addViewVar("nome_sala" , $this->request['nome_sala']);
return true;
}
/**
* Implementa ação salvar alterações nos dados da sala
* @access public
* @return bool
*/
function salvar_alteracoesAction()
{
$dados_usuario = $this->dados_usuario($this->request['responsavel_id']);
$responsavel = $dados_usuario['nome_completo'];
if (!count($this->verificaErros()))
{
$dados = array (
trim($this->request['responsavel']),
trim($this->request['nome_sala']),
trim($this->request['desc_sala']),
trim($this->request['local_sala']),
$this->request['capacidade'],
trim($this->request['observacao']),
$this->request['sala_id']);
$this->commandText = "
UPDATE
reserva_recursos.sala
SET
responsavel_id = ?,
nome = ?,
descricao = ?,
localizacao = ?,
capacidade = ?,
observacao = ?
WHERE
sala_id = ? ";
$this->resultSet = $this->DAO->query($this->commandText, $dados);
$this->addViewVar("icon_msg" , "icon_msg_sucesso.png" );
$this->addViewVar("class_msg" , "msg_sucesso" );
$this->addViewVar("msg" , "Alteração efetuada com sucesso." );
return true;
}
else
{
$lista_salas[] = array(
"sala_id" => trim($this->request['sala_id']),
"responsavel_id"=> trim($this->request['responsavel_id']),
"nome" => trim($this->request['nome_sala']),
"descricao" => trim($this->request['desc_sala']),
"localizacao" => trim($this->request['local_sala']),
"observacao" => trim($this->request['observacao']),
"capacidade" => trim($this->request['capacidade']),
"responsavel" => trim($responsavel) );
$this->addViewVar("lista_salas" , $lista_salas );
$this->addViewVar("msg" , $this->verificaErros());
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
/**
* Implementa ação que verifica erros no preenchimento do formulário de inclusão de novas salas
* @access public
* @return array
*/
function verificaErros()
{
$erros = array();
// captura os erros
if (empty($this->request['nome_sala']))
$erros[] = 'Informe o nome da Sala.';
if (empty($this->request['responsavel']))
$erros[] = 'Selecione o responsável pela Sala.';
if (empty($this->request['local_sala']))
$erros[] = 'Informe a localização da Sala.';
if (empty($this->request['capacidade']))
$erros[] = 'Informe o número de pessoas que a sala comporta.';
return $erros;
}
}
?> ]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->MANTER_TIPO_EQUIPAMENTO);
}
/**
* Executa a ação excluir tipos de equipamentos já cadastrados.
* @return void
* @access public
*/
function excluir()
{
$this->model->excluirAction();
$this->__default();
}
/**
* Executa a ação incluir novos tipos de equipamentos.
* @return void
* @access public
*/
function novo()
{
$this->model->novoAction();
$this->__default();
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?> ]]>
request['desc_tipo_equipamento']) && (($this->request['action'])=="Pesquisar"))
{
$desc_tipo = trim(strtoupper($this->request['desc_tipo_equipamento']));
$where =
"AND UPPER(descricao)
LIKE '%".$this->DAO->quote($desc_tipo)."%'";
$this->commandText = $this->select_tipos_equipamentos_ativos().$where;
}
/* senão se campo descrição do equipamento está vazio e o usuario clica em pesquisar */
elseif ((empty($this->request['desc_tipo_equipamento'])) && (($this->request["action"])=="Pesquisar"))
{
$this->commandText = $this->select_tipos_equipamentos_ativos();
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
$this->addViewVar("msg" , "Digite um termo de busca." );
}
/* se o usuario não clicar em pesquisar */
else
{
$this->commandText = $this->select_tipos_equipamentos_ativos();
}
$this->commandText = $this->commandText . "ORDER BY descricao";
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow(DB_FETCHMODE_ASSOC))
$this->tipos_equipamentos[] = $res;
$this->addViewVar("tipos_equipamentos" , $this->tipos_equipamentos );
return true;
}
/**
* Monta o codigo sql para seleção de todos os tipo equipamentos que estão ativos
* @access public
* @return string comando sql para selecao
*/
function select_tipos_equipamentos_ativos()
{
$this->commandText = "
SELECT
tipo_equipamento_id, descricao
FROM
reserva_recursos.tipo_equipamento
WHERE
ativo = 1";
return $this->commandText;
}
/**
* Implementa ação excluir tipo de equipamento - verifica se existem equipamentos
* cadastrados com este tipo de esquipamento, se existir não é possivel excluir
* @access public
* @return bool
*/
function excluirAction()
{
$tipo_equipamento_id = $this->request["params"];
// verifica se existem equipamentos cadastrados com este tipo de equipamento
$this->commandText = "
SELECT
*
FROM
reserva_recursos.equipamento
WHERE
tipo_equipamento_id = ".$tipo_equipamento_id;
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
$linha = $linha +1;
if ($linha != 0)
{
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
$this->addViewVar("msg" , "Não foi possível excluir o Tipo de Equipamento - Existem equipamentos cadastrados com este tipo de equipamento.");
return false;
}
else
{
$dados = array('0',$tipo_equipamento_id);
$this->commandText =
"UPDATE reserva_recursos.tipo_equipamento
SET ativo = ?
WHERE tipo_equipamento_id = ?";
$this->resultSet = $this->DAO->query($this->commandText,$dados);
$this->addViewVar("icon_msg" , "icon_msg_sucesso.png" );
$this->addViewVar("class_msg" , "msg_sucesso" );
$this->addViewVar("msg" , "Tipo de Equipamento excluído com sucesso." );
return true;
}
}
/**
* Implementa a ação adicionar novo tipo de equipamento.
* @access public
* @return boolean
*/
function novoAction()
{
if (!empty($this->request['desc_tipo_equipamento']))
{
$desc_equipamento = trim($this->request['desc_tipo_equipamento']);
$dados = array($desc_equipamento,'1');
$this->commandText =
"INSERT INTO
reserva_recursos.tipo_equipamento (descricao, ativo)
VALUES (?,?)";
$this->resultSet = $this->DAO->query($this->commandText,$dados);
$this->addViewVar("icon_msg" , "icon_msg_sucesso.png" );
$this->addViewVar("class_msg" , "msg_sucesso" );
$this->addViewVar("msg" , "Tipo de Equipamento cadastrado com sucesso." );
return true;
}
else
{
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
$this->addViewVar("msg" , "Digite o Tipo de Equipamento a ser inserido.");
return false;
}
}
}
?> ]]>
commandText = "
SELECT
tipo_equipamento_id, descricao
FROM
reserva_recursos.tipo_equipamento
WHERE
ativo = 1
ORDER BY descricao";
$this->resultSet = $this->DAO->query($this->commandText);
$tipos_equipamentos[0]= "---- Selecione ----";
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
$tipos_equipamentos[$res['tipo_equipamento_id']] = $res['descricao'];
return $tipos_equipamentos;
}
/**
* Pega o nome completo e demais dados do usuario do LDAP
* @return array com os dados do usuario
* @param int $usuario_id id do usuario
* @access public
*/
function dados_usuario($usuario_id)
{
$orgchart = $this->factory->getInstance('wf_orgchart');
$dados_usuario = $orgchart->getEmployee($usuario_id);
$area_id = $dados_usuario['area_id'];
$area = $orgchart->getArea($area_id);
$area = $area['sigla'];
$ldap = $this->factory->getInstance('wf_ldap');
$dados_usuario = $ldap->get_entry($usuario_id);
$telefone = $dados_usuario['telephonenumber'];
$nome_completo = $dados_usuario['cn'];
$email = $dados_usuario['mail'];
$this->dados_usuario = array(
"nome_completo" => $nome_completo,
"area" => $area,
"telefone" => $telefone,
"email" => $email);
return $this->dados_usuario;
}
/**
* Lista todos os dados de um determinado equipamento
* @return array retorna todos os dados do equipamento especificado no parametro
* @param int $equipamento_id id do equipamento
* @access public
*/
function dados_equipamento($equipamento_id)
{
$this->commandText = "
SELECT
E.equipamento_id,
E.tipo_equipamento_id,
E.responsavel_id,
E.descricao as desc_equipamento,
E.observacao,
E.ativo,
TE.descricao as desc_tipo_equipamento
FROM
reserva_recursos.equipamento AS E, reserva_recursos.tipo_equipamento AS TE
WHERE
E.tipo_equipamento_id = TE.tipo_equipamento_id
AND
E.equipamento_id = ".$equipamento_id;
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$dados_usuario = $this->dados_usuario($res['responsavel_id']);
$area = $dados_usuario['area'];
$responsavel = $dados_usuario['nome_completo'];
$telefone = $dados_usuario['telefone'];
$dados_equipamento[] = array(
"equipamento_id" => $res['equipamento_id'],
"tipo_equipamento_id" => $res['tipo_equipamento_id'],
"desc_equipamento" => $res['desc_equipamento'],
"responsavel_id" => $res['responsavel_id'],
"responsavel" => $responsavel,
"observacao" => $res['observacao'],
"desc_tipo_equipamento" => $res['desc_tipo_equipamento'],
"area" => $area,
"telefone" => $telefone,
"ativo" => $res['ativo']);
}
return $dados_equipamento;
}
/**
* Lista todos os dados de uma determinada sala
* @return array retorna todos os dados de uma sala especificada no parametro
* @param int $sala_id id da sala
* @access public
*/
function dados_sala($sala_id)
{
$this->commandText = "
SELECT
S.sala_id,
S.responsavel_id,
S.nome,
S.descricao,
S.localizacao,
S.capacidade,
S.observacao,
S.ativo
FROM
reserva_recursos.sala as S
WHERE
S.sala_id = ".$sala_id;
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$dados_usuario = $this->dados_usuario($res['responsavel_id']);
$area = $dados_usuario['area'];
$responsavel = $dados_usuario['nome_completo'];
$telefone = $dados_usuario['telefone'];
$dados_sala[] = array(
"sala_id" => $res['sala_id'],
"responsavel_id"=> $res['responsavel_id'],
"nome" => $res['nome'],
"descricao" => $res['descricao'],
"localizacao" => $res['localizacao'],
"observacao" => trim($res['observacao']),
"capacidade" => $res['capacidade'],
"responsavel" => $responsavel,
"area" => $area,
"telefone" => $telefone,
"ativo" => $res['ativo']);
}
return $dados_sala;
}
/**
* Monta um array com todos os dados da instancia
* @access public
* @return array
*/
function dados_solicitacao_instancia()
{
$this->updateAttributes( );
$dados_usuario = $this->dados_usuario($this->_solicitante_id);
$solicitante = $dados_usuario['nome_completo'];
$dados_usuario = $this->dados_usuario($this->_responsavel_id);
$area = $dados_usuario['area'];
$responsavel = $dados_usuario['nome_completo'];
$telefone = $dados_usuario['telefone'];
$orgchart = $this->factory->getInstance('wf_orgchart');
$dados_oragnizacao = $orgchart->getCostCenter($this->_centro_custo_id);
$centro_custo = $dados_oragnizacao['descricao'];
$destinatario = $dados_usuario['cnname'];
$dados_solicitacao = array(
"reserva_id" => $this->_reserva_id,
"responsavel_id" => $this->_responsavel_id,
"responsavel_nome" => $responsavel,
"responsavel_area" => $area,
"responsavel_telefone" => $telefone,
"data_solicitacao" => $this->_data_solicitacao,
"centro_custo_id" => $this->_centro_custo_id,
"centro_custo_nome" => $centro_custo,
"soft_necessario" => $this->_soft_necessario,
"local_entrega_equipamento" => $this->_local_entrega_equipamento,
"comentario_avaliacao" => $this->_comentario_avaliacao,
"tipo_evento" => $this->_tipo_evento,
"desc_solicitacao" => $this->_desc_solicitacao,
"num_pessoas" => $this->_num_pessoas,
"obs_reserva" => $this->_obs_reserva,
"historico_reserva" => $this->_historico_reserva,
"solicitante_id" => $this->_solicitante_id,
"solicitante_nome" => $solicitante,
"obs_cafe" => $this->_obs_cafe,
"situacao_recurso" => $this->_situacao_recurso,
"necessita_avaliacao" => $this->_necessita_avaliacao,
"avaliacao" => $this->_avaliacao,
"cafe" => $this->_cafe);
return $dados_solicitacao;
}
/**
* Monta um array com todas as datas e horas de solicitação de reserva
* @param int $reserva_id identificador da solicitação de reserva
* @access public
* @return array
*/
function data_solicitacao($reserva_id)
{
$datas_solicitacao = $this->data_solicitacao_salas($reserva_id);
// se não existirem salas reservadas
if (!count($datas_solicitacao))
{
// seleciona um equipamento_id qualquer da tabela reserva_equipamento - o primeiro que aparecer
$this->commandText = "
SELECT
equipamento_id
FROM
reserva_recursos.reserva_equipamento
WHERE
reserva_id = ".$reserva_id;
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$this->equipamento_id = $res['equipamento_id'];
}
if ($this->equipamento_id != "")
$datas_solicitacao = $this->data_solicitacao_equipamento($reserva_id);
/* se nao existirem equipamentos reservados */
if (empty($datas_solicitacao))
{
$datas_solicitacao = $this->data_solicitacao_locacao($reserva_id);
}
}
return $datas_solicitacao;
}
/**
* Monta um array com as datas e horários das requisições de salas para uma determinada solicitação
* @param int $reserva_id identificador da solicitação de reserva
* @access public
* @return array
*/
function data_solicitacao_salas($reserva_id)
{
// seleciona as datas e horários da tabela reserva-salas se existirem
$this->commandText = "
SELECT
data_hora_inicio,
data_hora_fim
FROM
reserva_recursos.reserva_sala
WHERE
reserva_id = ".$reserva_id."
ORDER BY
data_hora_inicio ";
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$datas_solicitacao[] = array(
"reserva_id" => $reserva_id,
"data_hora_inicio" => $res['data_hora_inicio'],
"data_hora_fim" => $res['data_hora_fim'],
"data" => substr(($res['data_hora_inicio']), 8,2)."/".
substr(($res['data_hora_inicio']), 5,2)."/".
substr(($res['data_hora_inicio']), 0,4),
"hora_inicio" => substr(($res['data_hora_inicio']), 10,9),
"hora_fim" => substr(($res['data_hora_fim']), 10,9),);
}
return $datas_solicitacao;
}
/**
* Monta um array com as datas e horários das requisições de equipamentos para uma determinada solicitação
* @param int $reserva_id identificador da solicitação de reserva
* @access public
* @return array
*/
function data_solicitacao_equipamento($reserva_id)
{
// seleciona as datas solicitadas para o equipamento_id acima
$this->commandText = "
SELECT
data_hora_inicio,
data_hora_fim
FROM
reserva_recursos.reserva_equipamento
WHERE
equipamento_id = ".$this->equipamento_id."
AND
reserva_id = ".$reserva_id."
ORDER BY data_hora_inicio";
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$datas_solicitacao[] = array(
"reserva_id" => $reserva_id,
"data_hora_inicio" => $res['data_hora_inicio'],
"data_hora_fim" => $res['data_hora_fim'],
"data" => substr(($res['data_hora_inicio']), 8,2)."/".
substr(($res['data_hora_inicio']), 5,2)."/".
substr(($res['data_hora_inicio']), 0,4),
"hora_inicio" => substr(($res['data_hora_inicio']), 10,9),
"hora_fim" => substr(($res['data_hora_fim']), 10,9),);
}
return $datas_solicitacao;
}
/**
* Monta um array com as datas e horários das locações requisitadas para uma determinada solicitação
* @param int $reserva_id identificador da solicitação de reserva
* @access public
* @return array
*/
function data_solicitacao_locacao($reserva_id)
{
// seleciona as datas solicitadas para o equipamento_id acima
$this->commandText = "
SELECT
data_hora_inicio,
data_hora_fim
FROM
reserva_recursos.equipamento_locacao
WHERE
reserva_id = ".$reserva_id."
ORDER BY data_hora_inicio";
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$datas_solicitacao[] = array(
"reserva_id" => $reserva_id,
"data_hora_inicio" => $res['data_hora_inicio'],
"data_hora_fim" => $res['data_hora_fim'],
"data" => substr(($res['data_hora_inicio']), 8,2)."/".
substr(($res['data_hora_inicio']), 5,2)."/".
substr(($res['data_hora_inicio']), 0,4),
"hora_inicio" => substr(($res['data_hora_inicio']), 10,9),
"hora_fim" => substr(($res['data_hora_fim']), 10,9),);
}
return $datas_solicitacao;
}
/**
* Lista todos os recursos requisitados para uma determinada reserva e data/hora da reserva
* @param array $datas array com as datas e horas da solicitação
* @param int $reserva_id identificador da reserva
* @access public
* @return array
*/
function lista_recursos_por_data_id_recurso($datas,$reserva_id)
{
// procurando os recursos solicitados
foreach ($datas as $d)
{
// seleciona somente as salas solicitadas
$this->commandText = "
SELECT
RS.sala_id,
RS.reserva_sala_id,
RS.data_hora_inicio,
RS.data_hora_fim,
RS.situacao,
S.nome,
S.responsavel_id
FROM
reserva_recursos.reserva_sala as RS, reserva_recursos.sala as S
WHERE
RS.sala_id = S.sala_id
AND
RS.data_hora_inicio = '".$d['data_hora_inicio']."'
AND
RS.data_hora_fim = '".$d['data_hora_fim']."'
AND
RS.reserva_id = ".$reserva_id."
ORDER BY RS.data_hora_inicio,RS.sala_id";
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$dados_usuario = $this->dados_usuario($res['responsavel_id']);
$area = $dados_usuario['area'];
$responsavel = $dados_usuario['nome_completo'];
$telefone = $dados_usuario['telefone'];
$sala[] = array(
"recurso" => "Sala",
"id_recurso" => $res['sala_id'],
"num_reserva" => $res['reserva_sala_id'],
"data_hora_inicio" => $res['data_hora_inicio'],
"data_hora_fim" => $res['data_hora_fim'],
"situacao" => $res['situacao'],
"descricao" => $res['nome'],
"responsavel" => $responsavel,
"telefone" => $telefone,
"data" => substr(($res['data_hora_inicio']), 8,2)."/".
substr(($res['data_hora_inicio']), 5,2)."/".
substr(($res['data_hora_inicio']), 0,4),
"hora_inicio" => substr(($res['data_hora_inicio']), 10,9),
"hora_fim" => substr(($res['data_hora_fim']), 10,9),
"observacao" => "");
}
// seleciona somente os equipamentos solicitados
$this->commandText = "
SELECT
RE.equipamento_id,
RE.reserva_equipamento_id,
RE.data_hora_inicio,
RE.data_hora_fim,
RE.situacao,
E.descricao,
E.responsavel_id
FROM
reserva_recursos.reserva_equipamento as RE, reserva_recursos.equipamento as E
WHERE
RE.equipamento_id = E.equipamento_id
AND
RE.data_hora_inicio = '".$d['data_hora_inicio']."'
AND
RE.data_hora_fim = '".$d['data_hora_fim']."'
AND
RE.reserva_id = ".$reserva_id."
ORDER BY RE.data_hora_inicio,RE.equipamento_id";
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$dados_usuario = $this->dados_usuario($res['responsavel_id']);
$area = $dados_usuario['area'];
$responsavel = $dados_usuario['nome_completo'];
$telefone = $dados_usuario['telefone'];
$equipamento[] = array(
"recurso" => "Equipamento",
"id_recurso" => $res['equipamento_id'],
"num_reserva" => $res['reserva_equipamento_id'],
"data_hora_inicio" => $res['data_hora_inicio'],
"data_hora_fim" => $res['data_hora_fim'],
"situacao" => $res['situacao'],
"descricao" => $res['descricao'],
"responsavel" => $responsavel,
"telefone" => $telefone,
"data" => substr(($res['data_hora_inicio']), 8,2)."/".
substr(($res['data_hora_inicio']), 5,2)."/".
substr(($res['data_hora_inicio']), 0,4),
"hora_inicio" => substr(($res['data_hora_inicio']), 10,9),
"hora_fim" => substr(($res['data_hora_fim']), 10,9),
"observacao" => "");
}
// seleciona somente as locacoes
$this->commandText = "
SELECT
equipamento_locacao_id,
reserva_id,
data_hora_inicio,
data_hora_fim,
descricao,
observacao,
situacao
FROM
reserva_recursos.equipamento_locacao
WHERE
data_hora_inicio = '".$d['data_hora_inicio']."'
AND
data_hora_fim = '".$d['data_hora_fim']."'
AND
reserva_id = ".$reserva_id."
ORDER BY data_hora_inicio,equipamento_locacao_id";
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$equipamento_locacao[] = array(
"recurso" => "Locação",
"id_recurso" => "",
"num_reserva" => $res['equipamento_locacao_id'],
"data_hora_inicio" => $res['data_hora_inicio'],
"data_hora_fim" => $res['data_hora_fim'],
"situacao" => $res['situacao'],
"descricao" => $res['descricao'],
"responsavel" => '',
"telefone" => '',
"data" => substr(($res['data_hora_inicio']), 8,2)."/".
substr(($res['data_hora_inicio']), 5,2)."/".
substr(($res['data_hora_inicio']), 0,4),
"hora_inicio" => substr(($res['data_hora_inicio']), 10,9),
"hora_fim" => substr(($res['data_hora_fim']), 10,9),
"observacao" => $res['observacao']);
}
}
if ((empty($sala))&&(empty($equipamento_locacao)))
$recursos = $equipamento;
elseif ((empty($equipamento))&&(empty($equipamento_locacao)))
$recursos = $sala;
elseif ((empty($equipamento))&&(empty($sala)))
$recursos = $equipamento_locacao;
elseif (empty($equipamento))
$recursos = array_merge($sala,$equipamento_locacao);
elseif (empty($equipamento_locacao))
$recursos = array_merge($sala,$equipamento);
elseif (empty($sala))
$recursos = array_merge($equipamento,$equipamento_locacao);
else
$recursos = array_merge($sala,$equipamento,$equipamento_locacao);
return $recursos;
}
/**
* Monta um array com a data de inicio e final da semana corrente
* @access public
* @return array
*/
function monta_semana()
{
/* retorna um numero correspondente ao dia da semana (0 - domingo a 6 - sabado) */
$hoje_dsemana = date('w', mktime(0, 0, 0, date("m"), date("d"), date("Y"))); // mês/dia/ano
/* se o dia da semana atual é segunda feira - o primeiro dia da lista será a data atual
* se o dia da semana atual é terça - o primeiro dia da lista será a data ataul menos um dia
* o primeiro dia tem que ser sempre segunda feira. */
if ($hoje_dsemana == 1)
$dt_primeiro_dia = date("Y/m/d");
elseif ($hoje_dsemana == 2)
$dt_primeiro_dia = date("Y/m/d", mktime(0, 0, 0, date("m"), date("d") - 1, date("Y")));
elseif ($hoje_dsemana == 3)
$dt_primeiro_dia = date("Y/m/d", mktime(0, 0, 0, date("m"), date("d") - 2, date("Y")));
elseif ($hoje_dsemana == 4)
$dt_primeiro_dia = date("Y/m/d", mktime(0, 0, 0, date("m"), date("d") - 3, date("Y")));
elseif ($hoje_dsemana == 5)
$dt_primeiro_dia = date("Y/m/d", mktime(0, 0, 0, date("m"), date("d") - 4, date("Y")));
elseif ($hoje_dsemana == 6)
$dt_primeiro_dia = date("Y/m/d", mktime(0, 0, 0, date("m"), date("d") - 5, date("Y")));
elseif ($hoje_dsemana == 0)
$dt_primeiro_dia = date("Y/m/d", mktime(0, 0, 0, date("m"), date("d") - 6, date("Y")));
/* transforma a variavel $dt_primeiro_dia numa string usando como separador a / */
$temp = explode("/", $dt_primeiro_dia);
/* o ultimo dia da semana é o primeiro_dia mais 6, tem que ser sempre domingo */
$dt_ultimo_dia = date("Y/m/d ", mktime(0, 0, 0, $temp[1],$temp[2] + 6, $temp[0]));
$dias = array(
"primeiro_dia" => $dt_primeiro_dia,
"ultimo_dia" => $dt_ultimo_dia );
return $dias;
}
/**
* Monta o select para busca das solicitações no banco de dados
* @access public
* @return string
*/
function select_solicitacoes()
{
// seleciona todas as solicitações de reservas
$this->commandText = "
SELECT
reserva_id
FROM
reserva_recursos.reserva
WHERE
reserva_id > 0";
return $this->commandText;
}
/**
* Monta um array com os resultados da função select_solicitacoes()
* @param string comendo sql que faz a busca no banco de dados
* @access public
* @return array
*/
function resultado_solicitacoes($select)
{
$this->resultSet = $this->DAO->query($select);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$lista_solicitacoes[] = $res['reserva_id'];
}
return $lista_solicitacoes;
}
/**
* Lista todos os dados de uma determinada solicitacao
* @return array
* @param int $reserva_id id da reserva
* @access public
*/
function dados_solicitacao_por_reserva($reserva_id)
{
$this->commandText = "
SELECT
R.reserva_id,
R.responsavel_id,
to_char((R.data_solicitacao),'DD/MM/YYYY HH24:MI') as data_solicitacao,
R.centro_custo_id,
R.soft_necessario,
R.local_entrega_equipamento,
R.cafe,
R.necessita_avaliacao,
R.comentario_avaliacao,
R.tipo_evento,
R.desc_solicitacao,
R.num_pessoas,
R.obs_reserva,
R.historico_reserva,
R.solicitante_id,
R.obs_cafe,
R.situacao_recurso,
R.necessita_avaliacao,
R.avaliacao,
R.status_reserva
FROM
reserva_recursos.reserva AS R
WHERE
R.reserva_id = ".$reserva_id ;
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$dados_usuario = $this->dados_usuario($res['responsavel_id']);
$area = $dados_usuario['area'];
$responsavel = $dados_usuario['nome_completo'];
$telefone = $dados_usuario['telefone'];
$dados_usuario = $this->dados_usuario($res['solicitante_id']);
$solicitante = $dados_usuario['nome_completo'];
$orgchart = $this->factory->getInstance('wf_orgchart');
$dados_centro_custo = $orgchart->getCostCenter($res['centro_custo_id']);
$centro_custo = $dados_centro_custo['descricao'];
$dados_solicitacao = array(
"reserva_id" => $res['reserva_id'],
"responsavel_id" => $res['responsavel_id'],
"responsavel" => $responsavel,
"data_solicitacao" => $res['data_solicitacao'],
"centro_custo" => $centro_custo,
"soft_necessario" => $res['soft_necessario'],
"local_entrega_equipamento" => $res['local_entrega_equipamento'],
"cafe" => $res['cafe'],
"avaliacao" => $res['avaliacao'],
"comentario_avaliacao" => $res['comentario_avaliacao'],
"tipo_evento" => $res['tipo_evento'],
"desc_solicitacao" => $res['desc_solicitacao'],
"num_pessoas" => $res['num_pessoas'],
"obs_reserva" => $res['obs_reserva'],
"historico_reserva" => $res['historico_reserva'],
"solicitante" => $solicitante,
"solicitante_id" => $res['solicitante_id'],
"obs_cafe" => $res['obs_cafe'],
"situacao_recurso" => $res['situacao_recurso'],
"telefone" => $telefone,
"necessita_avaliacao" => $res['necessita_avaliacao'],
"area" => $area,
"status_reserva" => $res['status_reserva']);
}
return $dados_solicitacao;
}
/**
* Construtor da camada Model em nivel de processo.
* @param array $env Configuracao MVC.
* @return Model.
* @license http://www.gnu.org/copyleft/gpl.html GPL
* @access protected
*/
function Model(&$env)
{
$this->super(&$env);
$this->filter = & new Filtro();
}
}
?> ]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->REGISTRAR_ANDAMENTO);
}
/**
* Executa a ação salvar da atividade.
* @return void
* @access public
*/
function salvar()
{
$this->model->salvarAction();
$this->loadViewVars();
$this->showForm($this->REGISTRAR_ANDAMENTO);
}
/**
* Executa a ação concluir da atividade.
* @return void
* @access public
*/
function concluir()
{
if (!$this->model->concluirAction())
$this->__default();
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?> ]]>
dados_solicitacao_instancia();
$this->commandText = "
SELECT
situacao_recurso,
historico_reserva,
necessita_avaliacao
FROM
reserva_recursos.reserva
WHERE
reserva_id = ".$dados['reserva_id'];
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$dados_solicitacao = array(
"reserva_id" => $dados['reserva_id'],
"responsavel_id" => $dados['responsavel_id'],
"responsavel_nome" => $dados['responsavel_nome'],
"responsavel_area" => $dados['responsavel_area'],
"responsavel_telefone" => $dados['responsavel_telefone'],
"data_solicitacao" => $dados['data_solicitacao'],
"centro_custo_id" => $dados['centro_custo_id'],
"centro_custo_nome" => $dados['centro_custo_nome'],
"soft_necessario" => $dados['soft_necessario'],
"local_entrega_equipamento" => $dados['local_entrega_equipamento'],
"comentario_avaliacao" => $dados['comentario_avaliacao'],
"tipo_evento" => $dados['tipo_evento'],
"desc_solicitacao" => $dados['desc_solicitacao'],
"num_pessoas" => $dados['num_pessoas'],
"obs_reserva" => $dados['obs_reserva'],
"historico_reserva" => $res['historico_reserva'],
"solicitante_id" => $dados['solicitante_id'],
"solicitante_nome" => $dados['solicitante_nome'],
"obs_cafe" => $dados['obs_cafe'],
"situacao_recurso" => $res['situacao_recurso'],
"necessita_avaliacao" => $res['necessita_avaliacao'],
"avaliacao" => $dados['avaliacao'],
"cafe" => $dados['cafe']);
}
$datas_solicitacao = $this->data_solicitacao($dados['reserva_id']);
$recursos = $this->lista_recursos_por_data_id_recurso($datas_solicitacao,$dados['reserva_id']);
$this->addViewVar("datas_solicitacao" , $datas_solicitacao );
$this->addViewVar("dados_solicitacao" , $dados_solicitacao );
$this->addViewVar("recursos" , $recursos );
return true;
}
/**
* Monta um array com os dados do tpl e os dados da instancia
* @access public
* @return array
*/
function dados_solicitacao_request()
{
$this->updateAttributes( );
$dados_usuario = $this->dados_usuario($this->_solicitante_id);
$solicitante = $dados_usuario['nome_completo'];
$dados_usuario = $this->dados_usuario($this->_responsavel_id);
$area = $dados_usuario['area'];
$responsavel = $dados_usuario['nome_completo'];
$telefone = $dados_usuario['telefone'];
$orgchart = $this->factory->getInstance('wf_orgchart');
$dados_oragnizacao = $orgchart->getCostCenter($this->_centro_custo_id);
$centro_custo = $dados_oragnizacao['descricao'];
if (($this->request['historico_reserva_tmp'] != ""))
$historico_reserva = "".date('d/m/Y').""." - "."".$this->getWfProperty('wf_user_cnname')."".": ".$_POST['historico_reserva_tmp']."
".$_POST['historico_reserva'];
else
$historico_reserva = $_POST['historico_reserva'];
$dados_solicitacao = array(
"avaliacao" => $this->_avaliacao,
"cafe" => $this->_cafe,
"centro_custo_id" => $this->_centro_custo_id,
"centro_custo_nome" => $centro_custo,
"comentario_avaliacao" => $this->_comentario_avaliacao,
"data_solicitacao" => $this->_data_solicitacao,
"desc_solicitacao" => $this->_desc_solicitacao,
"historico_reserva" => $historico_reserva,
"local_entrega_equipamento" => $this->_local_entrega_equipamento,
"necessita_avaliacao" => $this->request['necessita_avaliacao'],
"num_pessoas" => $this->_num_pessoas,
"obs_cafe" => $this->_obs_cafe,
"obs_reserva" => $this->_obs_reserva,
"reserva_id" => $this->_reserva_id,
"responsavel_id" => $this->_responsavel_id,
"responsavel_nome" => $responsavel,
"responsavel_area" => $area,
"responsavel_telefone" => $telefone,
"soft_necessario" => $this->_soft_necessario,
"solicitante_id" => $this->_solicitante_id,
"solicitante_nome" => $solicitante,
"tipo_evento" => $this->_tipo_evento,
"situacao_recurso" => $this->request['situacao_recurso']);
return $dados_solicitacao;
}
/**
* Implementa acao de salvar os dados no banco de dados
* @access public
* @return bool
*/
function salvarAction()
{
$dados_solicitacao = $this->dados_solicitacao_request();
$datas_solicitacao = $this->data_solicitacao($dados_solicitacao['reserva_id']);
$recursos = $this->lista_recursos_por_data_id_recurso($datas_solicitacao,$dados_solicitacao['reserva_id']);
if ($dados_solicitacao['historico_reserva']!= "")
{
$this->commandText = "
UPDATE
reserva_recursos.reserva
SET
historico_reserva = '".$dados_solicitacao['historico_reserva']."'
WHERE
reserva_id = ".$dados_solicitacao['reserva_id'];
$this->resultSet = $this->DAO->query($this->commandText);
}
if ($dados_solicitacao['situacao_recurso']!= "")
{
$this->commandText = "
UPDATE
reserva_recursos.reserva
SET
situacao_recurso = '".$dados_solicitacao['situacao_recurso']."'
WHERE
reserva_id = ".$dados_solicitacao['reserva_id'] ;
$this->resultSet = $this->DAO->query($this->commandText);
}
if ($dados_solicitacao['necessita_avaliacao'] != "")
{
$this->commandText = "
UPDATE
reserva_recursos.reserva
SET
necessita_avaliacao = '".$dados_solicitacao['necessita_avaliacao']."'
WHERE
reserva_id = ".$dados_solicitacao['reserva_id'] ;
$this->resultSet = $this->DAO->query($this->commandText);
}
$this->addViewVar("recursos" , $recursos );
$this->addViewVar("datas_solicitacao" , $datas_solicitacao );
$this->addViewVar("dados_solicitacao" , $dados_solicitacao );
$this->addViewVar("msg" , "O Registro de Andamento da Reserva foi efetuado com sucesso." );
$this->addViewVar("icon_msg" , "icon_msg_sucesso.png" );
$this->addViewVar("class_msg" , "msg_sucesso" );
return true;
}
/**
* Implementa acao de salvar os dados no banco e passar para a proxima atividade, se o campo
* 'necessita_avaliacao' for igual a 1 a proxima atividade será 'Avaliar Reserva', se for igual a
* 2 será 'Concluir'.
* @access public
* @return bool
*/
function concluirAction()
{
$dados_solicitacao = $this->dados_solicitacao_request();
if (!count($this->erros()))
{
if ($dados_solicitacao['situacao_recurso']=="")
$situacao_recurso = 0;
else
$situacao_recurso = $dados_solicitacao['situacao_recurso'];
$this->commandText = "
UPDATE
reserva_recursos.reserva
SET
historico_reserva = '".$dados_solicitacao['historico_reserva']."',
situacao_recurso = ".$situacao_recurso.",
necessita_avaliacao = ".$dados_solicitacao['necessita_avaliacao']."
WHERE
reserva_id = ".$dados_solicitacao['reserva_id'] ;
$this->resultSet = $this->DAO->query($this->commandText);
if ($dados_solicitacao['necessita_avaliacao'] == 1)
{
$this->updateAttributes( );
$this->envia_email();
$this->_historico_reserva = $dados_solicitacao['historico_reserva'];
$this->_necessita_avaliacao = $dados_solicitacao['necessita_avaliacao'];
$this->_situacao_recurso = $situacao_recurso;
$this->instance->setNextActivity ("Avaliar Reserva");
$this->instance->setNextUser($dados_solicitacao['solicitante_id']);
$this->commitInstance ( );
}
else
{
$this->commandText = "
UPDATE
reserva_recursos.reserva
SET
status_reserva = 'Reserva Concluída'
WHERE
reserva_id = ".$dados_solicitacao['reserva_id'] ;
$this->resultSet = $this->DAO->query($this->commandText);
$this->updateAttributes( );
$this->_historico_reserva = $dados_solicitacao['historico_reserva'];
$this->_necessita_avaliacao = $dados_solicitacao['necessita_avaliacao'];
$this->_situacao_recurso = $situacao_recurso;
$this->updateInstance ( );
$this->instance->setNextActivity("concluir");
$this->commitInstance ( );
}
return true;
}
else
{
$datas_solicitacao = $this->data_solicitacao($dados_solicitacao['reserva_id']);
$recursos = $this->lista_recursos_por_data_id_recurso($datas_solicitacao,$dados_solicitacao['reserva_id']);
$this->addViewVar("recursos" , $recursos );
$this->addViewVar("datas_solicitacao" , $datas_solicitacao );
$this->addViewVar("dados_solicitacao" , $dados_solicitacao );
$this->addViewVar("msg" , $this->erros() );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
/**
* Verifica se existe erro no preenchimento dos campos
* @access public
* @return array
*/
function erros()
{
$erros = array();
if (($this->request['necessita_avaliacao']!= 2) && ($this->request['necessita_avaliacao']!=1))
$erros[] = "É necessário o preenchimento do campo Solicitar Avaliação.";
return $erros;
}
/**
* Implementa acao envia_email da atividade - Monta os dados para enviar o email ao usuario
* @access public
* @return bool
*/
function envia_email()
{
$this->updateAttributes( );
$this->dados_solicitante = $this->dados_usuario($this->_solicitante_id);
$this->_destinatario = $this->dados_solicitante['email'];
$this->_email_remetente = "eventos@celepar.pr.gov.br";
$this->_assunto = "Solicitação de Reserva de Recursos";
$this->_texto_email = '
Solicitação de Reserva de Recursos
Sua Solicitação de Reserva de Recursos foi concluída.
É necessário que verifique sua caixa de entrada no Workflow do Expresso e avalie o atendimento obtido.
Em caso de dúvida, contate a COEVE - Coordenação de Eventos através do ramal 5507.
';
return true;
}
}
?> ]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->SOLICITAR_RESERVA);
}
/**
* Executa a ação de salvar as datas desejadas para a reserva.
* @return void
* @access public
*/
function salvar_data()
{
$this->model->salvar_dataAction();
$this->loadViewVars();
$this->showForm($this->SOLICITAR_RESERVA);
}
/**
* Executa a ação de exclusão de datas já solicitadas.
* @return void
* @access public
*/
function excluir_data()
{
$this->model->Excluir_dataAction();
$this->__default();
}
/**
* Executa a ação de confirmar uma solicitação de reserva para uma determinada sala.
* @return void
* @access public
*/
function confirmar_sala()
{
$this->model->confirmar_salaAction();
$this->__default();
}
/**
* Executa a ação de exclusão de uma solicitação para uma determinada sala.
* @return void
* @access public
*/
function excluir_sala()
{
$this->model->excluir_salaAction();
$this->__default();
}
/**
* Executa a ação de exclusão de uma solicitação de locação de um determinado recurso.
* @return void
* @access public
*/
function excluir_locacao()
{
$this->model->excluir_locacaoAction();
$this->__default();
}
/**
* Executa a ação de exibir os detalhes de uma determinada sala.
* @return void
* @access public
*/
function exibir_sala()
{
$this->model->exibir_salaAction();
$this->loadViewVars();
$this->showForm($this->EXIBIR_SALA);
}
/**
* Executa a ação de mostrar todos os equipamentos de um determinado tipo.
* @return void
* @access public
*/
function ver_equipamento()
{
$this->model->ver_equipamentoAction();
$this->__default();
}
/**
* Executa a ação incluir na solicitação de reserva um determinado equipamento.
* @return void
* @access public
*/
function confirmar_equipamento()
{
$this->model->confirmar_equipamentoAction();
$this->__default();
}
/**
* Executa a ação de excluir da solicitação um determinado equipamento já escolhido.
* @return void
* @access public
*/
function excluir_equipamento()
{
$this->model->excluir_equipamentoAction();
$this->__default();
}
/**
* Executa a ação de exibir os detalhes de um determinado equipamento.
* @return void
* @access public
*/
function exibir_equipamento()
{
$this->model->exibir_equipamentoAction();
$this->loadViewVars();
$this->showForm($this->EXIBIR_EQUIPAMENTO);
}
/**
* Executa a ação de sair da tela de solicitação de reserva.
* @return void
* @access public
*/
function sair()
{
$this->model->sairAction();
$this->cancelar();
}
/**
* Executa a ação de confirmar uma determinada solicitação de reserva.
* @return void
* @access public
*/
function confirmar_solicitacao()
{
$this->model->confirmar_solicitacaoAction();
$this->loadViewVars();
$this->showForm($this->SOLICITAR_RESERVA);
}
/**
* Executa a ação de confirmar locação de um determinado recurso.
* @return void
* @access public
*/
function confirmar_locacao()
{
$this->model->confirmar_locacaoAction();
$this->__default();
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?> ]]>
identificador_tmp = $this->atribui_identificador();
$this->addViewVar("lista_tmp_datas" , $this->listar_datas_tmp());
$this->dados_addViewVar();
return true;
}
/**
* Atribui valores as variaveis que serão enviadas ao tpl
* @access public
* @return bool
*/
function dados_addViewVar()
{
$this->dados_solicitacao = $this->dados_solicitacao();
$salas_desocupadas = $this->lista_salas_desocupadas();
if (!empty($salas_desocupadas))
{
foreach ($salas_desocupadas as $sd)
{
$tmp = array();
$tmp[] = $this->dados_sala($sd);
$dados_salas_desocupadas[] = $tmp[0][0];
}
}
$salas_ocupadas = $this->lista_salas_ocupadas();
if (!empty($salas_ocupadas))
{
foreach ($salas_ocupadas as $so)
{
$tmp = array();
$tmp[] = $this->dados_sala($so);
$dados_salas_ocupadas[] = $tmp[0][0];
}
}
$salas_tmp = $this->listar_salas_tmp_por_identificador();
if (!empty($salas_tmp))
{
foreach ($salas_tmp as $st)
{
$tmp = array();
$tmp[] = $this->dados_sala($st['sala_id']);
$dados_salas_tmp[] = array (
"tmp_sala_id" => $st['tmp_sala_id'],
"dados" => $tmp[0][0]);
}
}
$equipamentos_tmp = $this->listar_equipamentos_tmp_por_identificador();
if (!empty($equipamentos_tmp))
{
foreach ($equipamentos_tmp as $et)
{
$tmp = array();
$tmp[] = $this->dados_equipamento($et['equipamento_id']);
$dados_equipamentos_tmp[] = array (
"tmp_equipamento_id" => $et['tmp_equipamento_id'],
"dados" => $tmp[0][0]);
}
}
$this->addViewVar("responsavel_id" , $this->dados_solicitacao['responsavel_id'] );
$this->addViewVar("responsavel" , $this->dados_solicitacao['responsavel'] );
$this->addViewVar("dados_solicitacao" , $this->dados_solicitacao );
$this->addViewVar("lista_salas_ocupadas" , $dados_salas_ocupadas );
$this->addViewVar("lista_tmp_salas" , $dados_salas_tmp );
$this->addViewVar("lista_tmp_equipamentos" , $dados_equipamentos_tmp );
$this->addViewVar("lista_salas_desocupadas" , $dados_salas_desocupadas );
$this->addViewVar("lista_tipo_equipamentos" , $this->lista_tipos_equipamentos_ativos() );
$this->addViewVar("lista_equipamentos_locacao_tmp" , $this->listar_locacoes_tmp_por_identificador() );
$this->addViewVar("dados_data" , $this->dados_data() );
return true;
}
/**
* Monta um array contendo o identificador de todas as salas desocupadas
* @access public
* @return array
*/
function lista_salas_desocupadas()
{
$salas_ocupadas = $this->lista_salas_ocupadas();
$salas_ativas = $this->lista_salas_ativas();
if (!empty($salas_ocupadas))
$salas_desocupadas = array_diff($salas_ativas,$salas_ocupadas);
else
$salas_desocupadas = $salas_ativas;
if (!empty ($salas_desocupadas))
// tira do array os valores repetidos
$salas_desocupadas = array_unique($salas_desocupadas);
return $salas_desocupadas;
}
/**
* Monta um array com todos os identificadores das salas ocupadas para um determinado horário
* @access public
* @return array
*/
function lista_salas_ocupadas()
{
// seleciona as datas/horas de inicio e termino das reservas
$lista_tmp_datas = $this->listar_datas_tmp();
for($i=0; $i < count($lista_tmp_datas); $i++)
{
$this->commandText = "
SELECT
sala_id
FROM
reserva_recursos.reserva_sala
WHERE
(
(
to_char((data_hora_inicio),'YYYY-MM-DD HH24:MI:00') >= '".$lista_tmp_datas[$i]['data_hora_inicio']."'
AND
to_char((data_hora_inicio),'YYYY-MM-DD HH24:MI:00') <= '".$lista_tmp_datas[$i]['data_hora_fim']."'
)
OR
(
to_char((data_hora_fim),'YYYY-MM-DD HH24:MI:00') >= '".$lista_tmp_datas[$i]['data_hora_inicio']."'
AND
to_char((data_hora_fim),'YYYY-MM-DD HH24:MI:00') <= '".$lista_tmp_datas[$i]['data_hora_fim']."'
)
OR
(
to_char((data_hora_inicio),'YYYY-MM-DD HH24:MI:00') <= '".$lista_tmp_datas[$i]['data_hora_inicio']."'
AND
to_char((data_hora_fim),'YYYY-MM-DD HH24:MI:00') >= '".$lista_tmp_datas[$i]['data_hora_fim']."'
)
)
AND
(
situacao = 'Em espera' OR situacao = 'Reserva Confirmada')";
$this->resultSet = $this->DAO->query($this->commandText);
// salas ocupadas no horário da reserva
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$salas_ocupadas[]= $res['sala_id'];
}
}
if (!empty ($salas_ocupadas))
$salas_ocupadas = array_unique($salas_ocupadas);
return $salas_ocupadas;
}
/**
* Monta um array com todas as salas já escolhidas na solicitação de reserva
* @access public
* @return array
*/
function listar_salas_tmp_por_identificador()
{
$this->commandText = "
SELECT
sala_id, tmp_sala_id
FROM
reserva_recursos.tmp_sala_reserva
WHERE
identificador_tmp = ".$this->identificador_tmp;
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$lista_tmp_salas[] = array(
"sala_id" => $res['sala_id'],
"tmp_sala_id" => $res['tmp_sala_id']);
}
return $lista_tmp_salas;
}
/**
* Implementa acao de salvar uma determinada data para a solicitação de reserva
* @access public
* @return bool
*/
function salvar_dataAction()
{
$this->identificador_tmp = $this->request['identificador_tmp'];
$this->dados_solicitacao = $this->dados_solicitacao();
$this->lista_tmp_datas = $this->listar_datas_tmp();
$dados_data = array(
"data_inicio" => $this->request['data_inicio'],
"lista_horas" => $this->lista_horas(),
"hora_inicio" => $this->request['hora_inicio'],
"hora_fim" => $this->request['hora_fim'],
"lista_minutos" => $this->lista_minutos(),
"minuto_inicio" => $this->request['minuto_inicio'],
"minuto_fim" => $this->request['minuto_fim'],
"lista_repeticao" => $this->lista_tipo_repeticoes(),
"dtfim_repeticao" => $this->request['dtfim_repeticao'],
"repeticao" => $this->request['repeticao']);
// se não tem erros
if (!count($this->erros_data()))
{
$data_solicitada = substr(($this->request['data_inicio']), 6,4)."-".substr(($this->request['data_inicio']), 3,2)."-".substr(($this->request['data_inicio']), 0,2);
$dtfim_repeticao = substr(($this->request['dtfim_repeticao']), 6,4)."-".substr(($this->request['dtfim_repeticao']), 3,2)."-".substr(($this->request['dtfim_repeticao']), 0,2);
$data_hora_inicio = $data_solicitada." ".$this->request['hora_inicio'].":".$this->request['minuto_inicio'].":00";
$data_hora_fim = $data_solicitada." ".$this->request['hora_fim'].":".$this->request['minuto_fim'].":00";
// se tiver repetições
if (($this->request['repeticao']) > 1)
{
while ($dtfim_repeticao >= $data_solicitada)
{
$data_hora_inicio = $data_solicitada." ".$this->request['hora_inicio'].":".$this->request['minuto_inicio'].":00";
$data_hora_fim = $data_solicitada." ".$this->request['hora_fim'].":".$this->request['minuto_fim'].":00";
$lista_datas_novas [] = array(
"identificador_tmp" => $this->identificador_tmp,
"data_hora_inicio" => $data_hora_inicio,
"data_hora_fim" => $data_hora_fim );
/* se repetição diaria */
if ($this->request['repeticao'] == 2)
{
$temp = explode("-", $data_solicitada);
$data_solicitada = date("Y-m-d", mktime(0, 0, 0, $temp[1],$temp[2] + 1, $temp[0]));
}
/* se repeticao semanal */
elseif ($this->request['repeticao'] == 3)
{
$temp = explode("-", $data_solicitada);
$data_solicitada = date("Y-m-d", mktime(0, 0, 0, $temp[1],$temp[2] + 7, $temp[0]));
}
/* se repetição mensal */
elseif ($this->request['repeticao'] ==4)
{
$temp = explode("-", $data_solicitada);
$data_solicitada = date("Y-m-d", mktime(0, 0, 0, $temp[1]+1,$temp[2], $temp[0]));
}
}
//verifica se os dados a serem inseridos já existem
for ($i=0; $i < count($lista_datas_novas); $i++)
{
if (!empty($this->lista_tmp_datas))
{
for ($j = 0; $j < count($this->lista_tmp_datas); $j++)
{
if ((($lista_datas_novas[$i]['data_hora_inicio'] >= $this->lista_tmp_datas[$j]['data_hora_inicio']) && ($lista_datas_novas[$i]['data_hora_inicio'] <= $this->lista_tmp_datas[$j]['data_hora_fim'])) ||
(($lista_datas_novas[$i]['data_hora_fim'] >= $this->lista_tmp_datas[$j]['data_hora_inicio']) && ($lista_datas_novas[$i]['data_hora_fim'] <= $this->lista_tmp_datas[$j]['data_hora_fim']))||
(($lista_datas_novas[$i]['data_hora_inicio'] <= $this->lista_tmp_datas[$j]['data_hora_inicio']) && ($lista_datas_novas[$i]['data_hora_fim'] > $this->lista_tmp_datas[$j]['data_hora_fim'])))
{
$erro = 1;
}
}
}
/* se ainda não existe */
if ($erro != 1)
{
$this->insere_data($lista_datas_novas[$i]['data_hora_inicio'],
$lista_datas_novas[$i]['data_hora_fim'],
$this->identificador_tmp);
}
}
}
// se não tiver repetições
else
{
// se a tabela temporaria de datas não está vazia
if (!empty($this->lista_tmp_datas))
{
for ($j = 0; $j < count($this->lista_tmp_datas); $j++)
{
if ((($data_hora_inicio >= $this->lista_tmp_datas[$j]['data_hora_inicio']) && ($data_hora_inicio <= $this->lista_tmp_datas[$j]['data_hora_fim'])) ||
(($data_hora_fim >= $this->lista_tmp_datas[$j]['data_hora_inicio']) && ($data_hora_fim <= $this->lista_tmp_datas[$j]['data_hora_fim']))||
(($data_hora_inicio <= $this->lista_tmp_datas[$j]['data_hora_inicio']) && ($data_hora_fim > $this->lista_tmp_datas[$j]['data_hora_fim'])))
{
$erro = 1;
}
}
}
if ($erro != 1)
{
$this->insere_data($data_hora_inicio, $data_hora_fim, $this->identificador_tmp);
}
}
/* se houve algum erro */
if ($erro == 1)
{
$this->dados_addViewVar();
$this->addViewVar("lista_tmp_datas" , $this->lista_tmp_datas );
$this->addViewVar("erro_data" , "A data/hora solicitada está conflitando com uma data/hora já existente. Por favor verifique." );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
/* se não houve nenhum erro */
else
{
$this->dados_addViewVar();
$this->addViewVar("dados_data" , $this->dados_data() );
$this->addViewVar("lista_tmp_datas" , $this->listar_datas_tmp() );
return true;
}
}
// se tiver erros
else
{
$this->dados_addViewVar();
$this->addViewVar("dados_data" , $dados_data );
$this->addViewVar("lista_tmp_datas" , $this->lista_tmp_datas );
$this->addViewVar("erro_data" , $this->erros_data() );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
/**
* Insere valores no banco de dados na tabela tmp_data_reserva
* @param timestamp $inicio Data_hora_inicio da reserva
* @param timestamp $fim Data_hora_fim da reserva
* @param int $num_reserva Número da reserva temporária
* @access public
* @return bool
*/
function insere_data($inicio, $fim, $num_reserva)
{
$this->commandText = "
INSERT INTO reserva_recursos.tmp_data_reserva(
data_hora_inicio,
data_hora_fim,
identificador_tmp )
VALUES (
'".$inicio."',
'".$fim."',
".$num_reserva.")";
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Insere valores no banco de dados na tabela tmp_equipamento_locacao
* @access public
* @return bool
*/
function confirmar_locacaoAction()
{
$this->dados_solicitacao = $this->dados_solicitacao();
$this->desc_equipamento_locar = $this->request['desc_equipamento_locar'];
$this->identificador_tmp = $this->request['identificador_tmp'];
if (!count($this->erros_locacao()))
{
$this->commandText = "
INSERT INTO reserva_recursos.tmp_equipamento_locacao(
descricao,
observacao,
identificador_tmp )
VALUES (
'".$this->desc_equipamento_locar."',
'".$this->request['obs_locar']."',
".$this->identificador_tmp.")";
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
else
{
$this->addViewVar("desc_equipamento_locar" , $this->request['desc_equipamento_locar']);
$this->addViewVar("obs_locar" , $this->request['obs_locar'] );
$this->addViewVar("erros_locacao" , $this->erros_locacao() );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
/**
* Verifica se todos os campos relacionados a datas necessários a solicitação de
* reserva estão preenchidos de forma correta.
* @access public
* @return array
*/
function erros_data()
{
$erros = array();
$data_solicitada = substr(($this->request['data_inicio']), 6,4)."-".substr(($this->request['data_inicio']), 3,2)."-".substr(($this->request['data_inicio']), 0,2);
$data_hora_inicio = $data_solicitada." ".$this->request['hora_inicio'].":".$this->request['minuto_inicio'].":00";
$data_hora_fim = $data_solicitada." ".$this->request['hora_fim'].":".$this->request['minuto_fim'].":00";
$data_fim_repeticao = substr(($this->request['dtfim_repeticao']), 6,4)."-".substr(($this->request['dtfim_repeticao']), 3,2)."-".substr(($this->request['dtfim_repeticao']), 0,2);
$hoje = date("Y-m-d");
$hoje = explode("-",$hoje);
$data_limite = date("Y-m-d", mktime(0, 0, 0, $hoje[1]+3,$hoje[2], $hoje[0]));
/* verifica o preenchimento dos campos obrigatórios */
if ((empty($this->request['hora_inicio']))||(empty($this->request['minuto_inicio']))||(empty($this->request['hora_fim']))||(empty($this->request['minuto_fim'])))
$erros[] = 'Os campos marcados com (*) são de preenchimento obrigatório.';
else
{
/* se a data solicitada estiver dentro do limite de tres meses */
if($data_solicitada >=$data_limite)
$erros[] = 'A data solicitada ultrapassou o prazo limite de três meses.';
if($data_fim_repeticao >=$data_limite)
$erros[] = 'A data final da repetição ultrapassou o prazo limite de três meses.';
/* se a data de inicio for anterior a data atual */
if ( $data_hora_inicio <= date('Y-m-d H:i:s'))
$erros[] = 'Não é permitido efetuar uma reserva com data/hora anterior a atual.';
/* se a hora final da reserva for menor que a hora de inicio */
if ($data_hora_fim <= $data_hora_inicio)
$erros[] = 'O horário final da reserva deve ser maior que o horário de início desta.';
/* se houver algum tipo de repetição e o campo dtfim_repetição não for preenchido */
if ((($this->request['repeticao'])>1)&& (($this->request['dtfim_repeticao'])==""))
$erros[] = 'O preenchimento do campo Data Final da Repetição é obrigatório.';
/* se houver algum tipo de repetição e data de inicio da reserva for maior que a
* data final da repetição, retorna erro.
*/
if ( (($this->request['repeticao'])>1) && ($data_solicitada >= $data_fim_repeticao))
$erros[] = 'A data final da repetição não pode ser anterior a data inicial do evento.';
}
return $erros;
}
/**
* Apaga do banco de dados o registro de uma determinada data/hora escolhida anteriormente
* @access public
* @return bool
*/
function excluir_dataAction()
{
$tmp_data_id = $this->request['params'];
$identificador_tmp = $this->request['identificador_tmp'];
$this->commandText = "
DELETE
FROM
reserva_recursos.tmp_data_reserva
WHERE
tmp_data_id = $tmp_data_id";
$this->resultSet = $this->DAO->query($this->commandText);
$this->commandText2 = "
DELETE
FROM
reserva_recursos.tmp_sala_reserva
WHERE
identificador_tmp = $identificador_tmp";
$this->resultSet = $this->DAO->query($this->commandText2);
$this->commandText3 = "
DELETE
FROM
reserva_recursos.tmp_equipamento_reserva
WHERE
identificador_tmp = $identificador_tmp";
$this->resultSet = $this->DAO->query($this->commandText3);
return true;
}
/**
* Mostra todos os equipamentos de um determinado tipo
* @access public
* @return bool
*/
function ver_equipamentoAction()
{
$this->identificador_tmp = $this->request['identificador_tmp'];
$this->tipo_equipamento = $this->request['tipo_equipamento'];
$this->lista_tmp_datas = $this->listar_datas_tmp();
$equipamentos_desocupados = $this->listar_equipamentos_desocupados_por_tipo($this->tipo_equipamento);
if (!empty($equipamentos_desocupados))
{
foreach ($equipamentos_desocupados as $ed)
{
$tmp = array();
$tmp[] = $this->dados_equipamento($ed);
$dados_equipamentos_desocupados[] = $tmp[0][0];
}
}
$equipamentos_ocupados = $this->listar_equipamentos_ocupados_por_tipo($this->tipo_equipamento);
if (!empty($equipamentos_ocupados))
{
foreach ($equipamentos_ocupados as $eo)
{
$tmp = array();
$tmp[] = $this->dados_equipamento($eo);
$dados_equipamentos_ocupados[] = $tmp[0][0];
}
}
$this->addViewVar("lista_equipamentos_ocupados" , $dados_equipamentos_ocupados );
$this->addViewVar("lista_equipamentos_desocupados" , $dados_equipamentos_desocupados );
$this->addViewVar("tipo_equipamento" , $this->tipo_equipamento );
return true;
}
/**
* Monta um array com os identificadores dos equipamentos que ja foram reqisitados
* para esta solicitacao
* @access public
* @return array
*/
function listar_equipamentos_tmp_por_identificador()
{
$this->commandText = "
SELECT
tmp_equipamento_id, equipamento_id
FROM
reserva_recursos.tmp_equipamento_reserva
WHERE
identificador_tmp = ".$this->identificador_tmp;
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$lista_tmp_equipamento[] = array(
"tmp_equipamento_id" => $res['tmp_equipamento_id'],
"equipamento_id" => $res['equipamento_id']);
}
return $lista_tmp_equipamento;
}
/**
* Monta um array com os identificadores dos equipamentos que ja foram locados
* para esta solicitacao
* @access public
* @return array
*/
function listar_locacoes_tmp_por_identificador()
{
$this->commandText = "
SELECT
tmp_equipamento_locacao,
descricao,
observacao
FROM
reserva_recursos.tmp_equipamento_locacao
WHERE identificador_tmp = ".$this->identificador_tmp;
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$lista_tmp_equipamento_locacao[] = array(
"tmp_equipamento_locacao" => $res['tmp_equipamento_locacao'],
"descricao" => $res['descricao'],
"observacao" => $res['observacao']);
}
return $lista_tmp_equipamento_locacao;
}
/**
* Exclui uma determinada locacao da tabela tmp_equipamento_locacao
* @access public
* @return bool
*/
function excluir_locacaoAction()
{
$equipamento_locacao = $this->request['params'];
$this->commandText = "
DELETE
FROM
reserva_recursos.tmp_equipamento_locacao
WHERE tmp_equipamento_locacao = ".$equipamento_locacao;
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Monta um array com detalhes de todos os equipamentos solicitados
* @param array $array_equipamentos lista dos equipamentos que se que
* @access public
* @return array
*/
/*function listar_dados_equipamentos($array_equipamentos)
{
if (!empty($array_equipamentos))
{
// tira do array os valores repetidos
$equipamentos_ocupados = array_unique($array_equipamentos);
for ($i=0; $i < end($array_equipamentos); $i++)
{
if ($array_equipamentos[$i] != "")
$lista_dados_equipamentos[] = $this->dados_equipamentos_reserva($array_equipamentos[$i]);
}
}
else
{
$lista_dados_equipamentos = "";
}
return $lista_dados_equipamentos;
}*/
/**
* Grava os dados do equipamento escolhido na tabela tmp_equipamento_reserva.
* @access public
* @return bool
*/
function confirmar_equipamentoAction()
{
$equipamento_id = $this->request['selecionar_equipamento'];
$this->tipo_equipamento = $this->request['tipo_equipamento'];
$this->identificador_tmp = $this->request['identificador_tmp'];
$this->datas_tmp = $this->listar_datas_tmp();
if (!empty($this->datas_tmp))
{
if (!count($this->erros_equipamento()))
{
$this->commandText = "
INSERT INTO reserva_recursos.tmp_equipamento_reserva(
equipamento_id,
identificador_tmp )
VALUES (
".$equipamento_id.",
".$this->identificador_tmp.")";
$this->resultSet = $this->DAO->query($this->commandText);
$this->addViewVar("tipo_equipamento" , "0" );
return true;
}
else
{
$this->ver_equipamentoAction();
$this->addViewVar("tipo_equipamento" , $this->tipo_equipamento );
$this->addViewVar("erro_equipamento" , $this->erros_equipamento() );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
else
{
$this->ver_equipamentoAction();
$this->addViewVar("tipo_equipamento" , $this->tipo_equipamento );
$this->addViewVar("erro_equipamento" , "Antes de escolher um equipamento você deve escolher uma data/horário para a reserva.");
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
/**
* Mostra os detalhes de um determinado equipamento
* @access public
* @return bool
*/
function exibir_equipamentoAction()
{
$equipamento_id = $this->request['params'];
$solicitar = $this->request['solicitar'];
$lista_equipamentos = $this->dados_equipamento($equipamento_id);
$this->addViewVar("lista_equipamentos" , $lista_equipamentos );
$this->addViewVar("solicitar" , $solicitar );
return true;
}
/**
* Apaga o registro de um determinado equipamento reservado
* @access public
* @return bool
*/
function excluir_equipamentoAction()
{
$tmp_equipamento_id = $this->request['params'];
$this->commandText =
"DELETE
FROM
reserva_recursos.tmp_equipamento_reserva
WHERE
tmp_equipamento_id = $tmp_equipamento_id ";
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Implementa acao de confirmação de uma determinada sala para uma solicitação de reserva
* @access public
* @return bool
*/
function confirmar_salaAction()
{
$this->dados_solicitacao = $this->dados_solicitacao();
$this->identificador_tmp = $this->request['identificador_tmp'];
$this->sala_id = $this->request['selecionar'];
$this->datas_tmp = $this->listar_datas_tmp();
if (!empty($this->datas_tmp))
{
if (!count($this->erros_sala()))
{
$this->commandText = "
INSERT INTO reserva_recursos.tmp_sala_reserva(
sala_id,
identificador_tmp )
VALUES (
".$this->sala_id.",
".$this->identificador_tmp.")";
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
else
{
$this->addViewVar("erro_sala" , $this->erros_sala() );
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
else
{
$this->addViewVar("erro_sala" , "Antes de escolher a sala você deve confirmar uma data/horário para a reserva.");
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
return false;
}
}
/**
* Implementa acao de exibir todos os detalhes de um determinada sala
* @access public
* @return bool
*/
function exibir_salaAction()
{
$sala_id = $this->request['params'];
$solicitar = $this->request['solicitar'];
$lista_salas = $this->dados_sala($sala_id);
$this->addViewVar("lista_salas" , $lista_salas );
$this->addViewVar("solicitar" , $solicitar );
return true;
}
/**
* Verifica se todos os campos referentes a reserva de uma sala estão preenchidos
* corretamente
* @access public
* @return array
*/
function erros_sala()
{
$erros = array();
$this->lista_sala_tmp = $this->listar_salas_tmp_por_identificador();
if (empty($this->datas_tmp))
{
$erros[] = 'Antes de escolher uma sala, é necessário que escolhas as datas e horários para a reserva.';
}
if (!empty($this->lista_sala_tmp))
{
$erros[] = 'Você já confirmou uma sala para esta solicitação de reserva.';
}
return $erros;
}
/**
* Exclui uma determinada sala da solicitação de reserva
* @access public
* @return bool
*/
function excluir_salaAction()
{
$sala_id = $this->request['params'];
$this->commandText =
"
DELETE
FROM
reserva_recursos.tmp_sala_reserva
WHERE
tmp_sala_id = $sala_id ";
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Executa a ação de inserir uma reserva no banco de dados
* @access public
* @return bool
*/
function insere_reserva()
{
$this->commandText = "
INSERT INTO reserva_recursos.reserva (
reserva_id,
responsavel_id,
data_solicitacao,
centro_custo_id,
soft_necessario,
local_entrega_equipamento,
tipo_evento,
desc_solicitacao,
num_pessoas,
obs_reserva,
solicitante_id,
obs_cafe,
situacao_recurso,
necessita_avaliacao,
avaliacao,
cafe,
status_reserva)
VALUES (
".$this->reserva_id.",
".$this->dados_solicitacao['responsavel_id'].",
'".$this->data_solicitacao."',
".$this->dados_solicitacao['centro_custo_id'].",
'".$this->dados_solicitacao['soft_necessario']."',
'".$this->dados_solicitacao['local_entrega_equipamento']."',
".$this->dados_solicitacao['tipo_evento'].",
'".$this->dados_solicitacao['desc_solicitacao']."',
".$this->dados_solicitacao['num_pessoas'].",
'".$this->dados_solicitacao['obs_reserva']."',
".$this->dados_solicitacao['solicitante_id'].",
'".$this->dados_solicitacao['obs_cafe']."',
0,
0,
0,
".$this->dados_solicitacao['cafe'].",
'Em Andamento')";
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Executa a ação de inserir uma determinada sala na tabela reserva_sala
* @param integer $sala id da sala a ser inserida
* @param integer $reserva_id id da reserva para qual a sala será reservada
* @param timestamp $dh_inicio data/hora de inicio da reserva
* @param timestamp $dh_fim data/hora de fim da reserva
* @access public
* @return bool
*/
function inserir_sala($sala, $reserva_id, $dh_inicio, $dh_fim)
{
$this->commandText = "
INSERT INTO reserva_recursos.reserva_sala(
sala_id,
reserva_id,
data_hora_inicio,
data_hora_fim,
situacao )
VALUES (
".$sala.",
".$reserva_id.",
'".$dh_inicio."',
'".$dh_fim."',
'Em espera')";
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Executa a ação de inserir equipamentos no banco de dados na tabela reserva_equipamento
* @access public
* @param int $equipamento id do equipamento a ser inserido
* @param int $reserva_id id da reserva para qual o equipamento está sendo solicitado
* @param timestamp $dh_inicio Data e hora de inicio da reserva
* @param timestamp $dh_fim Data e hora de fim da reserva
* @return bool
*/
function inserir_equipamentos($equipamento, $reserva_id, $dh_inicio, $dh_fim)
{
$this->commandText = "
INSERT INTO reserva_recursos.reserva_equipamento(
equipamento_id,
reserva_id,
data_hora_inicio,
data_hora_fim,
situacao )
VALUES (
".$equipamento.",
".$reserva_id.",
'".$dh_inicio."',
'".$dh_fim."',
'Em espera')";
$this->resultSet = $this->DAO->query($this->commandText);
return true;
}
/**
* Implementa ação de confirmação da solicitação de reserva
* @access public
* @return bool
*/
function confirmar_solicitacaoAction()
{
$this->dados_solicitacao = $this->dados_solicitacao();
$this->identificador_tmp = $this->request['identificador_tmp'];
if ($this->request['cafe']=="")
$this->cafe = 0;
else
$this->cafe = $this->request['cafe'];
if ($this->request['tipo_evento'] == "")
$this->tipo_evento = 0;
else
$this->tipo_evento = $this->request['tipo_evento'];
$orgchart = $this->factory->getInstance('wf_orgchart');
$dados_centro_custo = $orgchart->getCostCenter($this->request['centro_custo_id']);
$centro_custo_nome = $dados_centro_custo['descricao'];
$ldap = $this->factory->getInstance('wf_ldap');
$dados_usuario = $ldap->get_entry($this->request['responsavel_id']);
$responsavel_nome = $dados_usuario['cn'];
/* encontra o numero da reserva */
$this->commandText = "
SELECT
reserva_id
FROM
reserva_recursos.reserva
ORDER BY reserva_id ";
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$this->reserva_id = $res['reserva_id'];
}
$this->reserva_id = $this->reserva_id + 1;
$this->dados_solicitacao = array(
"identificador_tmp" => $this->request['identificador_tmp'],
"solicitante" => $this->getWfProperty('wf_user_cnname'),
"solicitante_id" => $this->getWfProperty('wf_user_id'),
"data_solicitacao" => date('d/m/Y H:i:s'),
"tipo_evento" => $this->tipo_evento,
"responsavel_id" => $this->request['responsavel_id'],
"cafe" => $this->cafe,
"obs_cafe" => $this->request['obs_cafe'],
"desc_solicitacao" => $this->request['desc_solicitacao'],
"lista_centro_custo" => $this->listar_centro_custo(),
"centro_custo_id" => $this->request['centro_custo_id'],
"num_pessoas" => $this->request['num_pessoas'],
"soft_necessario" => $this->request['soft_necessario'],
"local_entrega_equipamento" => $this->request['local_entrega_equipamento'],
"obs_reserva" => $this->request['obs_reserva']);
/* converte a data da solicitação no formato para inserção no bd */
$this->data_solicitacao = substr(($this->dados_solicitacao['data_solicitacao']), 6,4)."-".
substr(($this->dados_solicitacao['data_solicitacao']), 3,2)."-".
substr(($this->dados_solicitacao['data_solicitacao']), 0,2)." ".
substr(($this->dados_solicitacao['data_solicitacao']), 10,9);
$this->addViewVar("responsavel" , $responsavel_nome );
$this->addViewVar("responsavel_id" , $this->dados_solicitacao['responsavel_id'] );
if (!count($this->erros_solicitacao()))
{
$erro = 0;
/* efetua a inserção da reserva no bd */
$this->insere_reserva();
/* busca todas as datas da tabela tmp_data_reserva para esta solicitação */
$datas_tmp = $this->listar_datas_tmp();
/* busca todos os equipamentos da tabela tmp_equipamento_reserva para esta solicitação */
$equipamentos_tmp = $this->listar_equipamentos_tmp_por_identificador();
/* busca todas as salas da tabela tmp_sala_reserva para esta solicitação */
$salas_tmp = $this->listar_salas_tmp_por_identificador();
/* inicio das verificações e inserção de salas na tabela reserva_sala */
/* se existir solicitação para sala */
if (!empty($salas_tmp))
{
foreach ($datas_tmp as $dr)
{
foreach ($salas_tmp as $s)
{
/* monta um array com os dados que devem ser inseridos */
$array_inserir_sala[] = array(
"sala_id" => $s['sala_id'],
"data_hora_inicio" => $dr['data_hora_inicio'],
"data_hora_fim" => $dr['data_hora_fim']);
}
}
/* verifica as salas que já estão na tabela reserva_sala */
$this->commandText = "
SELECT
sala_id,
data_hora_inicio,
data_hora_fim
FROM
reserva_recursos.reserva_sala
WHERE
situacao = 'Em espera' OR situacao = 'Reserva Confirmada' ";
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$salas_reservadas[] = array(
"sala_id" => $res['sala_id'],
"data_hora_inicio" => $res['data_hora_inicio'],
"data_hora_fim" => $res['data_hora_fim']);
}
/* se existirem salas já cadastradas na reserva_sala */
if (!empty($salas_reservadas))
{
foreach ($array_inserir_sala as $ais)
{
foreach ($salas_reservadas as $sr)
{
if ($ais['sala_id'] == $sr['sala_id'])
{
if ((( $ais['data_hora_inicio'] > $sr['data_hora_inicio'])&&( $ais['data_hora_inicio'] < $sr['data_hora_fim'])) ||
(( $ais['data_hora_fim'] > $sr['data_hora_inicio'])&&( $ais['data_hora_fim'] < $sr['data_hora_fim'])) ||
(( $ais['data_hora_inicio'] < $sr['data_hora_inicio'])&& ( $ais['data_hora_fim'] > $sr['data_hora_fim'])))
{
$erro = $erro + 1;
}
}
}
}
}
}
if (!empty($equipamentos_tmp))
{
foreach ($datas_tmp as $dr)
{
foreach ($equipamentos_tmp as $e)
{
/* monta um array com os dados que devem ser inseridos */
$array_inserir_equipamentos[] = array(
"equipamento_id" => $e['equipamento_id'],
"data_hora_inicio" => $dr['data_hora_inicio'],
"data_hora_fim" => $dr['data_hora_fim']);
}
}
/* verifica os equipamentos que já estão na tabela reserva_equipamento */
$this->commandText = "
SELECT
equipamento_id,
data_hora_inicio,
data_hora_fim
FROM
reserva_recursos.reserva_equipamento
WHERE
situacao = 'Em espera' OR situacao = 'Reserva Confirmada' ";
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$equipamentos_reservados[] = array(
"equipamento_id" => $res['equipamento_id'],
"data_hora_inicio" => $res['data_hora_inicio'],
"data_hora_fim" => $res['data_hora_fim']);
}
/* se existirem equipamentos já cadastrados na reserva_equipamento */
if (!empty($equipamentos_reservados))
{
foreach ($array_inserir_equipamentos as $aie)
{
foreach ($equipamentos_reservados as $er)
{
if ($aie['equipamento_id'] == $er['equipamento_id'])
{
if ((( $aie['data_hora_inicio'] > $er['data_hora_inicio'])&&( $aie['data_hora_inicio'] < $er['data_hora_fim'])) ||
(( $aie['data_hora_fim'] > $er['data_hora_inicio'])&&( $aie['data_hora_fim'] < $er['data_hora_fim'])) ||
(( $aie['data_hora_inicio'] < $er['data_hora_inicio'])&& ( $aie['data_hora_fim'] > $er['data_hora_fim'])))
{
$erro = $erro + 1;
}
}
}
}
}
}
if ($erro == 0)
{
if (!empty($array_inserir_sala))
{
foreach ($array_inserir_sala as $ais)
{
$this->inserir_sala($ais['sala_id'], $this->reserva_id, $ais['data_hora_inicio'], $ais['data_hora_fim']);
}
}
if (!empty($array_inserir_equipamentos))
{
foreach ($array_inserir_equipamentos as $aie)
{
$this->inserir_equipamentos($aie['equipamento_id'], $this->reserva_id, $aie['data_hora_inicio'], $aie['data_hora_fim']);
}
}
$lista_locacao = $this->listar_locacoes_tmp_por_identificador();
if (!empty($lista_locacao))
{
foreach ($datas_tmp as $dr)
{
foreach ($lista_locacao as $ll)
{
$this->commandText = "
INSERT INTO reserva_recursos.equipamento_locacao(
reserva_id,
data_hora_inicio,
data_hora_fim,
descricao,
observacao,
situacao )
VALUES (
".$this->reserva_id.",
'".$dr['data_hora_inicio']."',
'".$dr['data_hora_fim']."',
'".$ll['descricao']."',
'".$ll['observacao']."',
'Locar')";
$this->resultSet = $this->DAO->query($this->commandText);
}
}
}
$this->apaga_tmp();
$this->_reserva_id = $this->reserva_id;
$this->_responsavel_id = $this->dados_solicitacao['responsavel_id'];
$this->_data_solicitacao = $this->dados_solicitacao['data_solicitacao'];
$this->_centro_custo_id = $this->dados_solicitacao['centro_custo_id'];
$this->_soft_necessario = $this->dados_solicitacao['soft_necessario'];
$this->_local_entrega_equipamento = $this->dados_solicitacao['local_entrega_equipamento'];
$this->_tipo_evento = $this->dados_solicitacao['tipo_evento'];
$this->_desc_solicitacao = $this->dados_solicitacao['desc_solicitacao'];
$this->_num_pessoas = $this->dados_solicitacao['num_pessoas'];
$this->_obs_reserva = $this->dados_solicitacao['obs_reserva'];
$this->_solicitante_id = $this->dados_solicitacao['solicitante_id'];
$this->_obs_cafe = $this->dados_solicitacao['obs_cafe'];
$this->_situacao_recurso = 0;
$this->_necessita_avaliacao = 0;
$this->_avaliacao = 0;
$this->_cafe = $this->dados_solicitacao['cafe'];
$this->setNameInstance($this->_reserva_id);
$this->updateInstance ( );
$this->commitInstance ( );
return true;
}
else
{
$this->addViewVar("erro_solicitacao" , "Ocorreu um erro referente as datas escolhidas para esta solicitação. Por favor, verifique.");
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
$this->defaultAction();
return false;
}
}
else
{
$this->addViewVar("erro_solicitacao" , $this->erros_solicitacao());
$this->addViewVar("icon_msg" , "icon_msg_erro.png" );
$this->addViewVar("class_msg" , "msg_erro" );
$this->defaultAction();
return false;
}
}
/**
* Limpa todas as tabelas temporárias
* @access public
* @return bool
*/
function apaga_tmp()
{
$apagar = array (sala,equipamento,data);
if (empty($this->request['identificador_tmp']))
$reserva_id = $this->identificador_tmp;
else
$reserva_id = $this->request['identificador_tmp'];
foreach ($apagar as $a)
{
$this->commandText = "
DELETE
FROM
reserva_recursos.tmp_".$a."_reserva
WHERE
identificador_tmp = ".$reserva_id;
$this->resultSet = $this->DAO->query($this->commandText);
}
$this->commandText2 = "
DELETE
FROM
reserva_recursos.tmp_equipamento_locacao
WHERE
identificador_tmp = ".$reserva_id;
$this->resultSet = $this->DAO->query($this->commandText2);
return true;
}
/**
* Verifica se todos os campos referentes a solicitação de reserva foram preenchidos
* de forma correta
* @access public
* @return array
*/
function erros_solicitacao()
{
$datas = $this->listar_datas_tmp();
$salas = $this->listar_salas_tmp_por_identificador();
$equipamentos = $this->listar_equipamentos_tmp_por_identificador();
$locacao = $this->listar_locacoes_tmp_por_identificador();
$erros = array();
if (empty($this->request['responsavel_id']))
{
$erros[] = 'O preenchimento do campo Responsável é obrigatório.';
}
if (empty($this->request['desc_solicitacao']))
{
$erros[] = 'O preenchimento do campo Descrição é obrigatório.';
}
if (empty(
$this->request['num_pessoas']))
{
$erros[] = 'O preenchimento do campo Numero de Pessoas é obrigatório.';
}
if (empty($this->request['centro_custo_id']))
{
$erros[] = 'O preenchimento do campo Centro de Custo é obrigatório.';
}
if (empty($datas))
{
$erros[] = 'Você deve escolher pelo menos uma data e horário antes de confirmar a Solicitação.';
}
if ((empty($salas)) && (empty($equipamentos)) && (empty($locacao)))
{
$erros[] = 'Você deve escolher pelo menos um recurso antes de confirmar a Solicitação.';
}
if ($this->request['repeticao'] != 0)
{
if (empty($this->request['dtfim_repeticao']))
{
$erros[] = 'O preenchimento do campo Data Final da Repetição é obrigatório.';
}
}
return $erros;
}
/**
* Verifica se o campo de descrição da locação está preenchido de forma correta
* @access public
* @return array
*/
function erros_locacao()
{
$erros = array();
if ($this->desc_equipamento_locar == "")
{
$erros[] = 'Os campos marcados com (*) são de preenchimento obrigatório.';
}
return $erros;
}
/**
* Implementa ação de sair da solicitação de reserva
* @access public
* @return bool
*/
function sairAction()
{
$this->apaga_tmp();
return true;
}
/**
* Atribui um valor temporário para todas as inserções em tabelas temporárias.
* O valor e formado pelos componentes do sistema hora, minuto, segundo e id do
* solicitante.
* @access public
* @return int
*/
function atribui_identificador()
{
if (empty($this->request['identificador_tmp']))
{
$identificador_tmp = date('H').date('i').date('s').$this->getWfProperty('wf_user_id');
}
else
$identificador_tmp = $this->request['identificador_tmp'];
return $identificador_tmp;
}
/**
* Faz um select na tabela reserva e traz todos os dados da solicitacao
* @access public
* @return array
*/
function dados_solicitacao()
{
if (empty($this->request['dados_solicitacao']))
{
$dados_solicitacao = array(
"identificador_tmp" => $this->identificador_tmp,
"solicitante" => $this->getWfProperty('wf_user_cnname'),
"solicitante_id" => $this->getWfProperty('wf_user_id'),
"data_solicitacao" => date('d/m/Y H:i:s'),
"tipo_evento" => 0,
"responsavel_id" => 0,
"responsavel" => "",
"cafe" => 0,
"obs_cafe" => "",
"desc_solicitacao" => "",
"lista_centro_custo" => $this->listar_centro_custo(),
"centro_custo_id" => 0,
"num_pessoas" => "",
"soft_necessario" => "",
"local_entrega_equipamento" => "",
"obs_reserva" => "",);
}
else
{
$ldap = $this->factory->getInstance('wf_ldap');
$dados_usuario = $ldap->get_entry($this->request['responsavel_id']);
$responsavel_nome = $dados_usuario['cn'];
$dados_solicitacao = array(
"identificador_tmp" => $this->request['identificador_tmp'],
"solicitante" => $this->getWfProperty('wf_user_cnname'),
"solicitante_id" => $this->getWfProperty('wf_user_id'),
"data_solicitacao" => date('d/m/Y H:i:s'),
"tipo_evento" => $this->request['tipo_evento'],
"responsavel_id" => $this->request['responsavel_id'],
"responsavel" => $responsavel_nome,
"cafe" => $this->request['cafe'],
"obs_cafe" => $this->request['obs_cafe'],
"desc_solicitacao" => $this->request['desc_solicitacao'],
"lista_centro_custo" => $this->listar_centro_custo(),
"centro_custo_id" => $this->request['centro_custo_id'],
"num_pessoas" => $this->request['num_pessoas'],
"soft_necessario" => $this->request['soft_necessario'],
"local_entrega_equipamento" => $this->request['local_entrega_equipamento'],
"obs_reserva" => $this->request['obs_reserva']);
}
return $dados_solicitacao;
}
/**
* Faz uma busca no Ldap e traz todos os centros de custo em ordem alfabetica crescente
* @access public
* @return array
*/
function listar_centro_custo()
{
$orgchart = $this->factory->getInstance('wf_orgchart');
$dados_oragnizacao = $orgchart->getOrganizationCostCenters(1);
$lista_centro_custo[0] = "--- Escolha um centro de custo ---";
for ($i = 0; $i < count($dados_oragnizacao); $i++)
$lista_centro_custo[$dados_oragnizacao[$i]['centro_custo_id']] = $dados_oragnizacao[$i]['descricao'];
/* ordena o array em ordem alfabetica crescente */
asort($lista_centro_custo);
return $lista_centro_custo;
}
/**
* Monta um array com os dados que serao mostrados no template na tabela inserir data
* @access public
* @return array
*/
function dados_data()
{
$dados_data = array(
"data_inicio" => date('d/m/Y'),
"lista_horas" => $this->lista_horas(),
"hora_inicio" => "",
"hora_fim" => "",
"lista_minutos" => $this->lista_minutos(),
"minuto_inicio" => "",
"minuto_fim" => "",
"lista_repeticao" => $this->lista_tipo_repeticoes(),
"dtfim_repeticao" => date('d/m/Y'),
"repeticao" => "0");
return $dados_data;
}
/**
* Monta um array com todas as horas do dia.
* @access public
* @return array
*/
function lista_horas()
{
$lista_horas[]="Hora";
$hora=1;
while ($hora <= 24)
{
if (strlen($hora) == 1)
{
$hora = "0".$hora;
}
$lista_horas[$hora] = $hora;
$hora = $hora+1;
}
return $lista_horas;
}
/**
* Monta um array com uma lista de minutos com intervalos de 30 minutos
* @access public
* @return array
*/
function lista_minutos()
{
$lista_minutos[]="Min";
$min=0;
while ($min < 60)
{
if (strlen($min) == 1)
{
$min = "0".$min;
}
$lista_minutos[$min]=$min;
$min = $min+30;
}
return $lista_minutos;
}
/**
* Monta um array com todos os tipos de equipamentos já cadastrados
* @access public
* @return array
*/
function lista_tipo_repeticoes()
{
$lista_repeticao = array (
"---- Escolha um tipo de Repetição ----",
"Nenhum Repetição",
"Diaria",
"Semanal",
"Mensal");
return $lista_repeticao;
}
/**
* Monta um array com todas as salas ativas disponíveis para reserva
* @access public
* @return array
*/
function lista_salas_ativas()
{
$this->commandText = "
SELECT
sala_id
FROM
reserva_recursos.sala
WHERE
ativo = 1";
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$salas[]= $res['sala_id'];
}
return $salas;
}
/**
* Faz um select na tabela tmp_data_reserva e traz todas as datas que já foram
* solicitadas para esta solicitação
* @access public
* @return array
*/
function listar_datas_tmp()
{
$this->commandText = "
SELECT
tmp_data_id,
to_char((data_hora_inicio) ,'DD/MM/YYYY' ) as data,
to_char((data_hora_inicio) ,'HH24:MI' ) as hora_inicio,
to_char((data_hora_fim) ,'HH24:MI' ) as hora_fim,
identificador_tmp,
data_hora_inicio,
data_hora_fim
FROM
reserva_recursos.tmp_data_reserva
WHERE identificador_tmp = ".$this->identificador_tmp."
ORDER BY data_hora_inicio";
$this->resultSet = $this->DAO->query($this->commandText);
while ($res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$lista_data_tmp[] = array(
"tmp_data_id" => $res['tmp_data_id'],
"data" => $res['data'],
"hora_inicio" => $res['hora_inicio'],
"hora_fim" => $res['hora_fim'],
"identificador_tmp" => $res['identificador_tmp'],
"data_hora_inicio" => $res['data_hora_inicio'],
"data_hora_fim" => $res['data_hora_fim']);
}
return $lista_data_tmp;
}
/**
* Verifica os erros referentes a solicitação dos equipamentos desejados
* @access public
* @return array
*/
function erros_equipamento()
{
$erros = array();
if (empty($this->datas_tmp))
{
$erros[] = 'Antes de escolher um equipamento, é necessário que escolhas as datas e horários para a reserva.';
}
if ($this->request['selecionar_equipamento'] == "")
{
$erros[] = 'Selecione o equipamento desejado.';
}
else
{
$lista_equipamento_tmp = $this->listar_equipamentos_tmp_por_identificador();
for($i=0; $i < count($lista_equipamento_tmp); $i++)
{
if ($lista_equipamento_tmp[$i]['equipamento_id'] == $this->request['selecionar_equipamento'])
$erro = 1;
}
if ($erro ==1)
$erros[] = 'Você já confirmou este equipamento para esta solicitação de reserva.';
}
return $erros;
}
/**
* Mostra todos os equipamentos desocupados dependendo do tipo de equipamento escolhido
* @access public
* @return array
*/
function listar_equipamentos_desocupados_por_tipo($tipo_equipamento_id)
{
$equipamentos_ocupados = $this->listar_equipamentos_ocupados_por_tipo($tipo_equipamento_id);
//monta um array com todos os elementos presentes no primeiro array e ausentes no segundo
if (!empty($equipamentos_ocupados))
$equipamentos_desocupados = array_diff($this->listar_equipamentos_ativos_por_tipo($tipo_equipamento_id),$this->listar_equipamentos_ocupados_por_tipo($tipo_equipamento_id));
else
$equipamentos_desocupados = $this->listar_equipamentos_ativos_por_tipo($tipo_equipamento_id);
if (!empty ($equipamentos_desocupados))
$equipamentos_desocupados = array_unique($equipamentos_desocupados);
return $equipamentos_desocupados;
}
/**
* Mostra todos os equipamentos ocupados dependendo do tipo de eqipamento escolhido
* @access public
* @return array
*/
function listar_equipamentos_ocupados_por_tipo($tipo_equipamento_id)
{
for($i=0; $i < count($this->lista_tmp_datas); $i++)
{
$this->commandText = "
SELECT
RE.equipamento_id,
E.tipo_equipamento_id
FROM
(
reserva_recursos.reserva_equipamento as RE INNER
JOIN
reserva_recursos.equipamento as E
ON
E.equipamento_id = RE.equipamento_id
AND
E.tipo_equipamento_id=".$tipo_equipamento_id."
)
WHERE
(
(
to_char((RE.data_hora_inicio),'YYYY-MM-DD HH24:MI:00') >= '".$this->lista_tmp_datas[$i]['data_hora_inicio']."'
AND
to_char((RE.data_hora_inicio),'YYYY-MM-DD HH24:MI:00') <= '".$this->lista_tmp_datas[$i]['data_hora_fim']."'
)
OR
(
to_char((RE.data_hora_fim),'YYYY-MM-DD HH24:MI:00') >= '".$this->lista_tmp_datas[$i]['data_hora_inicio']."'
AND
to_char((RE.data_hora_fim),'YYYY-MM-DD HH24:MI:00') <= '".$this->lista_tmp_datas[$i]['data_hora_fim']."'
)
OR
(
to_char((RE.data_hora_inicio),'YYYY-MM-DD HH24:MI:00') <= '".$this->lista_tmp_datas[$i]['data_hora_inicio']."'
AND
to_char((RE.data_hora_fim),'YYYY-MM-DD HH24:MI:00') >= '".$this->lista_tmp_datas[$i]['data_hora_fim']."'
)
)
AND
(
situacao = 'Em espera' OR situacao = 'Reserva Confirmada'
)";
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$equipamentos_ocupados[]= $res['equipamento_id'];
}
}
if (!empty ($equipamentos_ocupados))
$equipamentos_ocupados = array_unique($equipamentos_ocupados);
return $equipamentos_ocupados;
}
/**
* Mostra todos os equipamentos ativos dependendo do tipo de eqipamento escolhido
* @access public
* @return array
*/
function listar_equipamentos_ativos_por_tipo($tipo_equipamento_id)
{
$this->commandText = "
SELECT
equipamento_id
FROM
reserva_recursos.equipamento
WHERE
tipo_equipamento_id = ".$tipo_equipamento_id."
AND
ativo = 1";
$this->resultSet = $this->DAO->query($this->commandText);
while ( $res = $this->resultSet->fetchRow ( DB_FETCHMODE_ASSOC ))
{
$equipamentos[] = $res['equipamento_id'];
}
return $equipamentos;
}
}
?> ]]>
model->defaultAction();
$this->loadViewVars();
$this->showForm($this->EXIBIR_RESERVA);
}
/**
* Execucao da atividade.
* @param $action Servico (acao) solicitado
* @return void
* @access public
*/
function run($action)
{
$this->model->DAO->connect ( );
$this->dispatch($action);
$this->model->DAO->disconnect ( );
}
}
?> ]]>
updateAttributes();
$reserva_id = $this->_reserva_id;
$dados_solicitacao = $this->dados_solicitacao_por_reserva($reserva_id);
$datas_solicitacao = $this->data_solicitacao($reserva_id);
$recursos = $this->lista_recursos_por_data_id_recurso($datas_solicitacao,$reserva_id);
$this->addViewVar("recursos" , $recursos );
$this->addViewVar("datas_solicitacao" , $datas_solicitacao );
$this->addViewVar("solicitacao" , $dados_solicitacao );
return true;
}
}
?> ]]>