<?php
class UnidadTrabajo
{
    public $id;
    public $unidadTrabajo;
    public $fechaRegistro;
    public $usuario;
    public $cantidadEmpleados;

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

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

            $respuesta = null;
            $id = null;

            $query = 'EXEC rrhh.sp_guardarUnidadTrabajo :id,:unidad,:usuario,:respuesta,:idUnidad;';
            $stmt = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
            $stmt->bindParam(':id', $this->id, PDO::PARAM_INT);
            $stmt->bindParam(':unidad', $this->unidadTrabajo, PDO::PARAM_STR);
            $stmt->bindParam(':usuario', $usuario, PDO::PARAM_INT);
            $stmt->bindParam(':respuesta', $respuesta, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 300);
            $stmt->bindParam(':idUnidad', $id, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT, 300);

            $stmt->execute();

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

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

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

            $stmt->execute();

            $data = $stmt->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 eliminar($usuario): object
    {
        try {
            $db = obtenerConexion();

            $query = "UPDATE rrhh.cat_unidadesTrabajo SET estado = 0 WHERE id = :id;";
            $stmt = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
            $stmt->bindParam(':id', $this->id, 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()
            ];
        }
    }
}
