import metodosFetch from "../../../../assets/js/app/metodosFetch.js?v=1.0.0";
import { obtenerNombreModulo } from "../../../../assets/js/app/funcionesGenerales.js?v=1.0.0";

class Bono {
  constructor({
    descripcion,
    detalles,
    codtipoplanilla,
    fechaModificacion,
    fechaRegistro,
    id,
    idPeriodicidad,
    idTipo,
    fechaPago,
    mesPago,
    monto,
    pagado,
    planillaPago,
    periodicidad,
    tipo,
    ultimaAplicacion,
    usuario,
    empleados,
  }) {
    this.descripcion = descripcion;
    this.detalles = detalles;
    this.codtipoplanilla = codtipoplanilla;
    this.empleados = empleados;
    this.fechaModificacion = fechaModificacion;
    this.fechaRegistro = fechaRegistro;
    this.id = id;
    this.idPeriodicidad = idPeriodicidad;
    this.idTipo = idTipo;
    this.fechaPago = fechaPago;
    this.mesPago = mesPago;
    this.monto = monto;
    this.pagado = pagado;
    this.planillaPago = planillaPago;
    this.periodicidad = periodicidad;
    this.tipo = tipo;
    this.ultimaAplicacion = ultimaAplicacion;
    this.usuario = usuario;
  }

  async guardar() {
    try {
      const respuesta = await metodosFetch.post({
        archivo: `controllers/bonoController`,
        modulo: obtenerNombreModulo(),
        data: {
          accion: "guardar",
          ...this,
        },
      });

      return respuesta;
    } catch (err) {
      throw err;
    }
  }

  static async obtenerPorTipoPlanilla({ codtipoplanilla }) {
    try {
      const respuesta = await metodosFetch.get({
        archivo: `controllers/bonoController`,
        modulo: obtenerNombreModulo(),
        parametros: {
          accion: "obtenerPorTipoPlanilla",
          codtipoplanilla,
        },
      });
      return respuesta;
    } catch (err) {
      throw err;
    }
  }

  async eliminar() {
    try {
      const respuesta = await metodosFetch.post({
        archivo: `controllers/bonoController`,
        modulo: obtenerNombreModulo(),
        data: {
          accion: "eliminar",
          id: this.id,
        },
      });

      return respuesta;
    } catch (err) {
      throw err;
    }
  }

  async obtenerDetalles() {
    try {
      const respuesta = await metodosFetch.get({
        archivo: `controllers/bonoController`,
        modulo: obtenerNombreModulo(),
        parametros: {
          accion: "obtenerDetalles",
          id: this.id,
        },
      });

      return respuesta;
    } catch (err) {
      throw err;
    }
  }
}

export default Bono;
