window.onload = () => {
  //   $(".loader").hide();
  $(".ubicacionCbo").select2({
    theme: "bootstrap-5",
  });

  let current = localStorage.getItem("CS-ubicacion-accesos")
    ? JSON.parse(localStorage.getItem("CS-ubicacion-accesos"))
    : {};
  fetchActions
    .get({
      file: "getSucursales",
      data: {
        q: "all",
      },
    })
    .then((response) => {
      if (response.status == 200) {
        switch (response.message) {
          case "EXITO":
            let options = [
              `<option selected value="" disabled>seleccione</option>`,
              ...response.data.map(
                (op) => `<option value="${op.id}">${op.nombre}</option>`
              ),
            ];
            document.getElementById("cboSucursal").innerHTML = options.join("");
            current.sucursal &&
              (document.getElementById("cboSucursal").value = current.sucursal);
            current.sucursal &&
              ubicacion
                .getCluster(current.sucursal)
                .then(() => {
                  document.getElementById("cboCluster").value = current.cluster;
                  $("#cboCluster").trigger("change");
                })
                .catch(showMessages.error);
            break;
          default:
            showMessages.error(response);
            break;
        }
      } else {
        showMessages.error(response);
      }
    })
    .catch(showMessages.error);
};

const ubicacion = {
  getCluster: function (sucursal) {
    return new Promise((resolve, reject) => {
      fetchActions
        .get({
          file: "getCluster",
          data: {
            sucursal,
          },
        })
        .then((response) => {
          if (response.status == 200) {
            switch (response.message) {
              case "EXITO":
                let options = [
                  `<option selected value="" disabled>seleccione</option>`,
                  ...response.data.map(
                    (op) => `<option value="${op.id}">${op.nombre}</option>`
                  ),
                ];
                document.getElementById("cboCluster").innerHTML =
                  options.join("");
                resolve();
                break;
              default:
                reject(response);
                break;
            }
          } else {
            reject(response);
          }
        })
        .catch(reject);
    });
  },
  guardar: function () {
    let data = {
      sucursal: document.getElementById("cboSucursal").value,
      nombre_sucursal:
        document.getElementById("cboSucursal").options[
          document.getElementById("cboSucursal").selectedIndex
        ].text,
      cluster: document.getElementById("cboCluster").value,
      nombre_cluster:
        document.getElementById("cboCluster").options[
          document.getElementById("cboCluster").selectedIndex
        ].text,
    };

    fetchActions
      .get({
        file: "getCasas",
        data: {
          sucursal: data.sucursal,
          cluster: data.cluster,
        },
      })
      .then((response) => {
        if (response.status == 200) {
          switch (response.message) {
            case "EXITO":
              //   console.log(response);
              data.casas = response.data;
              localStorage.setItem(
                "CS-ubicacion-accesos",
                JSON.stringify(data)
              );
              Swal.fire({
                title: "Éxito",
                html: "Se guardó la ubicación correctamente.",
                icon: "success",
                confirmButtonText: "Aceptar",
                confirmButtonColor: "#2ecc71",
                showCancelButton: false,
                showConfirmButton: true,
                focusConfirm: false,
                allowOutsideClick: false,
                allowEscapeKey: false,
                allowEnterKey: false,
              }).then(() => {
                window.top.location.reload();
              });
              break;
            default:
              showMessages.error(response);
              break;
          }
        } else {
          showMessages.error(response);
        }
      })
      .catch(showMessages.error);
  },
};
