Beispiel #1
0
 /**
  * Método que gera a página de abertura de chamados
  */
 public function abrir_chamado()
 {
     //Inicializando os objetos básicos
     $chamadoObj = new eqpedagogica_models_Ouvidoria();
     $coordenador = new Kernel_Models_Coordenador();
     //Validando o responsável
     $usrValidar = new Kernel_Models_ValidarUsuarios();
     $responsavel = $usrValidar->responsavel();
     //Buscando os coordenadores relacionados ao responsável informado
     $coordenadores = $coordenador->listarTodos(NULL, $responsavel)->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_CLASS);
     //Listando as categorias permitidas
     $categorias = $chamadoObj->categorias();
     //Inserindo o novo chamado ou editando um chamado existente. A execução do método é interrompida aqui
     if ($_SERVER['REQUEST_METHOD'] == "POST") {
         header('Content-Type: application/json; charset=UTF-8');
         //Recebendo os dados
         $coordenadorId = filter_input(INPUT_POST, "coordenador", FILTER_VALIDATE_INT);
         $titulo = filter_input(INPUT_POST, "titulo", FILTER_SANITIZE_MAGIC_QUOTES);
         $mensagem = filter_input(INPUT_POST, "mensagem", FILTER_SANITIZE_MAGIC_QUOTES);
         $categoria = filter_input(INPUT_POST, "categoria", FILTER_VALIDATE_INT);
         //Validando os dados
         if (!$coordenadorId) {
             //O código do coordenador é inválido
             die(json_encode(array("status" => false, "mensagem" => "O coordenador informado é inválido")));
         }
         if ($categorias) {
             if (!array_key_exists($categoria, $categorias->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_CLASS))) {
                 $categoria = 0;
             }
         }
         $coordenador = $coordenador->get($coordenadorId);
         if (!$coordenador) {
             //O coordenador é inválido
             die(json_encode(array("status" => false, "mensagem" => "O coordenador informado é inválido")));
         }
         if (!in_array($coordenador->pk_usuario, array_keys($coordenadores))) {
             //Verificando se o coordenador esta relacionado ao responsável
             die(json_encode(array("status" => false, "mensagem" => "Ops! Parce que o coordenador informado não esta relacionado a " . "nenhum de seus dependentes. Informe um da lista por favor")));
         }
         if (!$titulo) {
             //O título informado é inválido
             die(json_encode(array("status" => false, "mensagem" => "O título informado é inválido")));
         }
         if (!$mensagem) {
             //A mensagem informada é inválida
             die(json_encode(array("status" => false, "mensagem" => "A mensagem informada é inválida")));
         }
         if (!strlen($mensagem)) {
             //A mensagem informada é inválida
             die(json_encode(array("status" => false, "mensagem" => "A mensagem informada é inválida")));
         }
         //Passando os dados para o objeto
         $chamadoObj->setTitulo($titulo)->setDestinatario($coordenador)->setCategoria($categoria);
         //Salvando os dados
         if ($chamadoObj->abrirChamado($mensagem)) {
             if (filter_var($coordenador->email, FILTER_VALIDATE_EMAIL)) {
                 //Verifica se o e-mail do coordenador é válido, caso seja, envia um e-mail avisando da novidade
                 $contasEmail = new Kernel_Models_NewsletterContas();
                 $assunto = "Novo chamado aberto na ouvidoria";
                 $mensagem = "Foi aberto ou editado um novo chamado na ouvidoria. " . "Acesse a sua área restrita e veja mais detalhes";
                 $contasEmail->enviar($coordenador->nome, $coordenador->email, $assunto, $mensagem);
             }
             die(json_encode(array("status" => true, "mensagem" => "Chamado salvo com sucesso", "destino" => "")));
         } else {
             die(json_encode(array("status" => false, "mensagem" => "Ocorreu um erro ao tentar salvar o chamado. Tente novamente mais tarde")));
         }
     }
     //Exibindo a página
     //Passando os dados para o view
     $this->loadPlugin("filtros")->setUsuarioFiltros($responsavel)->setData("coordenadores", $coordenadores)->setData("categorias", $categorias)->printView();
 }