import metodosFetch from "../app/metodosFetch.js?v=1.0.0";

class Modulo {
  constructor({
    apartados = [],
    contenedor,
    descripcion,
    fechaRegistro,
    id,
    mantenimiento = 0,
    titulo,
  }) {
    this.apartados = apartados;
    this.contenedor = contenedor;
    this.descripcion = descripcion;
    this.fechaRegistro = fechaRegistro;
    this.id = id;
    this.mantenimiento = mantenimiento;
    this.titulo = titulo;
  }

  static async obtenerTodos() {
    try {
      const respuesta = await metodosFetch.get({
        archivo: "controllers/moduloController",
        parametros: {
          accion: "obtenerTodos",
        },
      });

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

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

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

  static async eliminar({ id }) {
    try {
      const respuesta = await metodosFetch.post({
        archivo: "controllers/moduloController",
        data: {
          accion: "eliminar",
          id: btoa(id),
        },
      });

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

  static async obtenerTodosParaCombo() {
    try {
      const respuesta = await metodosFetch.get({
        archivo: "controllers/moduloController",
        parametros: {
          accion: "obtenerTodosParaCombo",
        },
        loader: false,
      });

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

  async configurarMantenimiento() {
    try {
      const respuesta = await metodosFetch.post({
        archivo: "controllers/moduloController",
        data: {
          accion: "configurarMantenimiento",
          ...this,
        },
      });

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

export default Modulo;
