<?php

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

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

// Página
$pagina = 'categoria';
$direct = 'cms-' . $pagina;

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

    switch ($_GET['t']) {
        case 'inserir':
            if ($ac->inserir()) {

                $nome = trim($_POST['nome']);
                $slug = trim($_POST['slug']);

                if ($_FILES['imagem']) {
                    $error    = $_FILES['imagem']['error'];
                    $size     = $_FILES['imagem']['size'];
                    $arq      = $_FILES['imagem']['tmp_name'];
                    $arq_name = $_FILES['imagem']['name'];
                    if ( ! empty($arq)) {
                        if ($error == UPLOAD_ERR_OK) {
                    
                            if ($size >= 5000000) {
                                Message::error("Peso para arquivo muito grande");
                                $direct = $direct."-inserir";
                                print('<script>window.location.href="./?i='.$direct.'"</script>');
                            } else {
                                $extensao       = explode(".", $arq_name);
                                $agoraImg       = date('YmdHis');
                                $ext            = end($extensao);
                                $arquivo         = Util::retiraCaracteres($extensao[0])."-".$agoraImg;
                                $listaExtensoes = array('JPEG', 'GIF', 'PDF', 'JPG', 'SVG');

                                if (in_array(strtoupper($ext), $listaExtensoes) !== false) {
                                    $arq1        = $arquivo.".".$ext;
                                    $pasta = "cms/externos/categoria/";

                                    //Salva o arquivo
                                    echo $dest = Util::baseDir().$pasta.$arq1;
                                    die();
                                    move_uploaded_file($arq, $dest);

                                } else {
                                    Message::error("Arquivo nos formatos (JPEG, GIF, PDF, JPG ou SVG).");
                                }
                            }
                        } else {
                            switch($error) {
                                case UPLOAD_ERR_FORM_SIZE:
                                case UPLOAD_ERR_INI_SIZE:
                                    Message::error("O arquivo excedeu o tamanho máximo.");
                                    break;
                                case UPLOAD_ERR_PARTIAL:
                                    Message::error("O arquivo foi parcialmente enviado.");
                                    break;
                                case UPLOAD_ERR_NO_FILE:
                                    Message::error("O arquivo não foi enviado.");
                                    break;
                                case UPLOAD_ERR_NO_TMP_DIR:
                                case UPLOAD_ERR_CANT_WRITE:
                                case UPLOAD_ERR_EXTENSION:
                                    Message::error("Ocorreu um erro interno.");
                                    break;
                                default:
                                    Message::error("Ocorreu um erro não especificado.");
                                    break;
                            }
                        }
                    }
                }
                


                $objCategoria = new Categoria();
                $objCategoria->id = 0;
                $objCategoria->nome = $nome;
                $objCategoria->slug = $slug;
                $objCategoria->imagem = $arq1;

                $objLog = LogCMS::inserir($_SESSION['sesCMSCodigo'], 'Inserir ' . ucfirst($pagina), $_SESSION['sesCMSIP']);

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

        case 'editar':
            if ($ac->editar()) {

                $id = $_POST['id'];
                $nome = trim(@$_POST['nome']);
                $slug = trim($_POST['slug']);
                $imagem = trim($_POST['imagem_old']);

                if ($_FILES['imagem']) {
                    $error    = $_FILES['imagem']['error'];
                    $size     = $_FILES['imagem']['size'];
                    $arq      = $_FILES['imagem']['tmp_name'];
                    $arq_name = $_FILES['imagem']['name'];
                    if ( ! empty($arq)) {
                        
                        if ($error == UPLOAD_ERR_OK) {
                            
                            if ($size >= 5000000) {
                                Message::error("Peso para arquivo muito grande");
                                $direct = $direct."-inserir";
                                print('<script>window.location.href="./?i='.$direct.'"</script>');
                            } else {
                                $extensao       = explode(".", $arq_name);
                                $agoraImg       = date('YmdHis');
                                $ext            = end($extensao);
                                $arquivo         = Util::retiraCaracteres($extensao[0])."-".$agoraImg;
                                $listaExtensoes = array('JPEG', 'GIF', 'PDF', 'JPG', 'SVG');

                                if (in_array(strtoupper($ext), $listaExtensoes) !== false) {
                                    $arq1        = $arquivo.".".$ext;
                                    $imagem = $arq1;
                                    $pasta = "cms/externos/categoria/";

                                    //Salva o arquivo
                                    echo $dest = Util::baseDir().$pasta.$arq1;
                                    move_uploaded_file($arq, $dest);

                                } else {
                                    Message::error("Arquivo nos formatos (JPEG, GIF, PDF, JPG ou SVG).");
                                }
                            }
                        } else {
                            switch($error) {
                                case UPLOAD_ERR_FORM_SIZE:
                                case UPLOAD_ERR_INI_SIZE:
                                    Message::error("O arquivo excedeu o tamanho máximo.");
                                    break;
                                case UPLOAD_ERR_PARTIAL:
                                    Message::error("O arquivo foi parcialmente enviado.");
                                    break;
                                case UPLOAD_ERR_NO_FILE:
                                    Message::error("O arquivo não foi enviado.");
                                    break;
                                case UPLOAD_ERR_NO_TMP_DIR:
                                case UPLOAD_ERR_CANT_WRITE:
                                case UPLOAD_ERR_EXTENSION:
                                    Message::error("Ocorreu um erro interno.");
                                    break;
                                default:
                                    Message::error("Ocorreu um erro não especificado.");
                                    break;
                            }
                        }
                    }
                }
                

                $objCategoria = new Categoria();
                $objCategoria->id = $id;
                $objCategoria->nome = $nome;
                $objCategoria->slug = $slug;
                $objCategoria->imagem = $imagem;

                $objLog = LogCMS::inserir($_SESSION['sesCMSCodigo'], 'Editar ' . ucfirst($pagina), $_SESSION['sesCMSIP']);

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

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

                if (count($arrIds) > 0) {
                    $objLog = LogCMS::inserir($_SESSION['sesCMSCodigo'], 'Excluir ' . ucfirst($pagina), $_SESSION['sesCMSIP']);

                    foreach ($arrIds as $id) {
                        try {
                            $excluir = Categoria::excluir($id);
                            echo 'sucesso';
                            // Message::success("Operação realizada com sucesso.");
                        } catch (BancoExcecao $ex) {
                            // Message::error($ex->getMessage());
                            echo 'erro';
                            break;
                        }
                    }
                }
            } else {
                // Message::error("Acesso negado.");
                echo 'erro';
            }
        break;

        case 'status':
            $objLog = LogCMS::inserir($_SESSION['sesCMSCodigo'], 'Alterou status do ' . ucfirst($pagina) . ' ' . $_POST['id'], $_SESSION['sesCMSIP']);
            echo Categoria::mudaStatus($_POST['id']);
            exit;
        break;
    }
}

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