public static void LogException(this Exception ex)
        {
            // Get the stack trace from the given exception
            StackTrace st      = new StackTrace(ex);
            int        nOffset = -1;

            // check if it contains valid info
            if (st.FrameCount == 0)
            {
                // nothing found, so we create new Stack Trace
                st      = new StackTrace();
                nOffset = 2;
            }
            else
            {
                nOffset = 0;
            }
            // only if we have valid offset
            CodeException codeEx = new CodeException();

            codeEx.MachineName   = Environment.MachineName;
            codeEx.ExceptionTime = DateTime.Now;
            //codeEx.UserId = System.Threading.Thread.CurrentPrincipal.Identity.Name;
            if (nOffset >= 0)
            {
                // get the current frame
                StackFrame sf = st.GetFrame(nOffset);
                codeEx.MethodName      = sf.GetMethod().Name;
                codeEx.ClassName       = sf.GetMethod().DeclaringType.Name;
                codeEx.AssemblyName    = sf.GetMethod().DeclaringType.Assembly.FullName;;
                codeEx.AssemblyVersion = sf.GetMethod().DeclaringType.Assembly.ImageRuntimeVersion;
                codeEx.StackDump       = st.ToString();
            }

            codeEx.ErrorMessage = ex.Message;

            if (ex is DataException)
            {
                DataException x = ex as DataException;
                if (x.Data != null)
                {
                    foreach (var key in x.Data.Keys)
                    {
                        codeEx.StackDump += key + ":" + x.Data[key] + Environment.NewLine;
                    }
                }
            }

            while (ex.InnerException != null)
            {
                codeEx.ErrorMessage += Environment.NewLine + ex.InnerException.Message;
                ex = ex.InnerException;
            }

            using (var dbContext = new VSDBContext())
            {
                dbContext.CodeExceptions.Add(codeEx);
                dbContext.SaveChanges();
            }
        }
        public ServiceResponse UpdateVehiclesStatus(params int[] vehicleIds)
        {
            ServiceResponse <List <Vehicle> > response = new ServiceResponse <List <Vehicle> >();

            try
            {
                _context.Vehicles.Where(v => vehicleIds.Contains(v.Id)).ToList().ForEach(v => v.IsConnected = !v.IsConnected);

                _context.SaveChanges();

                response.Status = ResponseStatus.Success;
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
                response.Status  = ResponseStatus.ServerError;

                ex.LogException();
            }

            return(response);
        }