Exemplo n.º 1
0
        public IActionResult BusDisplay()
        {
            BusDisplayViewModel model = new BusDisplayViewModel();

            model.UserLocation   = TempData["UserLocation"].ToString();
            model.ClosestBusStop = TempData["ClosestBusStop"].ToString();

            string currentTime = DateTime.Now.ToString("hh:mm:ss");

            //get list of all available buses
            List <string> busList = new List <string>();

            busList.Add("10");
            busList.Add("15");
            busList.Add("16");
            busList.Add("19");
            busList.Add("20");

            //from SQL DB for each bus stop, get next arrival time
            using (var db = new SlugContext())
            {
                foreach (var item in busList)
                {
                    //create new Schedule instance for each bus line
                    //for each bustop in that line, find nearest time
                    //add each Schedule to model.BusData list
                }
            }

            return(View(model));
        }
Exemplo n.º 2
0
        public IActionResult BusDisplay(string lat, string lon, string nearestBusStop)
        {
            BusDisplayViewModel model = new BusDisplayViewModel();

            model.UserLatitude   = lat;
            model.UserLongitude  = lon;
            model.ClosestBusStop = nearestBusStop;
            model.BusData        = new List <ArrivalData>();


            var          utcTime     = DateTime.UtcNow;
            TimeZoneInfo pacificZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
            DateTime     pacificTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, pacificZone);
            var          currentTime = pacificTime.ToString("HH:mm:ss");

            //get list of all available buses
            List <int> busList = new List <int>();

            busList.Add(10);
            busList.Add(15);
            busList.Add(16);
            busList.Add(19);
            busList.Add(20);

            //from SQL DB for each bus stop, get next arrival time
            using (var db = new SlugContext())
            {
                foreach (var item in busList)
                {
                    ArrivalData data = new ArrivalData();

                    //Dynamically Choose Fields
                    string fields = "CurrentStatus,BusNumber,Street,ID," + model.ClosestBusStop;

                    //select

                    var e = db.Schedules
                            .Where(m => m.BusNumber == item && TimeSpan.Parse(m.Base) >= TimeSpan.Parse(currentTime))
                            .Select(DynamicSelectGenerator <Schedule>(fields))
                            .FirstOrDefault();

                    if (e == null)
                    {
                        e = db.Schedules
                            .Where(m => m.BusNumber == item && TimeSpan.Parse(m.Base) >= TimeSpan.Parse("07:30:00"))
                            .Select(DynamicSelectGenerator <Schedule>(fields))
                            .FirstOrDefault();
                    }

                    Type           type  = typeof(Schedule);
                    PropertyInfo[] pList = type.GetProperties();
                    foreach (PropertyInfo p in pList)
                    {
                        if (p.GetValue(e) != null)
                        {
                            if (p.Name == "Street")
                            {
                                data.Street = e.Street;
                            }
                            else if (p.Name == "BusNumber")
                            {
                                data.BusNumber = item.ToString();
                            }
                            else if (p.Name == "ID")
                            {
                                data.ID = e.ID;
                            }
                            else if (p.Name == "CurrentStatus")
                            {
                                data.CurrentStatus = e.CurrentStatus;
                            }
                            else
                            {
                                if (p.Name != "LowCapacity" && p.Name != "MediumCapacity" && p.Name != "HighCapacity" && p.Name != "CurrentStatus")
                                {
                                    data.ArrivalTime1 = p.GetValue(e).ToString();

                                    string timed = p.GetValue(e).ToString();
                                    timed = timed.Remove(timed.Length - 3); //removed seconds


                                    string timed1 = timed.Substring(0, 2);
                                    int    h1     = Int32.Parse(timed1);

                                    if (h1 > 12)
                                    {
                                        h1 = h1 - 12;
                                        data.ArrivalTime = h1.ToString() + timed.Substring(2) + (" PM");
                                    }
                                    else
                                    {
                                        data.ArrivalTime = timed + (" AM");
                                    }
                                }
                            }
                        }
                    }

                    if (data.ArrivalTime != "0" && !string.IsNullOrEmpty(data.ArrivalTime))
                    {
                        model.BusData.Add(data);
                    }
                }
            }

            return(View("BusDisplay", model));
        }
Exemplo n.º 3
0
        public string UpdateBusCapacity(string userStatusInput, int ID)
        {
            string currenStatus;

            int busCapacityUpdateAmount;

            if (userStatusInput == "low")
            {
                busCapacityUpdateAmount = 1;
            }
            else if (userStatusInput == "medium")
            {
                busCapacityUpdateAmount = 3;
            }
            else
            {
                busCapacityUpdateAmount = 5;
            }

            using (var db = new SlugContext())
            {
                Schedule result = (Schedule)db.Schedules.Where(j => j.ID == ID).FirstOrDefault();
                if (result != null)
                {
                    if (userStatusInput == "low")
                    {
                        result.LowCapacity += busCapacityUpdateAmount;
                    }
                    else if (userStatusInput == "medium")
                    {
                        result.MediumCapacity += busCapacityUpdateAmount;
                    }
                    else
                    {
                        result.HighCapacity += busCapacityUpdateAmount;
                    }

                    if (result.LowCapacity > result.MediumCapacity)
                    {
                        if (result.LowCapacity > result.HighCapacity)
                        {
                            result.CurrentStatus = "low";
                        }
                        else
                        {
                            result.CurrentStatus = "high";
                        }
                    }
                    else
                    {
                        if (result.MediumCapacity > result.HighCapacity)
                        {
                            result.CurrentStatus = "medium";
                        }
                        else
                        {
                            result.CurrentStatus = "high";
                        }
                    }
                }

                currenStatus = result.CurrentStatus;
                db.SaveChanges();
            }

            return(currenStatus);
        }