<template>
  <div>
    <h3 class="is-size-4 mb-3">Todos los módulos</h3>

    <div
      class="columns mb-5 is-align-items-flex-end"
      v-if="admin.tipoUsuario.id_tipo_usuario === 2"
    >
      <SelectInstitucion
        columnSize="is-3"
        :deshabilitarOptVacia="false"
        :idInstitucionPadre="idInstitucion"
        @institucion-seleccionada="
          (nuevaInstitucion) => (idInstitucion = nuevaInstitucion)
        "
      />

      <BotonBuscar
        columnSize="is-3"
        :buscar="obtenerModulos"
        :disabled="!idInstitucion"
      />
    </div>

    <TablaModulos
      :modulos="modulos"
      :isLoadingTable="isLoadingTable"
      :obtenerModulos="obtenerModulos"
    />
  </div>
</template>

<script>
import axios from 'axios'
import BotonBuscar from '@/components/botones/BotonBuscar'
import SelectInstitucion from '@/components/selects/SelectInstitucion'
import TablaModulos from '@/components/tablas/TablaModulos'

export default {
  components: { BotonBuscar, SelectInstitucion, TablaModulos },
  props: {
    actualizarTabla: { type: Boolean, required: true },
    updateActualizarTabla: { type: Function, required: true },
    admin: { type: Object, required: true },
  },
  data() {
    return {
      modulos: [],
      isLoadingTable: false,
      idInstitucion: 0,
    }
  },
  methods: {
    obtenerModulos() {
      let data = ''

      this.isLoadingTable = true
      if (this.admin.institucion.id_institucion)
        data += `?id_institucion=${this.admin.institucion.id_institucion}`
      else if (this.idInstitucion)
        data += `?id_institucion=${this.idInstitucion}`
      return axios
        .get(
          `${process.env.api}/modulo/modulos-operador${data}`,
          this.$getToken.token()
        )
        .then((res) => {
          this.modulos = res.data
          this.isLoadingTable = false
        })
        .catch((err) => {
          this.isLoadingTable = false
          this.$alertsGenericos.imprimirError(
            this.$buefy,
            this.$router,
            err.response.data
          )
        })
    },
  },
  watch: {
    actualizarTabla() {
      if (this.actualizarTabla) {
        this.obtenerModulos()
        this.updateActualizarTabla(false)
      }
    },
  },
  created() {
    this.obtenerModulos()
  },
}
</script>
