Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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
            });
        }
Exemplo n.º 3
0
        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);
        }