"use strict";

import Oficina from "../../../../assets/js/models/oficinaModel.js";

!(function () {})();

const loader = document.querySelector(".loader");

let mapa = null;

window.onload = async () => {
  try {
    const { data: ubicaciones } = await Oficina.obtenerTodosPorSucursal({
      codempresa: 5,
      codsucursal: 35,
    });

    let otrojson = [];

    ubicaciones.forEach((ubicacion) => {
      let limiteSuperior = verificacionGlobal(
          ubicacion.lat4,
          ubicacion.lon4,
          ubicacion.lat3,
          ubicacion.lon3
        ),
        limiteInferior = verificacionGlobal(
          ubicacion.lat2,
          ubicacion.lon2,
          ubicacion.lat4,
          ubicacion.lon4
        );
      let poligono = [
        [parseFloat(ubicacion.lat1), parseFloat(ubicacion.lon1)],
        [parseFloat(ubicacion.lat2), parseFloat(ubicacion.lon2)],
        [parseFloat(ubicacion.lat3), parseFloat(ubicacion.lon3)],
        [parseFloat(ubicacion.lat4), parseFloat(ubicacion.lon4)],
      ];

      if (limiteSuperior > limiteInferior) {
        poligono = [
          [parseFloat(ubicacion.lat1), parseFloat(ubicacion.lon1)],
          [parseFloat(ubicacion.lat2), parseFloat(ubicacion.lon2)],
          [parseFloat(ubicacion.lat4), parseFloat(ubicacion.lon4)],
          [parseFloat(ubicacion.lat3), parseFloat(ubicacion.lon3)],
        ];
      }

      otrojson.push(poligono);
    });

    L.mapbox.accessToken =
      "pk.eyJ1IjoiY29uc3RydS1zZXJ2aWNlcyIsImEiOiJjbG10bGJncnowNTF5MnJudHIxOTlrODZmIn0.5y6eJgzSMoqlHCKvusEcjA";

    let mapa = L.mapbox.map("mapa").setView([13.9881, -89.6075], 15);

    L.mapbox
      .styleLayer("mapbox://styles/constru-services/clmtm0tiu05h801qi94920y04")
      .addTo(mapa);

    L.polygon(otrojson, { color: "#F39435" }).addTo(mapa);

    // console.log(otrojson);

    // const circulo = L.circle([13.98838374, -89.60677373], {
    //   color: "yellow",
    //   fillColor: "#f03",
    //   fillOpacity: 0.5,
    //   radius: 100,
    // }).addTo(mapa);
    loader && loader.classList.add("d-none");
  } catch (err) {
    console.error(err);
  }
};

const verificacionGlobal = (latitud1, longitud1, latitud2, longitud2) => {
  const rad = function (x) {
    return (x * Math.PI) / 180;
  };
  let R = 6378.137; //Radio de la tierra en km
  let dLat = rad(latitud2 - latitud1);
  let dLong = rad(longitud2 - longitud1);
  let a =
    Math.sin(dLat / 2) * Math.sin(dLat / 2) +
    Math.cos(rad(latitud1)) *
      Math.cos(rad(latitud2)) *
      Math.sin(dLong / 2) *
      Math.sin(dLong / 2);
  let c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  let d = R * c;
  return d.toFixed(3); //Retorna tres decimales
};
