Exemple #1
0
        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);
        }
Exemple #2
0
        /// <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));
            }
        }
Exemple #3
0
        /// <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();
 }