<?php

session_cache_limiter(1);
ob_start();
session_start();

//header('Access-Control-Allow-Origin: *');
//header('Access-Control-Allow-Methods: GET, POST');

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ERROR);

date_default_timezone_set('America/Sao_Paulo');
include_once './connect/class.connect_mysql.php';
include_once './DM/prepareSql.php';
include_once './DM/sql.evento.php';
include_once './DM/sql.email.php';
include_once './DM/sql.produto.php';
include_once './DM/sql.pagamento.php';
include_once './DM/encrypt.php';

extract($_POST);

$chave = realDecryp($chave);
$aut = explode('|', $chave);

if ($_SESSION['ID'] != $aut[0])
    die('{"loginChave":"A chave não é mais valída"}');

$param['id_empresa'] = $aut[4];
$param['id_usuario'] = $aut[1];

$_POST['id_empresa'] = $aut[4];
$_POST['id_usuario'] = $aut[1];

class Evento {

    private static $evento;
    private $email;
    private $produto;
    private $pagamento;
    private $conexao;
    private $config;

    function __construct() {

        $this->conexao = ConexaoMysql::getConectar();
        if (!$this->conexao) {
            die('{"bd":"off"}');
            return false;
        }

        self::$evento = new SqlEvento($this->conexao);

        $this->email = new SqlEmail($this->conexao);
        $this->produto = new SqlProduto($this->conexao);
        $this->pagamento = new SqlPagamento($this->conexao);


        //verifica usuario ativo
        $sql = "select id_empresa from usuario where  id_empresa = ? and id_usuario = ? and excluido = 'N'";

        $pdo = $this->conexao->prepare($sql);
        $pdo->bindValue(1, $_POST['id_empresa']);
        $pdo->bindValue(2, $_POST['id_usuario']);
        $pdo->execute();
        $rs = $pdo->fetch(PDO::FETCH_OBJ);

        if (empty($rs->id_empresa))
            die('{"loginChave":"Usuário não localizado verifique"}');
    }

    function getEventos($param) {
        $call = self::$evento->getEventos($param);
        retorno::json($call);
    }

    function setEvento($param) {
        $rs;


        //para update se aniversario
        if (isset($param['objNew']['seAniversario'])) {
            $param['objNew']['seAniversario']['id_evento'] = $param['id_evento'];
            $param['objNew']['seAniversario']['id_empresa'] = $param['id_empresa'];

            $param['objNew']['seAniversario']['nome'] = $param['objNew']['seAniversario']['nome_niv'];
            unset($param['objNew']['seAniversario']['nome_niv']);

            if (Dml::insertUpdateMySQL($this->conexao, 'se_aniversario', $param['objNew']['seAniversario'])) {
                $rs = '{"ok":"ok"}';
            }
        }

        //para update se casamento
        if (isset($param['objNew']['seCasamento'])) {
            $param['objNew']['seCasamento']['id_evento'] = $param['id_evento'];
            $param['objNew']['seCasamento']['id_empresa'] = $param['id_empresa'];

            if (Dml::insertUpdateMySQL($this->conexao, 'se_casamento', $param['objNew']['seCasamento'])) {
                $rs = '{"ok":"ok"}';
            }
        }


        //para update evento
        if (isset($param['objNew']['evento'])) {
            $param['objNew']['evento']['id_evento'] = $param['id_evento'];
            $param['objNew']['evento']['id_empresa'] = $param['id_empresa'];

            if (Dml::insertUpdateMySQL($this->conexao, 'evento', $param['objNew']['evento'])) {
                retorno::json(self::$evento->getEventoIdEvento($param), false);
            }
        } else
            echo $rs;
    }

