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'>×</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'>×</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'>×</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)); }
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")); }
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'>×</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)); }
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")); } }