public void FillRemainingWays()
        {
            var rnd    = new Random();
            var orsKey = Environment.GetEnvironmentVariable("open-route-service-key");
            var openRouteServiceCalculator =
                new GeoCalculations.RouteCalculation.OpenRouteServiceCalculator(orsKey);

            using (var dbSession = SessionFactory.Instance.OpenSession())
            {
                var fromVisits = dbSession.Query <Visit>().Where(v => v.Year == 2018 && v.Id == 133)

                                 .ToArray();
                var toVisits = dbSession.Query <Visit>().Where(v => v.Year == 2018 && v.Id == 108)
                               .ToArray();
                foreach (var fromVisit in fromVisits)
                {
                    foreach (var toVisit in toVisits)
                    {
                        var(distance, duration) = openRouteServiceCalculator.CalculateWalkingDistance((fromVisit.Lat, fromVisit.Long),
                                                                                                      (toVisit.Lat, toVisit.Long));
                        var way = new Way
                        {
                            Distance = (int)Math.Ceiling(distance),
                            Duration = (int)Math.Ceiling(duration),
                            From     = fromVisit,
                            To       = toVisit
                        };
                        dbSession.Save(way);
                        Thread.Sleep((int)(300 + rnd.NextDouble() * 100));
                    }
                }
            }
        }
        public void CallDistanceMatrixFunctionality()
        {
            var orsKey = Environment.GetEnvironmentVariable("open-route-service-key");
            var openRouteServiceCalculator =
                new GeoCalculations.RouteCalculation.OpenRouteServiceCalculator(orsKey);

            using (var dbSession = SessionFactory.Instance.OpenSession())
            {
                var visits      = dbSession.Query <Visit>().Where(v => v.Year == 2018).ToArray();
                var coordinates = visits.Select(v => (v.Lat, v.Long)).ToArray();
                var(distance, duration) = openRouteServiceCalculator.CalculateWalkingDistanceMatrix(coordinates);
                System.IO.File.WriteAllText("distances.txt", JsonConvert.SerializeObject(distance));
                System.IO.File.WriteAllText("durations.txt", JsonConvert.SerializeObject(duration));
                for (int i = 0; i < coordinates.Length; i++)
                {
                    for (int j = 0; j < coordinates.Length; j++)
                    {
                        visits[i].ToWays.Add(new Way
                        {
                            Distance = (int)Math.Ceiling(distance[i, j]),
                            Duration = (int)Math.Ceiling(duration[i, j]),
                            From     = visits[i],
                            To       = visits[j]
                        });
                    }
                    dbSession.Update(visits[i]);
                }
            }
        }