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); }
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)); }
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); }
public IEnumerable <TravelPlan> Get([FromBody] TravelOptions travelOptions) { return(_travelPlanService.GetTravelPlans(travelOptions)); }
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)); }