<?php
class tiposOtrosIngresos
{
    public $codtipo;
    public $tipoOtroIngreso;
    public $planillaComplementaria;
    public $aplicaCotizaciones;
    public $aplicaRenta;

    public static function obtenerRegistroTiposOtrosIngresos(): object
    {
        try {
            $db = obtenerConexion();
            $query = "SELECT * FROM rrhh.view_tiposOtrosIngresos WHERE estado=1;";
            $stm = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);

            $stm->execute();

            $data = $stm->fetchALL(PDO::FETCH_CLASS, __CLASS__);

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

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

            ];
        }
    }

    public function guardar(): object
    {
        try {
            $db = obtenerConexion();

            $respuesta = null;

            $usuario = App::obtenerIdUsuario();

            $query = "EXEC rrhh.sp_guardarTipoOtroIngreso :codempresa,:codtipo,:tipo,:planillaComplementaria,:aplicaCotizaciones,:aplicaRenta,:usuario,:respuesta;";
            $stmt = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
            $stmt->bindValue(':codempresa', CODEMPRESA, PDO::PARAM_INT);
            $stmt->bindParam(':codtipo', $this->codtipo, PDO::PARAM_INT);
            $stmt->bindParam(':tipo', $this->tipoOtroIngreso, PDO::PARAM_STR);
            $stmt->bindParam(':planillaComplementaria', $this->planillaComplementaria, PDO::PARAM_INT);
            $stmt->bindParam(':aplicaCotizaciones', $this->aplicaCotizaciones, PDO::PARAM_INT);
            $stmt->bindParam(':aplicaRenta', $this->aplicaRenta, PDO::PARAM_INT);
            $stmt->bindParam(':usuario', $usuario, PDO::PARAM_INT);
            $stmt->bindParam(':respuesta', $respuesta, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 4000);

            $stmt->execute();

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

    public function eliminar(): object
    {
        try {
            $db = obtenerConexion();

            $query = "UPDATE [" . DB_NET . "].dbo.pla_tipo_ingreso SET estado=0 WHERE codtipoingreso = :codtipo;";
            $stmt = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
            $stmt->bindParam(':codtipo', $this->codtipo, PDO::PARAM_INT);

            $stmt->execute();

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