Beispiel #1
0
        public IEnumerable <TravelPlan> GetTravelPlans(TravelOptions travelOptions)
        {
            var source      = travelOptions.Source;
            var destination = travelOptions.Destination;

            ValidateLocations(source, destination);

            var startDate = travelOptions.StartDate ?? DateTime.Now;
            var graph     = _graphBuilder.GetGraph(startDate);

            // Get the names of the closest stops by location coordinates
            if (string.IsNullOrEmpty(source.Name) || string.IsNullOrEmpty(destination.Name))
            {
                UpdatedLocationsWithNamesOfTheClosestStops(source, destination, graph);
            }

            // Get available paths from source to destination
            var availablePaths = _pathProvider.GetAvailablePaths(graph, source, destination);

            availablePaths.ForEach(p => p.StartDate = startDate);
            var travelPlans  = _mapper.Map <List <TravelPlan> >(availablePaths);
            var travelPlanId = 1;

            travelPlans?.ForEach(t =>
            {
                t.Id = travelPlanId;
                travelPlanId++;
            });

            return(travelPlans?.OrderBy(t => t.Transfers).ThenBy(t => t.StartTime).ThenBy(t => t.Duration));
        }
        public IActionResult TravelOptions(TravelOptionsVm vm)
        {
            vm.Accommodation = _accommodationDetailVmConverter.ModelToViewModel(_accommodationRepo.GetById(vm.AccommodationId));
            TravelOptions to = _travelOptionsVmConverter.ViewModelToModel(vm);

            if (!ModelState.IsValid)
            {
                return(PartialView(vm));
            }
            if (vm.Children == 0 && vm.Rooms > 1)
            {
                ModelState.AddModelError("Volwassenen in een kamer", "Volwassenen moeten een kamer delen");
                return(PartialView(vm));
            }
            else if (vm.Children == 1 && vm.Rooms != 2)
            {
                ModelState.AddModelError("Volwassenen met een kind", "Volwassenen moeten een kamer delen en een kind moet op een aparte kamer");
                return(PartialView(vm));
            }
            else if (vm.Children == 2 && vm.Rooms < 2)
            {
                ModelState.AddModelError("Volwassenen met een kind", "Volwassenen moeten een kamer delen en een kind moet op een aparte kamer");
                return(PartialView(vm));
            }

            _session.SetObjectAsJson("TravelOptions", to);
            _session.SetObjectAsJson("TravelOptionsVm", vm);
            return(RedirectToAction("Receipt", to));
        }
        public TravelOptions ViewModelToModel(TravelOptionsVm vm)
        {
            TravelOptions to = new TravelOptions(vm.AccommodationId, vm.SelectDate, vm.Children, vm.Rooms);

            to.TravelPartners = to.Adults + to.Children;
            return(to);
        }
Beispiel #4
0
        public async Task <IEnumerable <TravelOptions> > Get(string origin, string destination)
        {
            MotoristaBusiness  motoristaBusiness  = new MotoristaBusiness();
            BestRoutesBusiness bestRoutesBusiness = new BestRoutesBusiness();

            MotoristaPreferencias motoristaPreferencias = motoristaBusiness.GetPreferencias(string.Empty);

            List <TravelOptions> lsjson     = new List <TravelOptions>();
            List <Options>       bestRoutes = await bestRoutesBusiness.GetBestRoutes(origin, destination, motoristaPreferencias);

            if (bestRoutes.Any())
            {
                foreach (var br in bestRoutes)
                {
                    TravelOptions json = new TravelOptions();

                    json.Status = "Rota encontrada";

                    lsjson.Add(json);
                }
            }
            else
            {
                TravelOptions json = new TravelOptions();
                json.Status = "Rota não encontrada.";

                lsjson.Add(json);
            }

            return(lsjson);
        }
        public IActionResult Receipt()
        {
            TravelOptionsVm vm = new TravelOptionsVm();

            if (_session.GetObjectFromJson <TravelOptions>("TravelOptions") != null)
            {
                TravelOptions to = (_session.GetObjectFromJson <TravelOptions>("TravelOptions"));
                vm = _travelOptionsVmConverter.ModelTViewoModel(to);
                vm.Accommodation = _accommodationDetailVmConverter.ModelToViewModel(_accommodationRepo.GetById(to.AccommodationId));
            }

            return(PartialView(vm));
        }
        public IActionResult TravelOptions(int id, string bookingsdate)
        {
            ViewData["Description"] = (string)ContentHandler.GetJson <string>("TravelCompanyPickerDescription");
            TravelOptions to = new TravelOptions(id, Convert.ToDateTime(bookingsdate));

            if (_session.GetObjectFromJson <TravelOptions>("TravelOptions") != null)
            {
                to = (_session.GetObjectFromJson <TravelOptions>("TravelOptions"));
                to.AccommodationId = id;
                to.Date            = Convert.ToDateTime(bookingsdate);
            }
            TravelOptionsVm vm = _travelOptionsVmConverter.ModelTViewoModel(to);

            vm.Accommodation = _accommodationDetailVmConverter.ModelToViewModel(_accommodationRepo.GetById(id));
            return(PartialView(vm));
        }
