Reserva de Recursos y 1.1 y Solicitar, cancelar, confirmar e consultar andamento de reservas de recursos. 22/02/2008 [11:10:38] ]]> use_automatic_parsing 0 execute_activities_in_debug_mode 1 database_name workflow mail_smtp_profile 1 Aprovar Locação activity 22/02/2008 [11:10:39] y y Usuarios run ( $_REQUEST['action'] ); ?> ]]> Avaliar Reserva activity 22/02/2008 [11:10:40] y y Usuarios run ( $_REQUEST['action'] ); ?> ]]> Avaliar Solicitação switch 22/02/2008 [11:10:40] y y COEVE mail_smtp wf_to %property__destinatario% wf_cc wf_bcc wf_from %property__email_remetente% wf_replyto %property__email_remetente% wf_subject %property__assunto% wf_message %property__texto_email% wf_send_mode 0 wf_agent_type mail_smtp run ( $_REQUEST['action'] ); ?> ]]> Cancelar Reserva standalone 22/02/2008 [11:10:39] y y Usuarios COEVE run ( $_REQUEST['action'] ); ?> ]]> Concluir end Finaliza o processo de solicitação de reserva de recursos 22/02/2008 [11:10:40] n y run ( $_REQUEST['action'] ); ?> ]]> Consultar Café standalone Consultar 22/02/2008 [11:10:39] y n COEVE run ( $_REQUEST['action'] ); ?> ]]> Consultar Entrega de Equipamentos standalone Consultar 22/02/2008 [11:10:39] y n COEVE run ( $_REQUEST['action'] ); ?> ]]> Consultar Recursos standalone Consultar 22/02/2008 [11:10:39] y n Usuarios run ( $_REQUEST['action'] ); ?> ]]> Consultar Reservas standalone Consultar 22/02/2008 [11:10:39] y n Usuarios run ( $_REQUEST['action'] ); ?> ]]> Consultar Solicitação Salas standalone Consultar 22/02/2008 [11:10:39] y n COEVE run ( $_REQUEST['action'] ); ?> ]]> Manter Equipamento standalone Manter 22/02/2008 [11:10:39] y y COEVE run ( $_REQUEST['action'] ); ?> ]]> Manter Sala standalone Manter 22/02/2008 [11:10:39] y y COEVE run ( $_REQUEST['action'] ); ?> ]]> Manter Tipo de Equipamento standalone Manter 22/02/2008 [11:10:39] y y COEVE run ( $_REQUEST['action'] ); ?> ]]> Registrar Andamento da Reserva switch 22/02/2008 [11:10:40] y y COEVE mail_smtp wf_to %property__destinatario% wf_cc wf_bcc wf_from %property__email_remetente% wf_replyto %property__email_remetente% wf_subject %property__assunto% wf_message %property__texto_email% wf_send_mode 0 wf_agent_type mail_smtp run ( $_REQUEST['action'] ); ?> ]]> Solicitar Reserva start Registra a solicitação de reserva dos recursos disponíveis. 22/02/2008 [11:10:40] y y Usuarios run ( $_REQUEST['action'] ); ?> ]]> Visualizar view Atividade view do processo 22/02/2008 [11:10:39] y y Usuarios run ( $_REQUEST['action'] ); ?> ]]> class.aprovar.locao.controller.inc.php 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 ( ); } } ?> ]]> class.aprovar.locao.model.inc.php 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; } } ?> ]]> class.avaliar.reserva.controller.inc.php 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 ( ); } } ?> ]]> class.avaliar.reserva.model.inc.php 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; } } } ?> ]]> class.avaliar.solicitacao.controller.inc.php 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 ( ); } } ?> ]]> class.avaliar.solicitacao.model.inc.php 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; } } ?> ]]>
class.cancelar.reserva.controller.inc.php 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 ( ); } } ?> ]]> class.cancelar.reserva.model.inc.php 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; } } } ?> ]]> class.concluir.controller.inc.php 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 ( ); } } ?> ]]> class.concluir.model.inc.php ]]> class.consultar.cafe.controller.inc.php 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 ( ); } } ?> ]]> class.consultar.cafe.model.inc.php 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; } } ?> ]]> class.consultar.entregaEquipamentos.controller.inc.php 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 ( ); } } ?> ]]> class.consultar.entregaEquipamentos.model.inc.php 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; } } ?> ]]> class.consultar.recursos.controller.inc.php 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 ( ); } } ?> ]]> class.consultar.recursos.model.inc.php 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; } } ?> ]]> class.consultar.reservas.controller.inc.php 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 ( ); } } ?> ]]> class.consultar.reservas.model.inc.php 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; } } ?> ]]> class.consultar.solicitacaoSalas.controller.inc.php 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 ( ); } } ?> ]]> class.consultar.solicitacaoSalas.model.inc.php 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; } } ?> ]]> class.controller.inc.php 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'); } } ?> ]]> class.filtro.inc.php 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 .= "
"; $filter_code .= $field['caption']."
"; if ($field['type'] == "text") { $filter_code .= ""; } if ($field['type'] == "select") { $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; } } ?> ]]>
class.manter.equipamento.controller.inc.php 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 ( ); } } ?> ]]> class.manter.equipamento.model.inc.php 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; } } ?> ]]> class.manter.sala.controller.inc.php 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 ( ); } } ?> ]]> class.manter.sala.model.inc.php 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; } } ?> ]]> class.manter.tipoEquipamento.controller.inc.php 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 ( ); } } ?> ]]> class.manter.tipoEquipamento.model.inc.php 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; } } } ?> ]]> class.model.inc.php 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(); } } ?> ]]> class.registrar.andamentoReserva.controller.inc.php 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 ( ); } } ?> ]]> class.registrar.andamentoReserva.model.inc.php 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; } } ?> ]]>
class.solicitar.reserva.controller.inc.php 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 ( ); } } ?> ]]> class.solicitar.reserva.model.inc.php 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; } } ?> ]]> class.visualizar.controller.inc.php 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 ( ); } } ?> ]]> class.visualizar.model.inc.php 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; } } ?> ]]>
data.gif icon.png Solicitar Reserva Avaliar Solicitação Aprovar Locação Registrar Andamento da Reserva Avaliar Solicitação Registrar Andamento da Reserva Avaliar Solicitação Concluir Avaliar Solicitação Aprovar Locação Avaliar Reserva Concluir Registrar Andamento da Reserva Avaliar Reserva Registrar Andamento da Reserva Concluir