<?php

namespace Dao;
use Conn\MySqlConnect;

class Vereadores {
    
    public $id;
    public $nome;
    public $rg;
    public $telefone;
    public $senha;
    public $permissoes;
    public $data_cadastro;
    public $ultimo_acesso;
    public $status;

    function __construct($res = null) {
        $this->id = (int) 0;
        $this->nome = (string) '';
        $this->rg = (string) '';
        $this->telefone = (string) '';
        $this->senha = (string) '';
        $this->permissoes = (string) '';
        $this->data_cadastro = (string) date('Y-m-d H:i:s');
        $this->ultimo_acesso = (string) '';
        $this->status = (string) 'A';
        $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->rg = (string) (isset($res->rg) ? $res->rg : '');
            $this->telefone = (string) (isset($res->telefone) ? $res->telefone : '');
            $this->senha = (string) (isset($res->senha) ? $res->senha : '');
            $this->permissoes = (string) (isset($res->permissoes) ? $res->permissoes : '');
            $this->data_cadastro = (string) (isset($res->data_cadastro) ? $res->data_cadastro : date('Y-m-d H:i:s'));
            $this->ultimo_acesso = (string) (isset($res->ultimo_acesso) ? $res->ultimo_acesso : '');
            $this->status = (string) (isset($res->status) ? $res->status : 'A');
        }
    }

    private function inserir(MySqlConnect $conecta) {
        $sql = $conecta->prepare("INSERT INTO vereadores (nome, rg, telefone, senha, permissoes, data_cadastro, status) "
                . "VALUES (?, ?, ?, ?, ?, ?, ?)") or die($conecta->error);
        $sql->bind_param("sssssss", $this->nome, $this->rg, $this->telefone, $this->senha, $this->permissoes, $this->data_cadastro, $this->status);
        if ($sql->execute()) {
            return json_encode(array('data' => 'Success', 'message' => 'Vereador 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 vereadores SET nome = ?, rg = ?, telefone = ?, senha = ?, permissoes = ?, "
                . "data_cadastro = ?, ultimo_acesso = ?, status = ? WHERE id = ?") or die($conecta->error);
        $sql->bind_param("ssssssssi", $this->nome, $this->rg, $this->telefone, $this->senha, $this->permissoes, $this->data_cadastro, 
                $this->ultimo_acesso, $this->status, $this->id);
        if ($sql->execute()) {
            return json_encode(array('data' => 'Success', 'message' => 'Vereador Atualizado com Sucesso!', 'id' => $this->id));
        }
        return json_encode(array('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 vereadores SET data_cadastro = ?, ultimo_acesso = ?, status = ? WHERE id = ?") or die($conecta->error);
        $sql->bind_param("sssi", $this->data_cadastro, $this->ultimo_acesso, $this->status, $this->id);
        if ($sql->execute()) {
            return json_encode(array('data' => 'Success', 'message' => 'Vereador Excluído com Sucesso!', 'id' => $this->id));
        }
        return json_encode(array('data' => 'Error', 'message' => $sql->error, 'id' => $this->id));
    }
    
    function getLista(MySqlConnect $conecta, $where = null) {
        $lst_vereadores = array();
        $sql = $conecta->query("SELECT id, nome, rg, telefone FROM vereadores WHERE status = 'A' $where") or die($conecta->error);
        while ($res = $sql->fetch_object()) {
            $lst_vereadores[] = new Vereadores($res);
        }
        return $lst_vereadores;
    }
    
public function getVereadorPorId(MySqlConnect $conecta, $id) {
    $sql = $conecta->query("SELECT * FROM vereadores WHERE id = '$id' AND status = 'A'") or die($conecta->error);

    if ($sql->num_rows > 0) {
        $res = $sql->fetch_object();
        return $res; // Retorna o objeto do vereador encontrado
    } else {
        return null; // Retorna null quando nenhum vereador é encontrado
    }
}

}