private Tgvs BestTgv(IEnumerable <Tgvs> tgvs, TimeSpan time) { Tgvs bestTgv = null; foreach (Tgvs tgv in tgvs) { if ((bestTgv == null && tgv.TimeOfDeparture.CompareTo(time) >= 0) || (bestTgv != null && tgv.TimeOfDeparture.CompareTo(bestTgv.TimeOfDeparture) < 0)) { bestTgv = tgv; } } return(bestTgv); }
private Tgvs EarliestTgv(IEnumerable <Tgvs> tgvs) { TimeSpan earliestTime = new TimeSpan(24, 0, 0); Tgvs earliestTgv = null; foreach (Tgvs t in tgvs) { if (earliestTime.CompareTo(t.TimeOfDeparture) > 0) { earliestTgv = t; earliestTime = t.TimeOfDeparture; } } return(earliestTgv); }
public IList <Tgvs> GetJourney(int departureId, int destinationId, DateTime dateOfDeparture) { IList <Lines> route = lineService.GetRoute(departureId, destinationId); IList <Tgvs> journey = new List <Tgvs>(); TimeSpan fullDay = new TimeSpan(24, 0, 0); foreach (Lines l in route) { Tgvs tgv = GetJourney(l, dateOfDeparture); tgv.LineNavigation = l; journey.Add(tgv); dateOfDeparture = dateOfDeparture.Date.Add(tgv.TimeOfDeparture.Add(tgv.LineNavigation.Duration)); } return(journey); }
public Tgvs GetJourney(Lines line, DateTime dateOfDeparture) { IEnumerable <Tgvs> tgvs = GetWithLine(line.Id); Tgvs bestTgv = BestTgv(tgvs, dateOfDeparture.TimeOfDay); if (bestTgv == null) { return(EarliestTgv(tgvs)); } IEnumerable <HolidayPeriods> holidayPeriods = holidayPeriodService.All(); foreach (HolidayPeriods h in holidayPeriods) { if (h.StartDate.CompareTo(dateOfDeparture) <= 0 && h.EndDate.CompareTo(dateOfDeparture) >= 0) { bestTgv.AvailableBusinessSeats = (int)(bestTgv.AvailableBusinessSeats * (1 + h.ExtraSeatsPercent)); bestTgv.AvailableEconomicSeats = (int)(bestTgv.AvailableEconomicSeats * (1 + h.ExtraSeatsPercent)); bestTgv.BasePriceBusiness *= 1 + h.ExtraPricePercent; bestTgv.BasePriceEconomic *= 1 + h.ExtraPricePercent; } } IEnumerable <Tickets> tickets = ticketDAO.AllForTGV(bestTgv.Id, dateOfDeparture); foreach (Tickets t in tickets) { if (t.IsCancelled == 0) { if (t.IsBusiness == 0) { bestTgv.AvailableBusinessSeats--; } else { bestTgv.AvailableEconomicSeats--; } } } return(bestTgv); }