<?php
class DepartamentoEmpresa
{
    public $id;
    public $coddepartamento;
    public $nombreDepartamento;
    public $puestos = [];

    public function __construct()
    {
    }

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

        $query = "SELECT * FROM rrhh.view_departamentos;";
        $stmt = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE => PDO::SQLSRV_CURSOR_BUFFERED]);

        try {
            $stmt->execute();

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

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

    public static function obtenerParaDocumentosPago(int $anio, int $codtipoplanilla, int $correlativo): object
    {
        $db = obtenerConexion();

        $query = "EXEC rrhh.sp_obtenerDepartamentosDocumentosPago :anio, :codtipoplanilla, :correlativo;";
        $stmt = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
        $stmt->bindParam(":anio", $anio, PDO::PARAM_INT);
        $stmt->bindParam(":codtipoplanilla", $codtipoplanilla, PDO::PARAM_INT);
        $stmt->bindParam(":correlativo", $correlativo, PDO::PARAM_INT);

        try {
            $stmt->execute();

            $data = $stmt->fetchAll(PDO::FETCH_OBJ);

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