<?php



namespace Dao;

use Conn\MySqlConnect;



/**

 * Description of Gallery  

 *

 * @author Délio

 */

class Gallery {

    

    public $id;

    public $fk_id_cliente;

    public $fk_id_categoria;

    public $data;

    public $titulo;

    public $descricao;

    public $valor;

    public $qtd_votos;

    public $total_votos;

    public $img;

    public $num_likes;

    public $data_cadastro;

    public $data_alteracao;

    public $usuario_cadastrou;

    public $usuario_alterou;

    public $id_foto_gallery;

    public $gallery_fk;

    public $imagens_nome;

    public $status;
    public $status_galeria;



    function __construct($res = null) {

        $this->id = (int) 0;

        $this->fk_id_cliente = (int) 0;

        $this->fk_id_categoria = (int) 0;

        $this->data = (string) date('Y-m-d');

        $this->titulo = (string) '';

        $this->descricao = (string) '';

        $this->valor = (double) 0;

        $this->qtd_votos = (int) 0;

        $this->total_votos = (int) 0;

        $this->img = (string) '';

        $this->num_likes = (int) 0;

        $this->data_cadastro = (string) date('Y-m-d H:i:s');

        $this->data_alteracao = (string) date('Y-m-d H:i:s');

        $this->usuario_cadastrou = (int) 0;

        $this->usuario_alterou = (int) 0;

        $this->status = (string) 'A';
        $this->status_galeria = (string) 'A';

        $this->id_foto_gallery = (int) 0;

        $this->gallery_fk = (int) 0;

        $this->imagens_nome = (string) '';

        $this->fill($res);

    }

    

    private function fill($res) {

        if ($res != null && $res instanceof \stdClass) {

            $this->id = (int) (isset($res->id) ? $res->id : 0);

            $this->fk_id_cliente = (int) (isset($res->fk_id_cliente) ? $res->fk_id_cliente : 0);

            $this->fk_id_categoria = (int) (isset($res->fk_id_categoria) ? $res->fk_id_categoria : 0);

            $this->data = (string) (isset($res->data) ? $res->data : date('Y-m-d'));

            $this->titulo = (string) (isset($res->titulo) ? $res->titulo : '');

            $this->descricao = (string) (isset($res->descricao) ? $res->descricao : '');

            $this->valor = (double) (isset($res->valor) ? $res->valor : 0);

            $this->qtd_votos = (int) (isset($res->qtd_votos) ? $res->qtd_votos : 0);

            $this->total_votos = (int) (isset($res->total_votos) ? $res->total_votos : 0);

            $this->img = (string) (isset($res->img) ? $res->img : '');

            $this->num_likes = (int) (isset($res->num_likes) ? $res->num_likes : 0);

            $this->data_cadastro = (string) (isset($res->data_cadastro) ? $res->data_cadastro : date('Y-m-d H:i:s'));

            $this->data_alteracao = (string) (isset($res->data_alteracao) ? $res->data_alteracao : date('Y-m-d H:i:s'));

            $this->usuario_cadastrou = (int) (isset($res->usuario_cadastrou) ? $res->usuario_cadastrou : 0);

            $this->usuario_alterou = (int) (isset($res->usuario_alterou) ? $res->usuario_alterou : 0);

            $this->status = (string) (isset($res->status) ? $res->status : 'A');
            $this->status_galeria = (string) (isset($res->status_galeria) ? $res->status_galeria : 'A');

            $this->cliente = (string) (isset($res->cliente) ? $res->cliente : '');

            $this->categoria = (string) (isset($res->categoria) ? $res->categoria : '');

            $this->id_foto_gallery = (string) (isset($res->id_foto_galeria) ? $res->id_foto_galeria : '');

            $this->gallery_fk = (string) (isset($res->id) ? $res->id : '');

            $this->imagens_nome = (string) (isset($res->nome_imagens) ? $res->nome_imagens : '');

        }

    }



