Beispiel #1
0
        public async Task <ActionResult> SaveQuery(MeasurementQueryModel query)
        {
            string c = "";

            if (string.IsNullOrEmpty(query?.Name))
            {
                ModelState.AddModelError("Name", "Name field is required!");
                c = " <div class='alert alert-warning fade in'><a class='close' data-dismiss='alert' aria-label='close'>&times;</a>Name field is required</div>";
                return(Content(c));
            }
            Helpers.LoginHelper lh = new Helpers.LoginHelper();
            query.Key = lh.GetAuthenticationKey(this.HttpContext);
            if (query.Key != null)
            {
                ModelState.Remove("key");
                ModelState.Add("Key", new ModelState());
                ModelState.SetModelValue("Key", new ValueProviderResult(query.Key, query.Key, System.Globalization.CultureInfo.CurrentCulture));
            }
            c = " <div class='alert alert-danger fade in'><a class='close' data-dismiss='alert' aria-label='close'>&times;</a><span class='text-info'><span class='text-success'>Query: " + query.Name + " was <strong>NOT</strong> Saved successfully!</span></span></div>";
            if (!ModelState.IsValid)
            {
                return(Content(c));
            }
            Repository      r          = new Repository();
            int             result     = 0;
            SavedQueryModel savedQuery = new SavedQueryModel();

            try
            {
                result = await r.SaveQueryAsync(query);

                if (result > 0)
                {
                    query.ID   = result;
                    savedQuery = new SavedQueryModel(query);
                }
                else if (result == -1)
                {
                    c = " <div class='alert alert-danger fade in'><a class='close' data-dismiss='alert' aria-label='close'>&times;</a><span class='text-info'><span class='text-success'>Queries cannot be saved with Master key!</span></span></div>";
                    return(Content(c));
                }
                else
                {
                    return(Content(c));
                }
            }
            catch (Exception ex)
            {
                Savonia.Web.ErrorReporter.ErrorReporterModule.HandleException(ex, System.Web.HttpContext.Current.Request);
                return(Content(c));
            }
            return(Json(savedQuery));
        }
Beispiel #2
0
        public async Task <ActionResult> Login(MeasurementQueryModel query)
        {
            if (!ModelState.IsValid)
            {
                return(View("Login", query));
            }

            Repository r = new Repository();

            try
            {
                var queries = r.GetQueries(query.Key);
                List <SavedQueryModel> savedQueries = new List <SavedQueryModel>();
                if (null != queries)
                {
                    foreach (var q in queries)
                    {
                        savedQueries.Add(new SavedQueryModel(q));
                    }
                }
                ViewBag.Queries = savedQueries;
                var objects = await r.GetDistinctObjectsAsync(query.Key);

                ViewBag.Objects = objects;
                var sensorsTask = r.GetSensorsAsync(query.Key);
                ObservableCollection <SensorModel> sensors = new ObservableCollection <SensorModel>(await sensorsTask);
                ViewBag.Sensors = sensors;
                Helpers.LoginHelper lh = new Helpers.LoginHelper();
                lh.CreateLoginCredentials(this.HttpContext, query.Key);
            }
            catch (KeyNotFoundException kex)
            {
                Savonia.Web.ErrorReporter.ErrorReporterModule.HandleException(kex, System.Web.HttpContext.Current.Request);
                ModelState.AddModelError("Key", kex.Message);
                return(View());
            }
            catch (UnauthorizedAccessException uex)
            {
                Savonia.Web.ErrorReporter.ErrorReporterModule.HandleException(uex, System.Web.HttpContext.Current.Request);
                ModelState.AddModelError("Key", uex.Message);
                return(View());
            }
            return(View("Get"));
        }
