import 'dart:convert';
import 'package:get/get.dart';
import 'package:http/http.dart' as http;
import 'package:gifunavi/model/destination.dart';
import 'package:gifunavi/pages/destination/destination_controller.dart';

class MatrixService {
  static Future<Map<String, dynamic>> getDestinations(
      List<Destination> destinations) async {
    final DestinationController destinationController =
        Get.find<DestinationController>();

    String locs = "";
    String origin = "";
    String destination = "";
    int i = 0;
    for (Destination d in destinations) {
      //print("---- getting matrix for $d ------------");

      if (i == 0) {
        origin = "${d.lat}, ${d.lon}";
        i++;
        continue;
      }

      if (i == (destinations.length - 1)) {
        destination = "${d.lat}, ${d.lon}";
        i++;
        continue;
      }

      //print("lat is ${d.lat}, long is ${d.lon}");
      locs += "${d.lat}, ${d.lon}|";
      i++;
    }

    locs = "optimize:false|$locs";

    String mode = "walking";
    switch (destinationController.travelMode.value) {
      case 1:
        mode = "driving";
        break;
      case 2:
        mode = "transit";
        break;
      default:
        mode = "walking";
        break;
    }

    Map<String, dynamic> cats = {};
    String url =
        "https://maps.googleapis.com/maps/api/directions/json?destination=$destination&mode=$mode&waypoints=$locs&origin=$origin&key=AIzaSyCN2xFsqFyadWwpjiFxymrxzS6G1tNzraI";
    //print('++++++++$url');
    final http.Response response =
        await http.get(Uri.parse(url), headers: <String, String>{
      'Content-Type': 'application/json; charset=UTF-8',
    });

    if (response.statusCode == 200) {
      cats = json.decode(utf8.decode(response.bodyBytes));
    }
    return cats;
  }
}
