private bool HasTruckChanged(ref UITowTruck truck, TowTruckData serviceTowTruck) { var returnValue = false; if (truck.Lat != serviceTowTruck.Lat) { returnValue = true; } if (truck.Lon != serviceTowTruck.Lon) { returnValue = true; } if (truck.Speed != serviceTowTruck.Speed) { returnValue = true; } if (truck.Heading != serviceTowTruck.Heading) { returnValue = true; } if (truck.Heading != serviceTowTruck.Heading) { returnValue = true; } if (truck.BeatNumber != serviceTowTruck.BeatNumber.ToString()) { returnValue = true; } if (truck.LastMessage != serviceTowTruck.LastMessage.ToString()) { returnValue = true; } if (truck.DriverName != serviceTowTruck.DriverName.ToString()) { returnValue = true; } if (truck.ContractorName != serviceTowTruck.ContractorName.ToString()) { returnValue = true; } if (truck.Location != serviceTowTruck.Location.ToString()) { returnValue = true; } return(returnValue); }
public void UpdateAllTrucks() { UITowTruck truck = null; int iTruckUpdatesCount = 0; int iTruckDeleteCount = 0; try { TowTruckData[] serviceTowTrucks = GetAllTrucksInService(); var hasTruckChanged = false; var isTruckNew = false; lock (towTrucks) { for (int i = 0; i < serviceTowTrucks.Length; i++) { try { TowTruckData serviceTowTruck = serviceTowTrucks[i]; if (towTrucks.Any(p => p.TruckNumber.ToString() == serviceTowTruck.TruckNumber)) { truck = towTrucks.Single(p => p.TruckNumber == serviceTowTruck.TruckNumber); hasTruckChanged = HasTruckChanged(ref truck, serviceTowTruck); } else { //new tow truck iTruckUpdatesCount += 1; truck = new UITowTruck(); truck.LastUpdate = 0; truck.Old = false; isTruckNew = true; hasTruckChanged = true; } #region Set Truck Properties truck.TruckNumber = serviceTowTruck.TruckNumber == null ? "Not set" : serviceTowTruck.TruckNumber; truck.BeatNumber = serviceTowTruck.BeatNumber == null ? "Not set" : serviceTowTruck.BeatNumber; truck.BeatSegmentNumber = "Not set"; truck.Speed = serviceTowTruck.Speed; truck.Lat = serviceTowTruck.Lat; truck.Lon = serviceTowTruck.Lon; truck.Heading = serviceTowTruck.Heading; truck.LastMessage = serviceTowTruck.LastMessage.ToString(); truck.DriverName = serviceTowTruck.DriverName; truck.ContractorName = serviceTowTruck.ContractorName; truck.Location = serviceTowTruck.Location; #region State truck.VehicleState = serviceTowTruck.VehicleState; if (serviceTowTruck.VehicleState == "Waiting for Driver Login") { truck.VehicleStateIconUrl = "NIS.png"; } else if (serviceTowTruck.VehicleState == "Driver Logged On") { truck.VehicleStateIconUrl = "InService.png"; } else if (serviceTowTruck.VehicleState == "On Patrol") { truck.VehicleStateIconUrl = "InService.png"; } else if (serviceTowTruck.VehicleState == "On Assist") { truck.VehicleStateIconUrl = "OnAssist.png"; } else if (serviceTowTruck.VehicleState == "On Break") { truck.VehicleStateIconUrl = "OnBreak.png"; } else if (serviceTowTruck.Alarms) { if (serviceTowTruck.SpeedingAlarm) { truck.VehicleStateIconUrl = "MajorAlarm.png"; } else if (serviceTowTruck.OutOfBoundsAlarm) { truck.VehicleStateIconUrl = "MajorAlarm.png"; } } else { truck.VehicleStateIconUrl = "OCTA.png"; } #endregion #endregion UpdateTruck(truck, hasTruckChanged, isTruckNew); } catch (Exception ex) { Util.WriteToLog(ex.Message); } } iTruckDeleteCount = CleanupTruckList(iTruckDeleteCount, serviceTowTrucks); Util.WriteToLog(DateTime.Now + "================Server: Total Number of trucks in local list: " + towTrucks.Count()); Util.WriteToLog(DateTime.Now + "================Server: Total Number of trucks updated: " + iTruckUpdatesCount); Util.WriteToLog(DateTime.Now + "================Server: Total Number of trucks deleted: " + iTruckDeleteCount); } } catch (Exception ex) { Util.WriteToLog(ex.Message); } }
void UpdateAllTrucks() { UITowTruck truck = null; int iTruckUpdatesCount = 0; int iTruckDeleteCount = 0; try { Util.WriteToLog(DateTime.Now + " Contacting Service"); TowTruckServiceRef.TowTruckServiceClient service = new TowTruckServiceRef.TowTruckServiceClient(); TowTruckData[] serviceTowTrucks = service.CurrentTrucks(); Util.WriteToLog(DateTime.Now + " " + serviceTowTrucks.Count() + " tow trucks retrieved from Service"); Boolean addTruck = false; Boolean truckHasChanged = false; lock (towTrucks) { for (int i = 0; i < serviceTowTrucks.Length; i++) { try { TowTruckData serviceTowTruck = serviceTowTrucks[i]; //check if this tow truck already exist in list if (towTrucks.Any(p => p.TruckNumber.ToString() == serviceTowTruck.TruckNumber)) { truck = towTrucks.Single(p => p.TruckNumber == serviceTowTruck.TruckNumber); addTruck = false; iTruckUpdatesCount += 1; if (truck.Lat != serviceTowTruck.Lat) { truckHasChanged = true; } if (truck.Lon != serviceTowTruck.Lon) { truckHasChanged = true; } if (truck.Speed != serviceTowTruck.Speed) { truckHasChanged = true; } if (truck.Heading != serviceTowTruck.Heading) { truckHasChanged = true; } if (truck.Heading != serviceTowTruck.Heading) { truckHasChanged = true; } if (truck.BeatNumber != serviceTowTruck.BeatNumber.ToString()) { truckHasChanged = true; } if (truck.LastMessage != serviceTowTruck.LastMessage.ToString()) { truckHasChanged = true; } if (truck.DriverName != serviceTowTruck.DriverName.ToString()) { truckHasChanged = true; } if (truck.ContractorName != serviceTowTruck.ContractorName.ToString()) { truckHasChanged = true; } if (truck.Location != serviceTowTruck.Location.ToString()) { truckHasChanged = true; } } else { //new tow truck iTruckUpdatesCount += 1; truck = new UITowTruck(); truck.LastUpdate = 0; truck.Old = false; addTruck = true; } truck.TruckNumber = serviceTowTruck.TruckNumber == null ? "Not set" : serviceTowTruck.TruckNumber; truck.BeatNumber = serviceTowTruck.BeatNumber == null ? "Not set" : serviceTowTruck.BeatNumber; truck.BeatSegmentNumber = "Not set"; truck.Speed = serviceTowTruck.Speed; truck.Lat = serviceTowTruck.Lat; truck.Lon = serviceTowTruck.Lon; truck.Heading = serviceTowTruck.Heading; truck.LastMessage = serviceTowTruck.LastMessage.ToString(); truck.DriverName = serviceTowTruck.DriverName; truck.ContractorName = serviceTowTruck.ContractorName; truck.Location = serviceTowTruck.Location; #region State truck.VehicleState = serviceTowTruck.VehicleState; if (serviceTowTruck.VehicleState == "Waiting for Driver Login") { truck.VehicleStateIconUrl = "NIS.png"; } else if (serviceTowTruck.VehicleState == "Driver Logged On") { truck.VehicleStateIconUrl = "InService.png"; } else if (serviceTowTruck.VehicleState == "On Patrol") { truck.VehicleStateIconUrl = "InService.png"; } else if (serviceTowTruck.VehicleState == "On Assist") { truck.VehicleStateIconUrl = "OnAssist.png"; } else if (serviceTowTruck.VehicleState == "On Break") { truck.VehicleStateIconUrl = "OnBreak.png"; } else if (serviceTowTruck.Alarms) { if (serviceTowTruck.SpeedingAlarm) { truck.VehicleStateIconUrl = "MajorAlarm.png"; } else if (serviceTowTruck.OutOfBoundsAlarm) { truck.VehicleStateIconUrl = "MajorAlarm.png"; } } else { truck.VehicleStateIconUrl = "OCTA.png"; } #endregion if (addTruck) { towTrucks.Add(truck); //Notify clients about new truck Hub.Clients.addOrUpdateTruck(truck); } else { if (truckHasChanged) { Util.WriteToLog("HUB: Truck " + truck.TruckNumber + " changed "); truck.LastUpdate = 0; //Notify clients about an existing truck only if truck has "changed" Hub.Clients.addOrUpdateTruck(truck); } else { Util.WriteToLog("HUB: NO CHANGES TO " + truck.TruckNumber); truck.LastUpdate += Convert.ToInt32(ConfigurationManager.AppSettings["UpdateIntervalInMilliseconds"]) / 1000; //Notify clients about an existing truck only if truck has "changed" Hub.Clients.updateLastUpdateTime(truck.TruckNumber, truck.LastUpdate, truck.LastMessage); } } } catch (Exception ex) { Util.WriteToLog(ex.Message); } } #region remove try { for (int i = 0; i < towTrucks.Count(); i++) { try { UITowTruck uiTowTruck = towTrucks[i]; if (!serviceTowTrucks.Any(p => p.TruckNumber == uiTowTruck.TruckNumber.ToString())) { iTruckDeleteCount += 1; uiTowTruck.Old = true; //this ui tow truck is not in service any more. so remove it //towTrucks2.Remove(uiTowTruck); //Hub notification Hub.Clients.deleteTruck(uiTowTruck.TruckNumber); } } catch (Exception ex) { Util.WriteToLog(ex.Message); } } towTrucks.RemoveAll(p => p.Old == true); } catch (Exception ex) { Util.WriteToLog(ex.Message); } #endregion Util.WriteToLog(DateTime.Now + "================Server: Total Number of trucks in local list: " + towTrucks.Count()); Util.WriteToLog(DateTime.Now + "================Server: Total Number of trucks updated: " + iTruckUpdatesCount); Util.WriteToLog(DateTime.Now + "================Server: Total Number of trucks deleted: " + iTruckDeleteCount); } } catch (Exception ex) { Util.WriteToLog(ex.Message); } }
public void UpdateAllTrucks() { UITowTruck truck = null; int iTruckUpdatesCount = 0; int iTruckDeleteCount = 0; try { TowTruckData[] serviceTowTrucks = GetAllTrucksInService(); var hasTruckChanged = false; var isTruckNew = false; var addTruck = true; lock (towTrucks) { for (int i = 0; i < serviceTowTrucks.Length; i++) { TowTruckData serviceTowTruck = serviceTowTrucks[i]; if (!String.IsNullOrEmpty(_contractorName)) { if (_contractorName == serviceTowTruck.ContractorName) { addTruck = true; } else { addTruck = false; } } else { addTruck = true; } if (addTruck) { try { if (towTrucks.Any(p => p.TruckNumber.ToString() == serviceTowTruck.TruckNumber)) { truck = towTrucks.Single(p => p.TruckNumber == serviceTowTruck.TruckNumber); hasTruckChanged = HasTruckChanged(ref truck, serviceTowTruck); } else { //new tow truck iTruckUpdatesCount += 1; truck = new UITowTruck(); truck.LastUpdate = 0; truck.Old = false; isTruckNew = true; hasTruckChanged = true; } #region Set Truck Properties truck.TruckNumber = serviceTowTruck.TruckNumber == null ? "Not set" : serviceTowTruck.TruckNumber; truck.BeatNumber = serviceTowTruck.BeatNumber == null ? "Not set" : serviceTowTruck.BeatNumber; truck.BeatSegmentNumber = "Not set"; truck.Speed = serviceTowTruck.Speed; truck.Lat = serviceTowTruck.Lat; truck.Lon = serviceTowTruck.Lon; truck.Heading = serviceTowTruck.Heading; truck.LastMessage = serviceTowTruck.LastMessage.ToString(); truck.DriverName = serviceTowTruck.DriverName; truck.ContractorName = serviceTowTruck.ContractorName; truck.Location = serviceTowTruck.Location; truck.SpeedingTime = serviceTowTruck.SpeedingTime.ToString(); truck.SpeedingValue = serviceTowTruck.SpeedingValue.ToString(); truck.OutOfBoundsMessage = serviceTowTruck.OutOfBoundsMessage; truck.OutOfBoundsTime = serviceTowTruck.OutOfBoundsTime.ToString(); truck.HasAlarm = serviceTowTruck.Alarms; truck.LastMessage = serviceTowTruck.LastMessage.ToShortTimeString(); #region State truck.VehicleState = serviceTowTruck.VehicleState; if (serviceTowTruck.VehicleState == "Waiting for Driver Login") { truck.VehicleStateIconUrl = "TBD.png"; } else if (serviceTowTruck.VehicleState == "Driver Logged On") { truck.VehicleStateIconUrl = "LoggedOn.png"; } else if (serviceTowTruck.VehicleState == "On Patrol") { truck.VehicleStateIconUrl = "OnPatrol.png"; } else if (serviceTowTruck.VehicleState == "On Incident") { truck.VehicleStateIconUrl = "OnAssist.png"; } else if (serviceTowTruck.VehicleState == "On Break" || serviceTowTruck.VehicleState == "On Lunch" || serviceTowTruck.VehicleState == "Roll In" || serviceTowTruck.VehicleState == "Roll Out") { truck.VehicleStateIconUrl = "NIS.png"; } else if (serviceTowTruck.Alarms) { //All alarms red (OnAlarm.pn) expect speeding is yellow truck.VehicleStateIconUrl = "Alarm.png"; if (serviceTowTruck.SpeedingAlarm) { truck.VehicleStateIconUrl = "Speeding.png"; } } #endregion #endregion serviceTowTruck = null; UpdateTruck(truck, hasTruckChanged, isTruckNew); } catch (Exception ex) { Util.WriteToLog(ex.Message, "Error.txt"); } } } iTruckDeleteCount = CleanupTruckList(iTruckDeleteCount, serviceTowTrucks); serviceTowTrucks = null; Util.WriteToLog(DateTime.Now + "================Server: Total Number of trucks in local list: " + towTrucks.Count(), "Update.txt"); Util.WriteToLog(DateTime.Now + "================Server: Total Number of trucks updated: " + iTruckUpdatesCount, "Update.txt"); Util.WriteToLog(DateTime.Now + "================Server: Total Number of trucks deleted: " + iTruckDeleteCount, "Update.txt"); } } catch (Exception ex) { Util.WriteToLog(ex.Message, "Error.txt"); } }
void QueryService() { TowTruck2 truck = null; int iTruckUpdatesCount = 0; int iTruckDeleteCount = 0; try { Util.WriteToLog(DateTime.Now + " Contacting Service"); TowTruckServiceRef.TowTruckServiceClient service = new TowTruckServiceRef.TowTruckServiceClient(); TowTruckData[] serviceTowTrucks = service.CurrentTrucks(); Util.WriteToLog(DateTime.Now + " " + serviceTowTrucks.Count() + " tow trucks retrieved from Service"); Boolean addTruck = false; lock (towTrucks2) { for (int i = 0; i < serviceTowTrucks.Length; i++) { TowTruckData serviceTowTruck = serviceTowTrucks[i]; if (towTrucks2.Any(p => p.TruckId.ToString() == serviceTowTruck.TruckID)) { truck = towTrucks2.Single(p => p.TruckId.ToString() == serviceTowTruck.TruckID); addTruck = false; iTruckUpdatesCount += 1; } else { iTruckUpdatesCount += 1; truck = new TowTruck2(); truck.Old = false; addTruck = true; } int truckId; Int32.TryParse(serviceTowTruck.TruckID, out truckId); truck.TruckId = truckId; truck.Speed = serviceTowTruck.Speed; truck.Lat = serviceTowTruck.Lat; truck.Lon = serviceTowTruck.Lon; truck.Heading = serviceTowTruck.Heading; truck.LastUpdate = "0 seconds ago"; #region State truck.StateDescription = serviceTowTruck.VehicleState; if (serviceTowTruck.VehicleState == "Waiting for Driver Login") { truck.StateImage = @"http://localhost/FSP.Web/Content/Images/NIS.png"; } #endregion if (addTruck) { towTrucks2.Add(truck); } // Notify the connected clients Hub.Clients.addOrUpdateTruck(truck); } #region remove try { for (int i = 0; i < towTrucks2.Count(); i++) { try { TowTruck2 uiTowTruck = towTrucks2[i]; if (!serviceTowTrucks.Any(p => p.TruckID == uiTowTruck.TruckId.ToString())) { iTruckDeleteCount += 1; uiTowTruck.Old = true; //this ui tow truck is not in service any more. so remove it //towTrucks2.Remove(uiTowTruck); //Hub notification Hub.Clients.deleteTruck(uiTowTruck.TruckId); } } catch (Exception ex) { Util.WriteToLog(ex.Message); } } towTrucks2.RemoveAll(p => p.Old == true); } catch (Exception ex) { Util.WriteToLog(ex.Message); } #endregion Util.WriteToLog(DateTime.Now + "================Server: Total Number of trucks in local list: " + towTrucks2.Count()); Util.WriteToLog(DateTime.Now + "================Server: Total Number of trucks updated: " + iTruckUpdatesCount); Util.WriteToLog(DateTime.Now + "================Server: Total Number of trucks deleted: " + iTruckDeleteCount); } } catch (Exception ex) { Util.WriteToLog(ex.Message); } }
public ActionResult GetTowTrucks() { Random ran = new Random(); TowTruck truck = null; try { if (ConfigurationManager.AppSettings["IsDemo"] == "true") { #region Demo Util.WriteToLog("Doing Tow Truck Demo..."); if (towTrucks == null) { //set up initial locations towTrucks = new List <TowTruck>(); //#region Create a Two Truck for each State //truck = new TowTruck(); //truck.TruckId = 123; //truck.Speed = ran.Next(0, 70); //truck.Lat = 33.7319; //truck.Lon = -117.7927; //truck.Heading = ran.Next(0, 180); //truck.LastUpdate = DateTime.Now; //truck.State = "InService"; //towTrucks.Add(truck); //truck = new TowTruck(); //truck.TruckId = 124; //truck.Speed = ran.Next(0, 70); //truck.Lat = 33.7619; //truck.Lon = -117.8227; //truck.Heading = ran.Next(0, 180); //truck.LastUpdate = DateTime.Now; //truck.State = "MajorAlarm"; //towTrucks.Add(truck); //truck = new TowTruck(); //truck.TruckId = 234; //truck.Speed = ran.Next(0, 70); //truck.Lat = 33.7919; //truck.Lon = -117.8527; //truck.Heading = ran.Next(0, 180); //truck.LastUpdate = DateTime.Now; //truck.State = "MinorAlarm"; //towTrucks.Add(truck); //truck = new TowTruck(); //truck.TruckId = 235; //truck.Speed = ran.Next(0, 70); //truck.Lat = 33.7939; //truck.Lon = -117.7597; //truck.Heading = ran.Next(0, 180); //truck.LastUpdate = DateTime.Now; //truck.State = "ModerateAlarm"; //towTrucks.Add(truck); //truck = new TowTruck(); //truck.TruckId = 345; //truck.Speed = ran.Next(0, 70); //truck.Lat = 33.7939; //truck.Lon = -117.8997; //truck.Heading = ran.Next(0, 180); //truck.LastUpdate = DateTime.Now; //truck.State = "NIS"; //towTrucks.Add(truck); //truck = new TowTruck(); //truck.TruckId = 346; //truck.Speed = ran.Next(0, 70); //truck.Lat = 33.7939; //truck.Lon = -117.9597; //truck.Heading = ran.Next(0, 180); //truck.LastUpdate = DateTime.Now; //truck.State = "OCTA"; //towTrucks.Add(truck); //truck = new TowTruck(); //truck.TruckId = 456; //truck.Speed = ran.Next(0, 70); //truck.Lat = 33.8939; //truck.Lon = -117.9597; //truck.Heading = ran.Next(0, 180); //truck.LastUpdate = DateTime.Now; //truck.State = "OnAssist"; //towTrucks.Add(truck); //truck = new TowTruck(); //truck.TruckId = 457; //truck.Speed = ran.Next(0, 70); //truck.Lat = 33.6939; //truck.Lon = -117.9597; //truck.Heading = ran.Next(0, 180); //truck.LastUpdate = DateTime.Now; //truck.State = "OnBreak"; //towTrucks.Add(truck); //truck = new TowTruck(); //truck.TruckId = 567; //truck.Speed = ran.Next(0, 70); //truck.Lat = 33.6939; //truck.Lon = -117.6597; //truck.Heading = ran.Next(0, 180); //truck.LastUpdate = DateTime.Now; //truck.State = "TBD"; //towTrucks.Add(truck); //#endregion Util.WriteToLog(towTrucks.Count() + " tow trucks created for demo."); } else { //we have a trucks in the list. Now update their location and data foreach (var towTruck in towTrucks) { //set random speed towTruck.Speed = ran.Next(0, 70); //add a degree to heading towTruck.Heading = towTruck.Heading + 1; int number = ran.Next(0, 20); if (number % 2 != 0) { towTruck.Lat = towTruck.Lat - 0.0010; towTruck.Lon = towTruck.Lon + 0.0010; } else { towTruck.Lat = towTruck.Lat + 0.0010; towTruck.Lon = towTruck.Lon - 0.0010; } if (towTruck.Lat < 33.6539 || towTruck.Lat > 33.7939) { towTruck.Lat = 33.7319; } if (towTruck.Lon < -117.9597 || towTruck.Lon > -117.6597) { towTruck.Lon = -117.7927; } towTruck.LastUpdate = DateTime.Now; } Util.WriteToLog(towTrucks.Count() + " tow trucks updated for demo."); } #endregion } else { Util.WriteToLog("Contacting Service"); TowTruckServiceRef.TowTruckServiceClient service = new TowTruckServiceRef.TowTruckServiceClient(); TowTruckData[] serviceTowTrucks = service.CurrentTrucks(); Util.WriteToLog(serviceTowTrucks.Count() + " tow trucks retrieved from Service"); if (towTrucks == null) { towTrucks = new List <TowTruck>(); } Boolean addTruck = false; lock (towTrucks) { for (int i = 0; i < serviceTowTrucks.Length; i++) { TowTruckData serviceTowTruck = serviceTowTrucks[i]; if (towTrucks.Any(p => p.TruckId == serviceTowTruck.TruckID)) { truck = towTrucks.Single(p => p.TruckId == serviceTowTruck.TruckID); addTruck = false; } else { truck = new TowTruck(); addTruck = true; } truck.TruckId = serviceTowTruck.TruckID; truck.Speed = serviceTowTruck.Speed; truck.Lat = serviceTowTruck.Lat; truck.Lon = serviceTowTruck.Lon; truck.Heading = serviceTowTruck.Heading; truck.LastUpdate = DateTime.Now; #region State if (serviceTowTruck.VehicleState == "Waiting for Driver Login") { truck.State = "NIS"; } #endregion if (addTruck) { towTrucks.Add(truck); } } } } } catch { } return(Json(towTrucks, JsonRequestBehavior.AllowGet)); }
//[OutputCache(CacheProfile = "TruckList")] public ActionResult UpdateAllTrucks() { List <UITowTruck> towTrucks = new List <UITowTruck>(); List <TruckState> truckStates = this.GetTruckStates(); try { if (HttpContext.Cache["Trucks"] != null) { towTrucks = (List <UITowTruck>)HttpContext.Cache["Trucks"]; Debug.WriteLine("Returning CACHED truck list: " + DateTime.Now); } else { using (TowTruckServiceClient service = new TowTruckServiceClient()) { TowTruckData[] serviceTowTrucks = service.CurrentTrucks(); for (int i = 0; i < serviceTowTrucks.Length; i++) { #region TowTruckData serviceTowTruck = serviceTowTrucks[i]; UITowTruck truck = new UITowTruck(); try { truck.LastUpdate = 0; truck.Old = false; #region Set Truck Properties truck.TruckNumber = serviceTowTruck.TruckNumber == null ? "Not set" : serviceTowTruck.TruckNumber; truck.BeatNumber = serviceTowTruck.BeatNumber == null ? "Not set" : serviceTowTruck.BeatNumber; truck.BeatSegmentNumber = "Not set"; truck.Speed = serviceTowTruck.Speed; truck.Lat = serviceTowTruck.Lat; truck.Lon = serviceTowTruck.Lon; truck.Heading = serviceTowTruck.Heading; //truck.UserContractorName = this.UsersContractorCompanyName; //the logged in user's contractor name association truck.DriverName = serviceTowTruck.DriverName; truck.ContractorName = serviceTowTruck.ContractorName; truck.Location = serviceTowTruck.OutOfBoundsMessage; if (serviceTowTruck.SpeedingTime.ToString() != "1/1/0001 12:00:00 AM" && serviceTowTruck.SpeedingTime.ToString() != "1/1/2001 12:00:00 AM") { truck.SpeedingTime = serviceTowTruck.SpeedingTime.ToString("hh:mm:ss tt"); } truck.SpeedingValue = serviceTowTruck.SpeedingValue.ToString(); truck.OutOfBoundsMessage = serviceTowTruck.OutOfBoundsMessage; if (serviceTowTruck.OutOfBoundsTime.ToString() != "1/1/0001 12:00:00 AM") { truck.OutOfBoundsTime = serviceTowTruck.OutOfBoundsTime.ToString("hh:mm:ss tt"); } truck.HasAlarm = serviceTowTruck.Alarms; if (serviceTowTruck.LastMessage.ToString() != "1/1/0001 12:00:00 AM") { truck.LastMessage = serviceTowTruck.LastMessage.ToString("hh:mm:ss"); } if (serviceTowTruck.StatusStarted.ToString() != "1/1/0001 12:00:00 AM") { truck.LastStatusChanged = serviceTowTruck.StatusStarted.ToString("hh:mm:ss tt"); } truck.VehicleState = serviceTowTruck.VehicleState; truck.VehicleStateIconUrl = truckStates.Where(p => p.TruckState1 == truck.VehicleState).FirstOrDefault().TruckIcon; if (serviceTowTruck.Alarms && String.IsNullOrEmpty(truck.VehicleState)) { //All alarms red (OnAlarm.png) expect speeding is yellow truck.VehicleStateIconUrl = "Alarm.png"; //Red if (serviceTowTruck.SpeedingAlarm) { truck.VehicleStateIconUrl = "Speeding.png"; //Yellow } } #endregion } catch (Exception ex) { Util.WriteToLog(ex.Message, "Error.txt"); } serviceTowTruck = null; towTrucks.Add(truck); truck = null; #endregion } int refreshRate = 0; Int32.TryParse(ConfigurationManager.AppSettings["ServerRefreshRate"].ToString(), out refreshRate); HttpContext.Cache.Add("Trucks", towTrucks, null, DateTime.Now.AddSeconds(refreshRate), Cache.NoSlidingExpiration, CacheItemPriority.High, null); serviceTowTrucks = null; Debug.WriteLine("Returning FRESH truck list: " + DateTime.Now); } } } catch (Exception ex) { Util.WriteToLog(ex.Message, "Error.txt"); } //check to see if current user is a contractor. Then filter to only "his/her" trucks" if (!String.IsNullOrEmpty(this.UsersContractorCompanyName)) { towTrucks = towTrucks.Where(p => p.ContractorName == this.UsersContractorCompanyName).ToList(); } return(Json(towTrucks.OrderBy(p => p.BeatNumber).ThenBy(p => p.TruckNumber), JsonRequestBehavior.AllowGet)); }