    private function inserir(MySqlConnect $conecta) {

        $sql = $conecta->prepare("INSERT INTO gallery (fk_id_cliente, fk_id_categoria, data, titulo, descricao, valor, qtd_votos, total_votos, img, "

                . "num_likes, data_cadastro, usuario_cadastrou, status) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") or die($conecta->error);

        $sql->bind_param("iisssdiisisis", $this->fk_id_cliente, $this->fk_id_categoria, $this->data, $this->titulo, $this->descricao, 

                $this->valor, $this->qtd_votos, $this->total_votos, $this->img, $this->num_likes, $this->data_cadastro, 

                $this->usuario_cadastrou, $this->status);

        if ($sql->execute()) {

            return json_encode(array('data' => 'Success', 'message' => 'Gallery Inserido com Sucesso!', 'id' => $sql->insert_id));

        }

        return json_encode(array('data' => 'Error', 'message' => $sql->error, 'id' => 0));

    }

    

    private function editar(MySqlConnect $conecta) {

        $sql = $conecta->prepare("UPDATE gallery SET fk_id_cliente = ?, fk_id_categoria = ?, data = ?, titulo = ?, descricao = ?, valor = ?, qtd_votos = ?, "

                . "total_votos = ?, img = ?, num_likes = ?, data_alteracao = ?, usuario_alterou = ? WHERE id = ?") or die($conecta->error);

        $sql->bind_param("iisssdiisisii", $this->fk_id_cliente, $this->fk_id_categoria, $this->data, $this->titulo, $this->descricao, 

                $this->valor, $this->qtd_votos, $this->total_votos, $this->img, $this->num_likes, $this->data_alteracao, 

                $this->usuario_alterou, $this->id);

        if ($sql->execute()) {

            return json_encode(array('data' => 'Success', 'message' => 'Gallery Atualizado com Sucesso!', 'id' => $this->id));

        }

        return json_encode(array('data' => 'Error', 'message' => $sql->error, 'id' => $this->id));

    }



    private function inserirFotos(MySqlConnect $conecta) {

        $sql = $conecta->prepare("INSERT INTO imagens_gallery (gallery_fk, nome_imagens) VALUES (?, ?)") or die($conecta->error);

        $sql->bind_param("is", $this->gallery_fk, $this->imagens_nome);

        if ($sql->execute()) {

            return json_encode(array('data' => 'Success', 'message' => 'Fotos enviadas com sucesso!', 'id' => $sql->insert_id));

        }

        return json_encode(array('data' => 'Error', 'message' => $sql->error, 'id' => 0));

    }

    

    function salvar(MySqlConnect $conecta) {

        if ($this->id == 0) {

            return $this->inserir($conecta);

        }

        return $this->editar($conecta);

    }

    

    function salvarFotos(MySqlConnect $conecta) {

        return $this->inserirFotos($conecta);

    }

    

    function excluir(MySqlConnect $conecta) {
        $sql = $conecta->prepare("UPDATE gallery SET data_alteracao = ?, usuario_alterou = ?, status = ? WHERE id = ?") or die($conecta->error);
        $sql->bind_param("sisi", $this->data_alteracao, $this->usuario_alterou, $this->status, $this->id);
        
        if ($sql->execute()) {
            return json_encode(array('data' => 'Success', 'message' => 'Gallery Excluido com Sucesso!', 'id' => $this->id));
        }

        return json_encode(array('data' => 'Error', 'message' => $sql->error, 'id' => $this->id));
    }
    
    function excluir_definitivamente(MySqlConnect $conecta) {
        $sql = $conecta->prepare("DELETE FROM gallery WHERE id = ?") or die($conecta->error);
        $sql->bind_param("i", $this->id);
        
        if ($sql->execute()) {
            return json_encode(array('data' => 'Success', 'message' => 'Gallery Excluido com Sucesso!', 'id' => $this->id));
        }

        return json_encode(array('data' => 'Error', 'message' => $sql->error, 'id' => $this->id));
    }

    

    function getLista(MySqlConnect $conecta, $where = null, $limite = null) {

        $lst_gallery = array();

        $sql = $conecta->query("SELECT s.id, s.data, s.titulo, s.descricao, s.valor, s.qtd_votos, s.total_votos, s.img, s.num_likes, c.nome AS cliente, "

                . "t.nome AS categoria FROM gallery s LEFT JOIN clientes c ON (s.fk_id_cliente = c.id) INNER JOIN categorias t ON (s.fk_id_categoria "

                . "= t.id) WHERE s.status = 'A' $where $limite") or die($conecta->error);

        while ($res = $sql->fetch_object()) {

            $lst_gallery[] = new Gallery($res);

        }

        return $lst_gallery;

    }

    