Beispiel #7
0
        public void TestIfGetTravelPlansThrowsExceptionWhenSourceLocationNameIsEmpty()
        {
            // Arrange
            var source        = new Location();
            var destination   = new Location("B");
            var travelOptions = new TravelOptions
            {
                Source      = source,
                Destination = destination
            };

            // Act
            _travelPlanService.GetTravelPlans(travelOptions);

            // Assert
            _graphBuilderMock.Verify(p => p.GetGraph(It.IsAny <DateTime>(), It.IsAny <CoordinateLimits>()), Times.Never);
            _pathProviderMock.Verify(p => p.GetAvailablePaths(It.IsAny <Graph <int, StopTimeInfo> >(), It.IsAny <Location>(), It.IsAny <Location>()), Times.Never);
        }
Beispiel #8
0
 public IEnumerable <TravelPlan> Get([FromBody] TravelOptions travelOptions)
 {
     return(_travelPlanService.GetTravelPlans(travelOptions));
 }
Beispiel #9
0
        public void TestIfGetTravelPlansCorrectlySelectsNamesForLocations()
        {
            // Arrange
            var source        = new Location(12.1, 11.2);
            var destination   = new Location(24.2, 42.4);
            var travelOptions = new TravelOptions
            {
                Source      = source,
                Destination = destination
            };

            var stopTimes = new List <StopTimeInfo>
            {
                new StopTimeInfo()
                {
                    Id            = 1,
                    StopId        = 1,
                    DepartureTime = TimeSpan.FromHours(12),
                    StopDto       = new StopDto()
                    {
                        Id        = 1,
                        Latitude  = 10.1,
                        Longitude = 11.0,
                        Name      = "First"
                    }
                },
                new StopTimeInfo()
                {
                    Id            = 2,
                    StopId        = 2,
                    DepartureTime = TimeSpan.FromHours(12),
                    StopDto       = new StopDto()
                    {
                        Id        = 2,
                        Latitude  = 20.2,
                        Longitude = 21.2,
                        Name      = "Second"
                    }
                },
                new StopTimeInfo()
                {
                    Id            = 3,
                    StopId        = 3,
                    DepartureTime = TimeSpan.FromHours(12),
                    StopDto       = new StopDto()
                    {
                        Id        = 3,
                        Latitude  = 12.1,
                        Longitude = 11.2,
                        Name      = "Third"
                    }
                },
                new StopTimeInfo()
                {
                    Id            = 4,
                    StopId        = 4,
                    DepartureTime = TimeSpan.FromHours(12),
                    StopDto       = new StopDto()
                    {
                        Id        = 4,
                        Latitude  = 24.2,
                        Longitude = 42.4,
                        Name      = "Fourth"
                    }
                }
            };

            var graph = new Graph <int, StopTimeInfo>();

            graph.AddNodes(stopTimes);

            _graphBuilderMock.Setup(p => p.GetGraph(It.IsAny <DateTime>(), It.IsAny <CoordinateLimits>()))
            .Returns(graph);

            _pathProviderMock.Setup(p => p.GetAvailablePaths(graph, It.Is <Location>(l => l.Name == "Third"), It.Is <Location>(l => l.Name == "Fourth")))
            .Returns(new List <Path <StopTimeInfo> >());

            _mapper.Setup(p => p.Map <List <TravelPlan> >(It.IsAny <List <Path <StopTimeInfo> > >()))
            .Returns(new List <TravelPlan>());

            // Act
            var result = _travelPlanService.GetTravelPlans(travelOptions);

            // Assert
            _graphBuilderMock.Verify(p => p.GetGraph(It.IsAny <DateTime>(), It.IsAny <CoordinateLimits>()), Times.Once);
            _graphBuilderMock.Verify(p => p.GetGraph(It.Is <DateTime>(d => d < DateTime.Now), null), Times.Once);
            _pathProviderMock.Verify(p => p.GetAvailablePaths(It.IsAny <Graph <int, StopTimeInfo> >(), It.IsAny <Location>(), It.IsAny <Location>()), Times.Once);
            _pathProviderMock.Verify(p => p.GetAvailablePaths(graph, It.Is <Location>(l => l.Name == "Third"), It.Is <Location>(l => l.Name == "Fourth")), Times.Once);

            Assert.IsNotNull(result);
        }
 public TravelOptionsVm ModelTViewoModel(TravelOptions to)
 {
     return(new TravelOptionsVm(to.AccommodationId, to.Children, to.Rooms, to.Date));
 }