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)); }
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)); }
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); }