public async Task <BusStopViewModel> GetBusStop(int id, DateTime now) { var busStop = await Context.BusStops.ProjectTo <BusStopViewModel>().FirstOrDefaultAsync(x => x.Id == id); var buses = await Context.StopsOrdered.Where(x => x.BusStopId == busStop.Id).Include(x => x.Bus).ToArrayAsync(); busStop.Buses = new PartialBusView[buses.Length]; for (int i = 0; i < buses.Length; i++) { var busName = buses[i].Bus.BusName; int delay = buses[i].Delay; var departureTimes = Context.DepartureTimes.Where(x => x.BusId == buses[i].BusId).Select(x => x.Departuretime); int smallest = -1; int nowInt = DelaysUtlility.ConvertDateTimeToInt(now); foreach (var departureTime in departureTimes) { int addition = DelaysUtlility.DelayAddition(delay, departureTime); if (addition > nowInt) { if (smallest == -1) { smallest = addition; } else { if (smallest > addition) { smallest = addition; } } } } if (smallest == -1) { busStop.Buses[i] = new PartialBusView() { BusName = busName, Arival = "No information", Delay = "No information" }; } else { busStop.Buses[i] = new PartialBusView() { BusName = busName, Arival = DelaysUtlility.DelayToStringWithoutSeconds(smallest), Delay = DelaysUtlility.DelayToInformationString(DelaysUtlility.DelaysSubstract(smallest, nowInt)) }; } } return(busStop); }
public async Task <Collection <string> > GetBusDepartureTimes(int id) { var departureTimes = await Context.DepartureTimes .Where(d => d.BusId == id) .OrderBy(x => x.Departuretime) .Select(x => DelaysUtlility.DelayToStringWithoutSeconds(x.Departuretime)) .ToArrayAsync(); return(new Collection <string>() { Value = departureTimes }); }
public async Task <int> CreateBus(BusBindingModel busBindingModel) { var bus = new Bus() { BusName = busBindingModel.BusName }; bus = Context.Busses.Add(bus).Entity; int result = await Context.SaveChangesAsync(); foreach (var busStop in busBindingModel.BusStops) { StopOrdered stopOrdered = new StopOrdered() { BusId = bus.Id, BusStopId = busStop.StopId, }; stopOrdered.Delay = DelaysUtlility.ParseDelay(busStop.Delay, "00:00:00"); Context.StopsOrdered.Add(stopOrdered); } for (int i = 0; i < busBindingModel.BusStops.Length - 1; i++) { var c = busBindingModel.BusStops[i]; for (int j = i + 1; j < busBindingModel.BusStops.Length; j++) { var c1 = busBindingModel.BusStops[j]; StopAccessibility stopAccessibility = new StopAccessibility() { BusId = bus.Id, InitialStopId = c.StopId, DestStopId = c1.StopId }; Context.StopsAccessibility.Add(stopAccessibility); } } DepartureTime departureTime = new DepartureTime(); foreach (var time in busBindingModel.DepartureTimes) { departureTime.Departuretime = DelaysUtlility.ParseDelay(time, "00:00"); departureTime.BusId = bus.Id; Context.DepartureTimes.Add(departureTime); } await Context.SaveChangesAsync(); return(bus.Id); }