Exemplo n.º 1
0
        public async Task <IHttpActionResult> CreateTrip(TripReadModel model)
        {
            var waypoints = model.WayPoints.Select(w => w.Place).ToList();

            waypoints.Insert(0, model.StartPoint);

            waypoints.Add(model.EndPoint);

            DistanseMatrixResponseModel distanseMatrixModel = await _distanceMatrixQuery.GetDistanceMatrix(waypoints);

            if (!distanseMatrixModel.Validate())
            {
                throw new ApplicationException("Invalid response from distanse matrix API");
            }

            double[,] matrix = distanseMatrixModel.ToArray();

            var route = _routeService.CalculateRoute(matrix, 0, waypoints.Count - 1, model.Algorithm);
            var trip  = model.ToEntity();

            _context.Trips.Add(trip);
            await _context.SaveChangesAsync();

            return(Ok(route));
        }
Exemplo n.º 2
0
        public static Trip ToEntity(this TripReadModel model)
        {
            var intermidiatePoints = model.WayPoints.Select(_ => _.Place.ToIntermediatePoint()).ToList();

            intermidiatePoints.Add(model.StartPoint.ToIntermediatePoint(true));
            intermidiatePoints.Add(model.EndPoint.ToIntermediatePoint(false, true));

            return(new Trip()
            {
                DepartureDate = model.DepartureDate,
                Price = model.Price,
                IntermediatePoints = intermidiatePoints
            });
        }