Beispiel #3
0
        public async Task <ActionResult> DeleteQuery([System.Web.Http.FromBody] MeasurementQueryModel query)
        {
            Helpers.LoginHelper lh = new Helpers.LoginHelper();
            query.Key = lh.GetAuthenticationKey(this.HttpContext);
            if (query.Key != null)
            {
                ModelState.Remove("key");
                ModelState.Add("Key", new ModelState());
                ModelState.SetModelValue("Key", new ValueProviderResult(query.Key, query.Key, System.Globalization.CultureInfo.CurrentCulture));
            }
            string c = " <div class='alert alert-danger fade in'><a class='close' data-dismiss='alert' aria-label='close'>&times;</a><span class='text-info'><span class='text-success'>Query: " + query.Name + " was <strong>NOT</strong> deleted successfully!</span></span></div>";

            if (!ModelState.IsValid)
            {
                return(Content(c));
            }
            Repository      r          = new Repository();
            int             result     = 0;
            SavedQueryModel savedQuery = new SavedQueryModel();

            try
            {
                result = await r.DeleteQueryAsync(query);

                if (result > 0)
                {
                    savedQuery = new SavedQueryModel(query);
                }
                else
                {
                    return(Content(c));
                }
            }
            catch (Exception ex)
            {
                Savonia.Web.ErrorReporter.ErrorReporterModule.HandleException(ex, System.Web.HttpContext.Current.Request);
                return(Content(c));
            }
            return(Json(savedQuery));
        }
Beispiel #4
0
        public async Task <ActionResult> Measurements(MeasurementQueryModel query, CancellationToken t)
        {
            CancellationToken disconnectedToken = Response.ClientDisconnectedToken;
            var timeOutToken = Request.TimedOutToken;
            var source       = CancellationTokenSource.CreateLinkedTokenSource(t, disconnectedToken, timeOutToken);

            Helpers.LoginHelper lh = new Helpers.LoginHelper();
            query.Key = lh.GetAuthenticationKey(this.HttpContext);
            if (query.Key != null)
            {
                ModelState.Remove("key");
                ModelState.Add("Key", new ModelState());
                ModelState.SetModelValue("Key", new ValueProviderResult(query.Key, query.Key, System.Globalization.CultureInfo.CurrentCulture));
            }

            if (!ModelState.IsValid)
            {
                return(RedirectToAction("RedirectToLogin"));
            }
            Repository r = new Repository();

            try
            {
                var measurements = await r.GetMeasurementsAsync(query, source.Token, true);

                if (measurements?.Count > 0 && !source.IsCancellationRequested)
                {
                    ViewBag.DataCount = measurements[0].Data.Count;
                    Helpers.DocumentHelper s = new Helpers.DocumentHelper();
                    string filename          = Session.SessionID + ".json";
                    string directoryPath     = Server.MapPath(Common.GlobalSettings.GetJSONPath);
                    s.SerializeJSONFile <List <MeasurementModel> >(measurements, directoryPath, filename);
                    ViewBag.DatetimeFormats  = Helpers.DatetimeFormatHelper.GetPossibleDatetimeFormats();
                    ViewBag.ExportModel      = new Models.ExportModel();
                    ViewBag.MeasurementCount = measurements.Count;
                }
                else
                {
                    source.Dispose();
                    return(Content("<span class='text-danger'>0 measurements found with given parameters.</span>"));
                }
                if (measurements.Count > 3000)
                {
                    var m = measurements.Take(3000);
                    measurements = m.ToList();
                }

                return(PartialView("~/Views/Export/Export.cshtml", measurements));
            }
            catch (KeyNotFoundException kex)
            {
                Savonia.Web.ErrorReporter.ErrorReporterModule.HandleException(kex, System.Web.HttpContext.Current.Request);
                return(RedirectToAction("RedirectToLogin"));
            }
            catch (UnauthorizedAccessException uex)
            {
                Savonia.Web.ErrorReporter.ErrorReporterModule.HandleException(uex, System.Web.HttpContext.Current.Request);
                return(RedirectToAction("RedirectToLogin"));
            }
            catch (OperationCanceledException canceled)
            {
                Savonia.Web.ErrorReporter.ErrorReporterModule.HandleException(canceled, System.Web.HttpContext.Current.Request);
                source.Dispose();
                return(Content("<span class='text-danger'>Request cancelled.</span>"));
            }
            catch (Exception ex)
            {
                Savonia.Web.ErrorReporter.ErrorReporterModule.HandleException(ex, System.Web.HttpContext.Current.Request);
                return(RedirectToAction("RedirectToLogin"));
            }
        }