<?php

namespace Dao;
use Conn\MySqlConnect;

class Requerimentos {
	
    public $id;
    public $cadastro_id;
    public $data;
    public $tipo;
    public $texto;
    public $situacao;
    public $id_vereador;
    public $status;

    function __construct($res = null)
    {
        $this->id = (int) 0;
        $this->cadastro_id = (int) 0;
        $this->data = (string) date('Y-m-d H:i:s');
        $this->tipo = (string) '';
        $this->texto = (string) '';
        $this->situacao = (string) '';
        $this->id_vereador = (int) 0;
        $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->cadastro_id = (int) (isset($res->cadastro_id) ? $res->cadastro_id : 0);

            $this->data = (string) (isset($res->data) ? $res->data : date('Y-m-d H:i:s'));
            $this->tipo = (string) (isset($res->tipo) ? $res->tipo : '');
            $this->texto = (string) (isset($res->texto) ? $res->texto : '');
            $this->situacao = (string) (isset($res->situacao) ? $res->situacao : '');
            $this->id_vereador = (int) (isset($res->id_vereador) ? $res->id_vereador : 0);
            $this->status = (string) (isset($res->status) ? $res->status : 'A');
        }
    }

private function inserir(MySqlConnect $conecta)
{
    $sql = $conecta->prepare("INSERT INTO requerimentos (cadastro_id, data, tipo, texto, situacao, id_vereador, status) "
            . "VALUES (?, ?, ?, ?, ?, ?, ?)") or die($conecta->error);

        $sql->bind_param("issssis", $this->cadastro_id, $this->data, $this->tipo, $this->texto, $this->situacao, $this->id_vereador, $this->status);

    if ($sql->execute()) {
        return json_encode(array('data' => 'Success', 'message' => 'Requerimento 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 requerimentos SET cadastro_id = ?, data = ?, tipo = ?, texto = ?, situacao = ?, "
            . "id_vereador = ?, status = ? WHERE id = ?") or die($conecta->error);
        $sql->bind_param("issssssi", $this->cadastro_id, $this->data, $this->tipo, $this->texto, $this->situacao, $this->id_vereador, $this->status, $this->id);
    if ($sql->execute()) {
        return json_encode(array('data' => 'Success', 'message' => 'Requerimento 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 requerimentos SET status = ? WHERE id = ?") or die($conecta->error);
        $sql->bind_param("si", $this->status, $this->id);
        if ($sql->execute()) {
            return json_encode(array('data' => 'Success', 'message' => 'Requerimento 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_requerimentos = array();
        $sql = $conecta->query("SELECT id, nome, data, tipo, texto, situacao, id_vereador FROM requerimentos WHERE status = 'A' $where") or die($conecta->error);
        while ($res = $sql->fetch_object()) {
            $lst_requerimentos[] = new Requerimentos($res);
        }
        return $lst_requerimentos;
    }

function getRequerimentoPorId(MySqlConnect $conecta, $id) {
    try {
        $sql = $conecta->prepare("SELECT r.id, r.nome, r.data, r.tipo, r.texto, r.situacao, r.id_vereador, v.nome as nome_vereador, r.status "
                . "FROM requerimentos r INNER JOIN vereadores v ON r.id_vereador = v.id "
                . "WHERE r.id = ? AND r.status = 'A'");
        $sql->bind_param("i", $id);
        $sql->execute();
        $result = $sql->get_result();
        
        if ($result->num_rows > 0) {
            $row = $result->fetch_object();
            $this->fill($row);
        } else {
            // Não encontrou nenhum requerimento com o ID especificado
            throw new Exception('Requerimento não encontrado. ID: ' . $id);
        }
    } catch (Exception $e) {
        // Captura a exceção e lida com ela conforme necessário
        echo 'Erro: ' . $e->getMessage();
        // Lógica adicional de tratamento de erro, se necessário
    }
}



}