<template>
  <div>
    <p class="is-size-2 mb-5">Carga Masiva</p>
    <b-field v-if="true">
      <b-upload
        v-model="csv"
        type="is-black"
        v-on:input="validarExt()"
        drag-drop
        expanded
      >
        <section class="section">
          <div class="content has-text-centered">
            <p>
              <b-icon icon="upload" size="is-large"></b-icon>
            </p>
            <p>
              {{
                csv.name || "Arrastra aquí tu archivo o da click para buscar"
              }}
            </p>
          </div>
        </section>
      </b-upload>
    </b-field>
    <b-button v-if="csv.name" @click="actualizarDialog()" class="is-info"
      >Enviar archivo</b-button
    >
    <b-button v-else disabled class="is-info">Enviar archivo</b-button>
    <b-loading
      :is-full-page="true"
      v-model="isLoading"
      :can-cancel="false"
    ></b-loading>
  </div>
</template>

<script>
export default {
  data() {
    return {
      csv: {},
      isLoading: false,
      toastType: null,
      toastMessage: null,
    };
  },
  methods: {
    validarExt() {
      const extPermitidas = /(.csv)$/i;
      if (!extPermitidas.exec(this.csv.name)) {
        this.toastType = "is-danger";
        this.toastMessage = "Asegurate de ingresar un archivo .CSV";
        this.toast();
        this.csv = {};
      }
    },
    toast() {
      this.$buefy.toast.open({
        message: this.toastMessage,
        type: this.toastType,
      });
    },
    dialog() {
      this.$buefy.dialog.confirm({
        title: "Carga masiva",
        message: "¿Seguro(a) que quiere enviar este archivo?",
        confirmText: "Confirmar",
        cancelText: "Cancelar",
        type: "is-success",
        hasIcon: true,
        onConfirm: () => this.enviarCargaMasiva(),
      });
    },
    enviarCargaMasiva() {
      this.isLoading = true;
      const formData = new FormData();
      if (this.cartaAceptacion) {
        formData.append("cartaAceptacion", this.cartaAceptacion);
      }
      axios
        .put(`${process.env.api}/programa/carga_masiva`, formData)
        .then((res) => {
          this.isLoading = false;
          this.toastType = "is-success";
          this.toastMessage = "Se ha enviado la carga masiva con éxito";
          this.toast();
        })
        .catch((err) => {
          this.isLoading = false;
          this.toastType = "is-danger";
          this.toastMessage = err.response.data.message;
          this.toast();
        });
    },
  },
};
</script>