    function getGalleryPorId(MySqlConnect $conecta, $id) {

        $sql = $conecta->query("SELECT id, fk_id_cliente, fk_id_categoria, data, titulo, descricao, valor, qtd_votos, total_votos, img, num_likes, "

                . "data_cadastro, data_alteracao, usuario_cadastrou, usuario_alterou FROM gallery WHERE id = '$id' AND status = 'A'") or die($conecta->error);

        if ($sql->num_rows > 0) {

            $res = $sql->fetch_object();

            $this->fill($res);

        }

    }

    

    function getListaGaleria(MySqlConnect $conecta, $where, $limite = null) {

        $lst_gallery = array();

        $sql = $conecta->query("SELECT g.id, g.titulo, ig.id AS id_foto_galeria, ig.nome_imagens FROM gallery AS g INNER JOIN imagens_gallery AS ig ON g.id = ig.gallery_fk WHERE g.status = 'A' AND ig.status = 'A' $where $limite") or die($conecta->error);

        while ($res = $sql->fetch_object()) {

            $lst_gallery[] = new Gallery($res);

        }

        return $lst_gallery;

    }

    

    function getFotoGalleryPorId(MySqlConnect $conecta, $id) {
        $sql = $conecta->query("SELECT g.id, g.titulo, ig.id AS id_foto_galeria, ig.nome_imagens FROM gallery AS g INNER JOIN imagens_gallery AS ig ON g.id = ig.gallery_fk WHERE ig.gallery_fk = '$id' AND ig.status = 'A'") or die($conecta->error);

        if ($sql->num_rows > 0) {
            $res = $sql->fetch_object();
            
            $this->fill($res);
        }
    }
    
    function exibeGaleria(MySqlConnect $conecta, $id) {
        $lst_gallery = array();
        
        $sql = $conecta->query("SELECT g.id, g.titulo, ig.id AS id_foto_galeria, ig.nome_imagens, c.nome AS categoria FROM gallery AS g INNER JOIN imagens_gallery AS ig ON g.id = ig.gallery_fk INNER JOIN categorias AS c ON c.id = g.fk_id_categoria WHERE ig.gallery_fk = '$id' AND ig.status = 'A'") or die($conecta->error);

        while ($res = $sql->fetch_object()) {
            $lst_gallery[] = new Gallery($res);
        }

        return $lst_gallery;
    }

    

    function excluirFoto(MySqlConnect $conecta) {

        $sql = $conecta->prepare("DELETE FROM imagens_gallery WHERE id = ?") or die($conecta->error);

        $sql->bind_param("i", $this->id_foto_gallery);

        if ($sql->execute()) {

            return json_encode(array('data' => 'Success', 'message' => 'Foto Excluido com Sucesso!', 'id' => $this->id));

        }

        return json_encode(array('data' => 'Error', 'message' => $sql->error, 'id' => $this->id));

    }

    function excluirGaleria(MySqlConnect $conecta) {
        $sql = $conecta->prepare("UPDATE imagens_gallery SET status = 'I' WHERE gallery_fk = ?") or die($conecta->error);
        $sql->bind_param("i", $this->gallery_fk);

        if ($sql->execute()) {
            return json_encode(array('data' => 'Success', 'message' => 'Foto Excluido com Sucesso!', 'id' => $this->id));
        }

        return json_encode(array('data' => 'Error', 'message' => $sql->error, 'id' => $this->id));
    }
    
    function excluirGaleriaDefinitivamente(MySqlConnect $conecta) {
        $sql = $conecta->prepare("DELETE FROM imagens_gallery WHERE gallery_fk = ?") or die($conecta->error);
        $sql->bind_param("i", $this->gallery_fk);

        if ($sql->execute()) {
            return json_encode(array('data' => 'Success', 'message' => 'Foto Excluido com Sucesso!', 'id' => $this->id));
        }

        return json_encode(array('data' => 'Error', 'message' => $sql->error, 'id' => $this->id));
    }

}