public void AddStopToTripTestEndDateField() { // Arrange var user = new User(); var repo = new FakeTripRepository(); Trip trip = new Trip() { TripName = "Trip Test 1", TripStartDate = DateTime.Parse("01 / 01 / 1990"), TripEndDate = DateTime.Parse("01 / 02 / 1990"), TripDestination = "Canada" }; TripStop stop = new TripStop() { StopName = "Stop 1", StopBegin = DateTime.Parse("01 / 01 / 1990"), StopEnd = DateTime.Parse("01 / 02 / 1990") }; //Act repo.AddStopToTrip(trip, stop); //Assert Assert.Equal(DateTime.Parse("01 / 02 / 1990"), trip.TripStops[0].StopEnd); }
/// <summary> /// Called when the user selects a new stop. /// </summary> public void SelectNewStop(TripStop stop) { // This stop is already selected: if (this.selectedStop != null && string.Equals(this.selectedStop.StopId, stop.StopId, StringComparison.OrdinalIgnoreCase)) { return; } this.SelectStop(stop.StopId); var stopSelected = this.StopSelected; if (stopSelected != null) { stopSelected(this, new StopSelectedEventArgs(stop.Name, stop.StopId, stop.Direction, stop.Latitude, stop.Longitude)); } }
/// <summary> /// Selects a stop. /// </summary> public void SelectStop(string stopId) { if (selectedStop != null) { selectedStop.IsSelectedStop = false; } this.selectedStop = (from tripStop in this.tripDetails.TripStops where string.Equals(stopId, tripStop.StopId, StringComparison.OrdinalIgnoreCase) select tripStop).FirstOrDefault(); this.SelectedStopId = stopId; if (this.selectedStop != null) { this.selectedStop.IsSelectedStop = true; } }
/// <summary> /// Scrolls to a specific trip stop. /// </summary> private void ScrollToTripStop(TripStop tripStop) { if (tripStop != null) { var contentPresenter = this.itemsControl.ContainerFromItem(tripStop) as ContentPresenter; if (contentPresenter != null) { ScrollViewer scrollViewer = ControlUtilities.GetParent <ScrollViewer>(this.Parent); if (scrollViewer != null) { // So now we need to find where this stop is in the control: var transform = contentPresenter.TransformToVisual(scrollViewer); var point = transform.TransformPoint(new Windows.Foundation.Point(0, 0)); double newVerticalOffset = point.Y + scrollViewer.VerticalOffset; scrollViewer.ChangeView(null, newVerticalOffset, null); } } } }
/// <summary> /// Called when the datatemplate in the itemscontrol loads. Here, we see whether the bound /// TripStop is selected or not, and if it is, we then scroll to it. /// </summary> private void OnItemsControlTemplateLoaded(object sender, RoutedEventArgs e) { Grid grid = (Grid)sender; TripTimelineControlViewModel viewModel = (TripTimelineControlViewModel)this.DataContext; // Scroll to where the bus is, if we can. Otherwise, scroll to the selected stop: var closestStop = (from tripStop in viewModel.TripDetails.TripStops where tripStop.IsClosestStop select tripStop).FirstOrDefault(); if (closestStop != null) { this.ScrollToTripStop(closestStop); } else { TripStop tripStop = grid.DataContext as TripStop; if (tripStop != null && tripStop.IsSelectedStop) { this.ScrollToTripStop(tripStop); } } }
public void AddStopToTrip(Trip trip, TripStop tripStop) { trip.TripStops.Add(tripStop); }
public List <DetailedSearchResult> SearchQueryResult(SearchQuery sq) { List <DetailedSearchResult> detailedSearchResults = new List <DetailedSearchResult>(); List <SearchResult> searchResults = new List <SearchResult>(); List <Place> DepStops = db.Places.Where(p => p.City == sq.FromCity).ToList(); List <Place> ArrStops = db.Places.Where(p => p.City == sq.ToCity).ToList(); List <TripStop> DeptripStops = new List <TripStop>(); List <TripStop> ArrtripStops = new List <TripStop>(); foreach (var depStop in DepStops) { List <TripStop> ValidDepStops = db.TripStops.Where(stop => stop.Stop == depStop.Code && stop.Trip.Status == "Scheduled" && stop.DepartureTime.Year == sq.DepDate.Year && stop.DepartureTime.Month == sq.DepDate.Month && stop.DepartureTime.Day == sq.DepDate.Day).ToList(); DeptripStops.AddRange(ValidDepStops); } if (DeptripStops.Count == 0) { return(detailedSearchResults); } foreach (var arrStop in ArrStops) { List <TripStop> ValidArrStops = db.TripStops.Where(stop => stop.Stop == arrStop.Code && stop.Trip.Status == "Scheduled" && stop.ArrivalTime.Year >= sq.DepDate.Year && stop.ArrivalTime.Month >= sq.DepDate.Month && stop.ArrivalTime.Day >= sq.DepDate.Day).ToList(); ArrtripStops.AddRange(ValidArrStops); } if (ArrtripStops.Count == 0) { return(detailedSearchResults); } List <List <TripStop> > lists = new List <List <TripStop> >(); lists.Add(DeptripStops); lists.Add(ArrtripStops); foreach (var deptripStop in DeptripStops) { foreach (var ArrtripStop in ArrtripStops) { if (deptripStop.TripId == ArrtripStop.TripId) { int tripId = deptripStop.TripId; Trip trip = db.Trips.Where(t => t.Id == tripId).First(); if (deptripStop.DepartureTime < ArrtripStop.ArrivalTime) { List <Booking> bookings = db.Bookings.Where(b => b.TripId == trip.Id && b.Status == "booked").ToList(); int SeatAvailable = trip.Bus.Seats; List <int> seatsBooked = new List <int>(); if (bookings.Count != 0) { // Find Seats available in this trip foreach (Booking booking in bookings) { TripStop BookingStartStop = db.TripStops.Where(ts => ts.TripId == booking.TripId && ts.Stop == booking.Boarding).First(); TripStop BookingEndStop = db.TripStops.Where(ts => ts.TripId == booking.TripId && ts.Stop == booking.Arrival).First(); if (!((deptripStop.DepartureTime < BookingStartStop.ArrivalTime && ArrtripStop.ArrivalTime <= BookingStartStop.ArrivalTime) || (deptripStop.ArrivalTime >= BookingEndStop.ArrivalTime && ArrtripStop.ArrivalTime > BookingEndStop.DepartureTime))) { SeatAvailable -= db.PassengerDetails.Where(p => p.BookingID == booking.BookingID).Count(); seatsBooked.AddRange(db.PassengerDetails.Where(p => p.BookingID == booking.BookingID).Select(x => x.Seat).ToList()); } } } if (SeatAvailable > 0) { DetailedSearchResult detailed; if (detailedSearchResults.Any(d => d.BusDetails.Id == trip.Bus.Id)) { detailed = detailedSearchResults.Where(d => d.BusDetails.Id == trip.BusID).First(); } else { detailed = new DetailedSearchResult(); detailed.Searches = new List <SearchResult>(); detailedSearchResults.Add(detailed); detailed.BusDetails = trip.Bus; } SearchResult searchResult = new SearchResult(); searchResult.FromStop = deptripStop; searchResult.ToStop = ArrtripStop; searchResult.SeatAvailable = SeatAvailable; searchResult.SeatsBooked = seatsBooked; double startKm = db.Stops.Where(stop => stop.Stop1 == deptripStop.Stop && stop.RouteID == trip.RouteID).First().DistanceFromOrigin; double endKm = db.Stops.Where(stop => stop.Stop1 == ArrtripStop.Stop && stop.RouteID == trip.RouteID).First().DistanceFromOrigin; searchResult.CostperSeat = (int)Math.Ceiling(trip.CostPerKm * (endKm - startKm)); //searchResult.BusDetails = trip.Bus; searchResult.DurationHours = (ArrtripStop.ArrivalTime - deptripStop.DepartureTime).Hours; searchResult.DurationMins = (ArrtripStop.ArrivalTime - deptripStop.DepartureTime).Minutes; detailed.Searches.Add(searchResult); detailed.Trip = trip; searchResults.Add(searchResult); } } } } } //var xyz = searchResults.DistinctBy(s => s.BusDetails.Id); return(detailedSearchResults); //return lists; }
public void AddStopToTrip(Trip trip, TripStop tripStop) { trip.TripStops.Add(tripStop); context.Trips.Update(trip); context.SaveChanges(); }