<?php

$pasta = dirname(__FILE__) . '/../../';

require_once $pasta . 'includes/inicio.php';
require_once $pasta . 'includes/verificaSessao.php';

// Página
$direct = 'cms-perfil';

if (isset($_GET['t'])) {
    $ac = Acesso::check($direct);

    switch ($_GET['t']) {
        case 'inserir':
            if ($ac->inserir()) {
                $nome = trim($_POST['nome']);
                $slug = Util::slugify($nome);

                $param = array();
                $param[] = Util::montaParametros(':nome', $_POST['nome'], 'STR');
                $perfilExiste = Perfil::listar('nome LIKE :nome', $param);

                if ($perfilExiste) {
                    $direct = $direct . '-inserir';
                    Message::error('Esse perfil já existe.');
                    break;
                }

                $objPerfil = new Perfil();
                $objPerfil->id = 0;
                $objPerfil->nome = $nome;
                $objPerfil->slug = $slug;

                $objLog = LogCMS::inserir($_SESSION['sesCMSCodigo'], 'Inseriu Perfil - ' . $_POST['nome'], $_SESSION['sesCMSIP']);

                try {
                    $objPerfil->inserir();
                    $direct = $direct . '-editar&id=' . $objPerfil->ultimoId();
                    Message::success('Operação realizada com sucesso.');
                } catch (BancoExcecao $ex) {
                    $direct = $direct . '-inserir';
                    Message::error($ex->getMessage());
                    exit;
                } catch (Exception $e) {
                    $direct = $direct . '-inserir';
                    Message::error($e->getMessage());
                    exit;
                }
            } else {
                Message::error('Acesso negado.');
            }
        break;

        case 'editar':
            if ($ac->editar()) {
                $direct = $direct . '-editar&id=' . $_POST['id'];

                $id = $_POST['id'];
                $nome = trim($_POST['nome']);
                $slug = Util::slugify($nome);

                $objPerfil = new Perfil();
                $objPerfil->id = $id;
                $objPerfil->nome = $nome;
                $objPerfil->slug = $slug;

                $objLog = LogCMS::inserir($_SESSION['sesCMSCodigo'], 'Editou Perfil - ' . $_POST['nome'], $_SESSION['sesCMSIP']);

                try {
                    $objPerfil->editar();
                    Message::success('Operação realizada com sucesso.');
                } catch (BancoExcecao $ex) {
                    Message::error($ex->getMessage());
                    exit;
                } catch (Exception $e) {
                    Message::error($e->getMessage());
                    exit;
                }
            } else {
                Message::error('Acesso negado.');
            }
        break;

        case 'permissao':
            $permissao = Permissao::buscar($_POST['id']);
            $perfil = Perfil::buscar($permissao['perfil_id']);
            $objLog = LogCMS::inserir($_SESSION['sesCMSCodigo'], 'Alterou permissão do Perfil - ' . $perfil->nome, $_SESSION['sesCMSIP']);
            echo Perfil::mudaPermissao($_POST['id'], $_POST['operacao']);
            exit;
        break;

        case 'excluir':
            if ($ac->excluir()) {
                $arrIds = (isset($_POST['id'])) ? $_POST['id'] : '';
                $arrIds = explode(',', $arrIds);

                try {
                    if (count($arrIds) > 0) {
                        $objPerfil = new Perfil();
                        $flag = false;

                        foreach ($arrIds as $id) {
                            $rows = $objPerfil->rows($id);

                            if ($rows > 0) {
                                $flag = true;
                                break;
                            }
                        }

                        if (false === $flag) {
                            foreach ($arrIds as $id) {
                                $perfil = Perfil::buscar($id);
                                $objLog = LogCMS::inserir($_SESSION['sesCMSCodigo'], 'Excluiu Perfil - ' . $perfil->nome, $_SESSION['sesCMSIP']);
                                Perfil::excluir($id);
                            }
                        }
                    }

                    if (false === $flag) {
                        // Message::success("Operação realizada com sucesso.");
                        echo 'sucesso';
                    } else {
                        // Message::error("Selecione perfis que não possua usuário(s) cadastrado(s).");
                        echo 'erro';
                    }
                } catch (BancoExcecao $ex) {
                    $direct = $direct;
                    // Message::error($ex->getMessage());
                    echo 'erro';
                    exit;
                } catch (Exception $e) {
                    $direct = $direct;
                    // Message::error($e->getMessage());
                    echo 'erro';
                    exit;
                }
            } else {
                // Message::error("Acesso negado.");
                echo 'erro';
            }
        break;

        case 'status':
            $perfil = Perfil::buscar($_POST['id']);
            $ativo = Perfil::mudaStatus($_POST['id']);
            $msg = $ativo ? 'Ativou' : 'Desativou';
            $objLog = LogCMS::inserir($_SESSION['sesCMSCodigo'], $msg . ' Perfil - ' . $perfil->nome, $_SESSION['sesCMSIP']);
            echo $ativo;
            exit;
        break;
    }
}

if (!$_GET['ajax']) {
    Util::redirect(Util::baseUrl() . 'cms/?i=' . $direct);
}
