import apiClient from "@/infrastructure/apiClient";
import apiPath from "@/infrastructure/apiPath";
import { Loader } from "@googlemaps/js-api-loader";

// const GOOGLE_MAPS_API_KEY = "AIzaSyBdSeNGnR1RwylFhpCuoYyGMX0hdscuR5w";

export default {
  async search(searchModel) {
    const params = JSON.parse(JSON.stringify(searchModel));
    var searchResult = await apiClient
      .post(apiPath.endPoints.search, params)
      .then((r) => {
        return r.data;
      })
      .catch((e) => {
        console.log(e);
        return {};
      });
    return searchResult;
  },
  async autoGenerate() {
    var generateResult = await apiClient
      .post(apiPath.endPoints.autoGenerate)
      .then((r) => {
        return r.data;
      })
      .catch((e) => {
        console.log(e);
        return {};
      });
    return generateResult;
  },
  async getById(id) {
    var locationModel = await apiClient
      .get(apiPath.location.getById + id)
      .then((r) => {
        return r.data;
      })
      .catch((e) => {
        console.log(e);
        return {};
      });
    return locationModel;
  },
  async delete(id) {
    var result = await apiClient
      .delete(apiPath.location.delete + id)
      .then((r) => {
        return r.data;
      })
      .catch((e) => {
        console.log(e);
        return {};
      });
    return result;
  },
  async loSug(keyword, type, parentId) {
    var result = await apiClient
      .get(
        apiPath.location.loSug +
          "?keyword=" +
          keyword +
          "&type=" +
          type +
          "&parentId=" +
          parentId
      )
      .then((r) => {
        return r.data;
      })
      .catch((e) => {
        console.log(e);
        return {};
      });
    return result;
  },
  async calculateDistance() {
    // Khởi tạo Google Maps API
    const loader = new Loader({
      apiKey: "AIzaSyBdSeNGnR1RwylFhpCuoYyGMX0hdscuR5w", // Thay YOUR_API_KEY bằng API key của bạn
      version: "weekly",
    });

    // Tải Google Maps API
    const google = await loader.load();
    console.log(google);

    const pos1 = new google.maps.LatLng(10.123, 20.456);
    const pos2 = new google.maps.LatLng(30.789, 40.012);

    // // Tạo đối tượng dịch vụ Distance Matrix
    const service = new google.maps.DirectionsService();
    console.log(service);
    await service
      .route({
        origin: {
          query: "Xã Bình Khê, Thị xã Đông Triều, Tỉnh Quảng Ninh",
        },
        destination: {
          query: "Phường Bãi Cháy, Thành phố Hạ Long, Tỉnh Quảng Ninh",
        },
        travelMode: google.maps.TravelMode.DRIVING,
      })
      .then((response) => {
        console.log(response.routes[0].legs[0].distance);
      })
      .catch((e) => window.alert("Directions request failed due to " + e));
    // // Định nghĩa các điểm cần tính khoảng cách
    // const origins = [point1];
    // const destinations = [point2];

    // // Gửi yêu cầu tính khoảng cách
    // service.getDistanceMatrix(
    //   {
    //     origins: origins,
    //     destinations: destinations,
    //     travelMode: "DRIVING", // Chọn travel mode phù hợp, ví dụ: DRIVING, BICYCLING, WALKING
    //     unitSystem: google.maps.UnitSystem.METRIC,
    //   },
    //   (response, status) => {
    //     if (status === "OK") {
    //       const distance = response.rows[0].elements[0].distance.text;
    //       console.log("Khoảng cách:", distance);
    //     } else {
    //       console.error("Lỗi khi tính khoảng cách:", status);
    //     }
    //   }
    // );
  },
};