    function getEventoDayBig($param) {

        $dados = [];

        $call = self::$evento->getEventoDayBig($param);
        $rs = $call->pdo->fetch(PDO::FETCH_OBJ);

//        retorno::json($call);
//        die;

        $dados['evento'] = $rs;

        $call = $this->email->getEmail($param);
        $dados['email'] = $call->pdo->fetchAll(PDO::FETCH_OBJ);

        $call = self::$evento->getLocalEvento($param);
        $dados['localEvento'] = $call->pdo->fetch(PDO::FETCH_OBJ);

        $call = self::$evento->getSalaoFesta($param);
        $dados['salaoFesta'] = $call->pdo->fetch(PDO::FETCH_OBJ);


        if (in_array($rs->id_tipo_evento, [1, 12, 13])) {
            $call = self::$evento->getSeAniversario($param);
            $dados['seAniversario'] = $call->pdo->fetch(PDO::FETCH_OBJ);

            !isset($dados['seAniversario']->nome_niv) ? $dados['seCasamento'] = ["nome_niv" => '', "idade" => '', "tema" => ''] : false;
        }

        if ($rs->id_tipo_evento == 4) {
            $call = self::$evento->getSeCasamento($param);
            $dados['seCasamento'] = $call->pdo->fetch(PDO::FETCH_OBJ);

            !isset($dados['seCasamento']->noiva) ? $dados['seCasamento'] = ["noiva" => '', "noivo" => ''] : false;
        }

        echo json_encode($dados);
    }

    function searchEventos($param) {
        $call = self::$evento->searchEventosProfundo($param);
        retorno::json($call);
    }

    function getPrevia($param) {
        $call = self::$evento->getPrevia($param);
        retorno::json($call);
    }

    function getDateTime() {
        $date = explode('/', date("d/m/Y"));
        $time = explode(':', date('h:i:s'));
        echo '{"d":"' . $date[0] . '","m":"' . $date[1] . '","y":"' . $date[2] . '","h":"' . $time[0] . '","i":"' . $time[1] . '","s":"' . $time[2] . '"}';
    }

    function getEventosDaySmall($param) {
        $call = self::$evento->getEventosDaySmall($param);
        retorno::json($call);
    }

    function getLocalEvento($param) {
        $call = self::$evento->getLocalEvento($param);
        retorno::json($call, false);
    }

    function getSalaoFesta($param) {
        $call = self::$evento->getSalaoFesta($param);
        retorno::json($call, false);
    }

    function getEmail($param) {
        $call = $this->email->getEmail($param);
        retorno::json($call);
    }

    function getProdutos($param) {
        $call = $this->email->getProdutos($param);
        retorno::json($call);
    }

    function getProduto($param) {
        $call = $this->produto->getProdutos($param);
        retorno::json($call);
    }

    function getQuitados($param) {
        $call = $this->pagamento->getQuitados($param);
        retorno::json($call);
    }

    function updateEvento($param) {

        $id_evento = $param['id_evento'];
        $id_empresa = $param['id_empresa'];

        if (isset($param['objNew']['seAniversario']))
            Dml::update($this->conexao, 'se_aniversario', $param['objNew']['seAniversario'], "id_evento = $id_evento and id_empresa = $id_empresa");

        if (isset($param['objNew']['seCasamento']))
            Dml::update($this->conexao, 'se_casamento', $param['objNew']['seCasamento'], "id_evento = $id_evento and id_empresa = $id_empresa");

        Dml::update($this->conexao, 'evento', $param['objNew']['evento'], "id_evento = :id_evento and id_empresa = $id_empresa");
    }

}

class Financeiro {

    private $mdc;
    private $conexao;

    function __construct() {

        include_once './DM/sql.financeiro.php';

        $this->conexao = ConexaoMysql::getConectar();
        if (!$this->conexao) {
            die('{"bd":"off"}');
            return false;
        }

        $this->mdc = new Sqlfinanceiro($this->conexao);
    }

    function getMDCMes($param) {
        $call = $this->mdc->getMDCMes($param);
        retorno::json($call);
    }

    function getMDCDia($param) {
        $call = $this->mdc->getMDCDia($param);
        retorno::json($call);
    }

}

$class = new $class();
$class->$call(@$param);
