<?php
class LicenciaPortacionArma
{
    public $id;
    public $codempleado;
    public $numeroLicencia;
    public $fechaEmision;
    public $fechaExpira;
    public $enEmergenciaLlamar;
    public $numeroRegistro;
    public $tipoSangre;
    public $telefono;
    public $estado;
    public $fechaRegistro;

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

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

            $respuesta = null;
            $id = null;

            $usuario = App::obtenerIdUsuario();

            $query = "EXEC rrhh.sp_guardarLicenciaArmasEmpleado :codempleado,:numeroLicencia,:fechaEmision,:fechaExpira,:enEmergenciaLlamar,:numeroRegistro,:tipoSangre,:telefono,:usuario,:respuesta;";
            $stmt = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
            $stmt->bindParam(':codempleado', $this->codempleado, PDO::PARAM_STR);
            $stmt->bindParam(':numeroLicencia', $this->numeroLicencia, PDO::PARAM_STR);
            $stmt->bindParam(':fechaEmision', $this->fechaEmision, PDO::PARAM_STR);
            $stmt->bindParam(':fechaExpira', $this->fechaExpira, PDO::PARAM_STR);
            $stmt->bindParam(':enEmergenciaLlamar', $this->enEmergenciaLlamar, PDO::PARAM_STR);
            $stmt->bindParam(':numeroRegistro', $this->numeroRegistro, PDO::PARAM_STR);
            $stmt->bindParam(':tipoSangre', $this->tipoSangre, PDO::PARAM_STR);
            $stmt->bindParam(':telefono', $this->telefono, PDO::PARAM_STR);
            $stmt->bindParam(':usuario', $usuario, PDO::PARAM_INT);
            $stmt->bindParam(':respuesta', $respuesta, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 300);

            $stmt->execute();

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

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

            $query = "EXEC rrhh.sp_limpiarLicenciasArmasEmpleado :codempleado;";
            $stmt = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
            $stmt->bindParam(':codempleado', $codempleado, PDO::PARAM_STR);

            $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()
            ];
        }
    }

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

            $query = "SELECT TOP(1) * FROM rrhh.view_licenciasArmasEmpleado WHERE codempleado = :codempleado and estado = 1;";
            $stmt = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
            $stmt->bindParam(':codempleado', $codempleado, PDO::PARAM_STR);

            $stmt->execute();

            $data = $stmt->fetchObject(__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()
            ];
        }
    }
}
