Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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");
            }
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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));
        }
Esempio n. 7
0
        //[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));
        }