<?php



namespace Dao;

use Conn\MySqlConnect;



/**

 * Description of Galerias

 *

 * @author Délio

 */

class Galerias {

    

    public $id;

    public $nome;

    public $logo;

    public $capa;

    public $descricao;

    public $data_cadastro;

    public $usuario_cadastrou;

    public $data_alteracao;

    public $usuario_alterou;

    public $status;

    public $slug;

    public $ordem;



    function __construct($res = null) {

        $this->id = (int) 0;

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

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

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

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

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

        $this->usuario_cadastrou = (int) 0;

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

        $this->usuario_alterou = (int) 0;

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

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

        $this->ordem = (int) 0;

        $this->fill($res);

    }

    

    private function fill($res) {

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

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

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

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

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

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

            $this->data_cadastro = (string) (isset($res->data_cadastro) ? $res->data_cadastro : null);

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

            $this->data_alteracao = (string) (isset($res->data_alteracao) ? $res->data_alteracao : null);

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

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

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

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

        }

    }



    private function inserir(MySqlConnect $conecta) {

        $sql = $conecta->prepare("INSERT INTO galerias (nome, logo, capa, descricao, data_cadastro, usuario_cadastrou, status, slug, ordem) VALUES (?, ?, "

                . "?, ?, ?, ?, ?, ?, ?)") or die($conecta->error);

        $sql->bind_param("sssssissi", $this->nome, $this->logo, $this->capa, $this->descricao, $this->data_cadastro, $this->usuario_cadastrou, $this->status, 

                $this->slug, $this->ordem);

        if ($sql->execute())

            return json_encode(['data' => 'Success', 'message' => 'Galeria inserido com sucesso!', 'id' => $sql->insert_id]);

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

    }

    

    private function editar(MySqlConnect $conecta) {

        $sql = $conecta->prepare("UPDATE galerias SET nome = ?, logo = ?, capa = ?, descricao = ?, data_alteracao = ?, usuario_alterou = ?, slug = ? "

                . "WHERE id = ?") or die($conecta->error);

        $sql->bind_param("sssssisi", $this->nome, $this->logo, $this->capa, $this->descricao, $this->data_alteracao, $this->usuario_alterou, $this->slug, 

                $this->id);

        if ($sql->execute())

            return json_encode(['data' => 'Success', 'message' => 'Galeria atualizado com sucesso!', 'id' => $this->id]);

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

    }

    

    function salvar(MySqlConnect $conecta) {

        if ($this->id == 0)

            return $this->inserir($conecta);

        return $this->editar($conecta);

    }

    

    function excluir(MySqlConnect $conecta) {

        $sql = $conecta->prepare("UPDATE galerias 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(['data' => 'Success', 'message' => 'Galeria excluido com sucesso!', 'id' => $this->id]);

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

    }

    

    function getLista(MySqlConnect $conecta, $where = '') {

        $lst_galerias = [];

        $sql = $conecta->query("SELECT * FROM galerias WHERE status = 'A' $where") or die($conecta->error);

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

            $lst_galerias[] = new Galerias($res);

        return $lst_galerias;

    }

    

    function getGaleriaPorId(MySqlConnect $conecta, $id) {

        $sql = $conecta->query("SELECT * FROM galerias WHERE id = '$id' AND status = 'A'") or die($conecta->error);

        if ($sql->num_rows > 0) {

            $res = $sql->fetch_object();

            $this->fill($res);

        }

    }

    

    function getGaleriaPorSlug(MySqlConnect $conecta, $slug) {

        $sql = $conecta->query("SELECT id FROM galerias WHERE slug = '$slug' AND status = 'A'") or die($conecta->error);

        if ($sql->num_rows > 0) {

            $res = $sql->fetch_object();

            $this->getGaleriaPorId($conecta, $res->id);

        }

    }

}