<?php
class Rol
{
    public $id;
    public $rol;
    public $idTipo;
    public $tipo;
    public $fechaRegistro;

    public function __construct()
    {
        !empty($this->fechaRegistro) && $this->fechaRegistro = date("d-m-Y h:i a", strtotime($this->fechaRegistro));
    }

    public static function obtenerTodos(): object
    {
        $db = obtenerConexion();

        $query = "SELECT * FROM sistema.view_roles WHERE estado = 1;";
        $stmt = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);

        try {
            $stmt->execute();

            $data = $stmt->fetchAll(PDO::FETCH_CLASS, __CLASS__);

            return (object)[
                "data" => $data,
                "status" => 200,
            ];
        } catch (PDOException $e) {
            return (object)[
                "message" => $e->getMessage(),
                "status" => 500,
            ];
        }
    }

    public function guardar($db = null): object
    {
        if (empty($db)) $db = obtenerConexion();

        $respuesta = null;
        $id = null;

        $query = "EXEC sistema.sp_guardarRol :id,:rol,:tipo,:respuesta,:idRol;";
        $stmt = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
        $stmt->bindParam(":id", $this->id, PDO::PARAM_INT);
        $stmt->bindParam(":rol", $this->rol, PDO::PARAM_STR);
        $stmt->bindParam(":tipo", $this->idTipo, PDO::PARAM_INT);
        $stmt->bindParam(":respuesta", $respuesta, PDO::PARAM_STR, 300);
        $stmt->bindParam(":idRol", $id, PDO::PARAM_INT, 30);

        try {
            $stmt->execute();

            return (object)[
                "message" => $respuesta,
                "status" => 200,
                "id" => $id,
            ];
        } catch (PDOException $e) {
            return (object)[
                "message" => $e->getMessage(),
                "status" => 500,
            ];
        }
    }
}
