public ActionResult CreateSimple(string name, string delimiter, FormCollection form, HttpPostedFileBase file) { var email = Request?.RequestContext?.HttpContext?.User?.Identity?.Name; if (Request.IsAuthenticated == false) { return(RedirectToAction("Login", "Account", new { returnUrl = this.Request.Url.PathAndQuery })); } Guid fileId = Guid.NewGuid(); var uTmp = new Lib.IO.UploadedTmpFile(); if (string.IsNullOrEmpty(name)) { ViewBag.ApiResponseError = ApiResponseStatus.Error(-99, "Bez jména datasetu nemůžeme pokračovat. Prozraďte nám ho, prosím."); return(View()); } if (file == null) { ViewBag.ApiResponseError = ApiResponseStatus.Error(-99, "Źádné CSV jste nenahráli"); return(View()); } else { var path = uTmp.GetFullPath(fileId.ToString(), fileId.ToString() + ".csv"); file.SaveAs(path); return(RedirectToAction("CreateSimple2", new { fileId = fileId, delimiter = CreateSimpleModel.GetValidDelimiter(delimiter), name = name })); } }
public ActionResult DatasetSendNotifications(string id) { var apiAuth = Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("id", id) }); if (!apiAuth.Authentificated) { //Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess)); } else { try { var ds = DataSet.CachedDatasets.Get(id); HlidacStatu.Lib.Data.WatchDog.Send.SendWatchDogs(predicate: wd => wd.dataType == "DataSet." + ds.DatasetId, type: "dataset"); return(Json(ApiResponseStatus.ApiUnauthorizedAccess)); } catch (DataSetException dse) { return(Json(dse.APIResponse, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { HlidacStatu.Util.Consts.Logger.Error("Dataset API", ex); return(Json(ApiResponseStatus.GeneralExceptionError(ex), JsonRequestBehavior.AllowGet)); } } }
public ApiResponse(ApiResponseStatus status, T data, string message, IEnumerable <string> errorMessages) { Status = status; Data = data; Message = message; ErrorMessages = errorMessages; }
public ActionResult Datasets_Update(string id) { var data = ReadRequestBody(this.Request); var apiAuth = Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("id", id) }); if (!apiAuth.Authentificated) { //Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess)); } else { try { var newReg = Newtonsoft.Json.JsonConvert.DeserializeObject <Registration>(data, DataSet.DefaultDeserializationSettings); return(Json(DataSet.Api.Update(newReg, apiAuth.ApiCall?.User), JsonRequestBehavior.AllowGet)); } catch (Exception ex) { HlidacStatu.Util.Consts.Logger.Error("Dataset API", ex); return(Json(ApiResponseStatus.GeneralExceptionError(ex), JsonRequestBehavior.AllowGet)); } } }
protected ApiResponseViewModel <T> ApiResponse <T>(ApiResponseStatus status, T data, string message) { return(new ApiResponseViewModel <T> { Status = status.GetDescription(), Data = data, Message = message, Timestamp = DateTime.Now.ToString("o"), ExecutionTime = $@"{_apiTimerService.RequestTime()}ms" }); }
public ApiResponseStatus ProcessWebRequest(string apiUrl, string httpVerb, string json, Dictionary <string, string> headerParameters, string token) { var responseStatus = new ApiResponseStatus(); var result = string.Empty; var request = new WwwPostRequest(apiUrl); headerParameters.ToList().ForEach(x => request.AddParmeter(x.Key, x.Value)); #region Create web request and Retry logic try { if (string.IsNullOrEmpty(token)) { responseStatus.Result = request.Send(); } else { responseStatus.Result = request.Send(token, json, httpVerb); } responseStatus.StatusCode = HttpStatusCode.OK; } catch (WebException exception) { if (exception.Status == WebExceptionStatus.ProtocolError) { var response = exception.Response as HttpWebResponse; if (response != null) { responseStatus.StatusCode = response.StatusCode; } } if (exception.Response != null && exception.Response.GetResponseStream() != null) { var resp = new StreamReader(exception.Response.GetResponseStream()).ReadToEnd(); result = (string.IsNullOrEmpty(resp) ? exception.Message : resp); } else { result = exception.Message; } } catch (Exception ex) { result = ex.Message; } #endregion responseStatus.Message = result; return(responseStatus); }
public ActionResult ImportData(string id, string delimiter, string data, FormCollection form, HttpPostedFileBase file) { var email = Request?.RequestContext?.HttpContext?.User?.Identity?.Name; if (Request.IsAuthenticated == false) { //https://www.hlidacstatu.cz/account/Login?returnUrl=%2F%3Frnd%3D0036bd9be9bc42d4bdf449492968846e return(RedirectToAction("Login", "Account", new { returnUrl = this.Request.Url.PathAndQuery })); } if (string.IsNullOrEmpty(id)) { return(Redirect("/data")); } var ds = DataSet.CachedDatasets.Get(id); if (ds == null) { return(Redirect("/data")); } if (ds.HasAdminAccess(email) == false) { return(View("NoAccess")); } datasetIndexStatCache.Invalidate(); Guid fileId = Guid.NewGuid(); var uTmp = new Lib.IO.UploadedTmpFile(); if (string.IsNullOrEmpty(data)) { if (file == null) { ViewBag.ApiResponseError = ApiResponseStatus.Error(-99, "Źádné CSV jste nenahráli"); return(View()); } else { var path = uTmp.GetFullPath(fileId.ToString(), fileId.ToString() + ".csv"); file.SaveAs(path); return(RedirectToAction("ImportData", new { id = ds.DatasetId, fileId = fileId, delimiter = CreateSimpleModel.GetValidDelimiter(delimiter) })); } } else { var path = uTmp.GetFullPath(fileId.ToString(), fileId.ToString() + ".csv"); System.IO.File.WriteAllText(path, data); return(RedirectToAction("ImportData", new { id = ds.DatasetId, fileId = fileId, delimiter = "auto" })); } }
public ActionResult Datasets_Delete(string _id) { string id = _id; var apiAuth = Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("id", id) }); if (!apiAuth.Authentificated) { //Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess, JsonRequestBehavior.AllowGet)); } else { try { if (string.IsNullOrEmpty(id)) { return(Json(ApiResponseStatus.DatasetNotFound, JsonRequestBehavior.AllowGet)); } id = id.ToLower(); var r = DataSetDB.Instance.GetRegistration(id); if (r == null) { return(Json(ApiResponseStatus.DatasetNotFound, JsonRequestBehavior.AllowGet)); } if (r.createdBy != null && apiAuth.ApiCall.User.ToLower() != r.createdBy?.ToLower()) { return(Json(ApiResponseStatus.DatasetNoPermision, JsonRequestBehavior.AllowGet)); } var res = DataSetDB.Instance.DeleteRegistration(id, apiAuth.ApiCall.User); return(Json(new ApiResponseStatus() { valid = res }, JsonRequestBehavior.AllowGet)); } catch (DataSetException dse) { return(Json(dse.APIResponse, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { HlidacStatu.Util.Consts.Logger.Error("Dataset API", ex); return(Json(ApiResponseStatus.GeneralExceptionError(ex), JsonRequestBehavior.AllowGet)); } } }
public ActionResult Datasets_GET(string _id) { string id = _id; if (!Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("id", id) }) .Authentificated) { //Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess, JsonRequestBehavior.AllowGet)); } else { try { if (string.IsNullOrEmpty(id)) { return(Content(Newtonsoft.Json.JsonConvert.SerializeObject(DataSetDB.Instance.SearchData("*", 1, 100).Result, Newtonsoft.Json.Formatting.None, new JsonSerializerSettings() { ContractResolver = Serialization.PublicDatasetContractResolver.Instance }) , "application/json")); } else { var ds = DataSet.CachedDatasets.Get(id); if (ds == null) { return(Json(ApiResponseStatus.DatasetNotFound, JsonRequestBehavior.AllowGet)); } else { return(Content(Newtonsoft.Json.JsonConvert.SerializeObject(ds.Registration()), "application/json")); } } } catch (DataSetException dse) { return(Json(dse.APIResponse, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { HlidacStatu.Util.Consts.Logger.Error("Dataset API", ex); return(Json(ApiResponseStatus.GeneralExceptionError(ex), JsonRequestBehavior.AllowGet)); } } }
public ActionResult Datasets_Create() { var data = ReadRequestBody(this.Request); var apiAuth = Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("data", data) }); if (!apiAuth.Authentificated) { //Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess)); } else { try { var reg = Newtonsoft.Json.JsonConvert.DeserializeObject <Registration>(data, DataSet.DefaultDeserializationSettings); var res = DataSet.Api.Create(reg, apiAuth.ApiCall.User); if (res.valid) { return(Json(new { datasetId = res.value })); } else { return(Json(res)); } } catch (Newtonsoft.Json.JsonSerializationException jex) { var status = ApiResponseStatus.DatasetItemInvalidFormat; status.error.errorDetail = jex.Message; return(Json(status, JsonRequestBehavior.AllowGet)); } catch (DataSetException dse) { return(Json(dse.APIResponse, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { HlidacStatu.Util.Consts.Logger.Error("Dataset API", ex); return(Json(ApiResponseStatus.GeneralExceptionError(ex), JsonRequestBehavior.AllowGet)); } } }
public ActionResult DatasetItem_Get(string _id, string _dataid) { string id = _id; string dataid = _dataid; if (!Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("id", id), new Framework.ApiCall.CallParameter("dataid", dataid) }) .Authentificated) { //Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess, JsonRequestBehavior.AllowGet)); } else { try { var ds = DataSet.CachedDatasets.Get(id.ToLower()); var value = ds.GetDataObj(dataid); //remove from item if (value == null) { return(Content("null", "application/json")); } else { value.DbCreatedBy = null; return(Content( Newtonsoft.Json.JsonConvert.SerializeObject( value, Request.QueryString["nice"] == "1" ? Formatting.Indented : Formatting.None ) ?? "null", "application/json")); } } catch (DataSetException) { return(Json(ApiResponseStatus.DatasetNotFound, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(Json(ApiResponseStatus.GeneralExceptionError(ex), JsonRequestBehavior.AllowGet)); } } }
private ActionResult _DataHost(int id, string h) { ZabHost host = ZabTools.Weby().Where(w => w.hostid == id.ToString() & w.itemIdResponseTime != null).FirstOrDefault(); if (host == null) { return(Json(ApiResponseStatus.StatniWebNotFound, JsonRequestBehavior.AllowGet)); } if (host.ValidHash(h)) { try { var data = ZabTools.GetHostAvailabilityLong(host); var webssl = ZabTools.SslStatusForHostId(host.hostid); var ssldata = new { grade = webssl?.Status().ToNiceDisplayName(), time = webssl?.Time, copyright = "(c) © Qualys, Inc. https://www.ssllabs.com/", fullreport = "https://www.ssllabs.com/ssltest/analyze.html?d=" + webssl?.Host?.UriHost() }; if (webssl == null) { ssldata = null; } return(Content(Newtonsoft.Json.JsonConvert.SerializeObject( new { availability = data, ssl = ssldata }) , "text/json")); } catch (Exception e) { HlidacStatu.Util.Consts.Logger.Error($"_DataHost id ${id}", e); return(Json(ApiResponseStatus.GeneralExceptionError(e), JsonRequestBehavior.AllowGet)); } } else { return(Json(ApiResponseStatus.StatniWebNotFound, JsonRequestBehavior.AllowGet)); } }
public ActionResult CompanyID(string companyName) { if (!Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("companyName", companyName) }) .Authentificated) { return(Json(ApiResponseStatus.ApiUnauthorizedAccess, JsonRequestBehavior.AllowGet)); } else { try { if (string.IsNullOrEmpty(companyName)) { return(Json(new { }, JsonRequestBehavior.AllowGet)); } else { //HlidacStatu.Lib.Data.Firma f = HlidacStatu.Lib.Validators.FirmaInText(companyName); var name = HlidacStatu.Lib.Data.Firma.JmenoBezKoncovky(companyName); var found = HlidacStatu.Lib.Data.Firma.Search.FindAll(name, 1).FirstOrDefault(); if (found == null) { return(Json(new { }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { ICO = found.ICO, Jmeno = found.Jmeno, DatovaSchranka = found.DatovaSchranka }, JsonRequestBehavior.AllowGet)); } } } catch (DataSetException dse) { return(Json(dse.APIResponse, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { HlidacStatu.Util.Consts.Logger.Error("Dataset API", ex); return(Json(ApiResponseStatus.GeneralExceptionError(ex), JsonRequestBehavior.AllowGet)); } } }
public ActionResult CreateFromBackup(FormCollection form, int step, HttpPostedFileBase file) { var email = Request?.RequestContext?.HttpContext?.User?.Identity?.Name; if (Request.IsAuthenticated == false) { return(RedirectToAction("Login", "Account", new { returnUrl = this.Request.Url.PathAndQuery })); } string json = ""; if (file != null && file.InputStream != null && file.InputStream.CanRead) { using (StreamReader reader = new StreamReader(file.InputStream)) { json = reader.ReadToEnd(); } } Registration reg = null; try { reg = Newtonsoft.Json.JsonConvert.DeserializeObject <Registration>(json); } catch { } if (reg == null) { ViewBag.ApiResponseError = ApiResponseStatus.Error(500, "Nekorektní záloha datasetu", "Nekorektní záloha datasetu"); } datasetIndexStatCache.Invalidate(); if (reg != null) { var ds = DataSet.CachedDatasets.Get(reg.datasetId); if (ds != null) { ViewBag.ExistsDS = ds.Registration(); } } return(View("CreateFromBackup" + step, reg)); }
public ActionResult DatasetItem_Exists(string _id, string _dataid) { string id = _id; string dataid = _dataid; if (!Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("id", id), new Framework.ApiCall.CallParameter("dataid", dataid) }) .Authentificated) { //Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess, JsonRequestBehavior.AllowGet)); } else { try { var ds = DataSet.CachedDatasets.Get(id.ToLower()); bool value = ds.ItemExists(dataid); //remove from item if (value == false) { return(Content(Newtonsoft.Json.JsonConvert.SerializeObject(false), "application/json")); } else { return(Content(Newtonsoft.Json.JsonConvert.SerializeObject(true), "application/json")); } } catch (DataSetException) { return(Json(ApiResponseStatus.DatasetNotFound, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(Json(ApiResponseStatus.GeneralExceptionError(ex), JsonRequestBehavior.AllowGet)); } } }
public static IApiResponse <IPaged <IEnumerable <T> > > ToApiResponsePaged <T>(this IQueryable <T> source, int?Page, int?PageSize, out int Count, string message = null, ApiResponseStatus apiResponseStatus = ApiResponseStatus.Succeeded) { source = source.Paged(Page, PageSize, out Count); return(new ApiResponse <IPaged <IEnumerable <T> > >() { Data = new Paged <IEnumerable <T> >(Page.Value, PageSize.Value, Count, (Count > 0 ? source.ToList() : Enumerable.Empty <T>())), Message = message, Status = apiResponseStatus }); }
public ActionResult ImportDataProcess(string id, CreateSimpleModel model, FormCollection form) { var email = Request?.RequestContext?.HttpContext?.User?.Identity?.Name; if (Request.IsAuthenticated == false) { //https://www.hlidacstatu.cz/account/Login?returnUrl=%2F%3Frnd%3D0036bd9be9bc42d4bdf449492968846e return(RedirectToAction("Login", "Account", new { returnUrl = this.Request.Url.PathAndQuery })); } ViewBag.NumOfRows = 0; model.DatasetId = id; string[] csvHeaders = null; if (string.IsNullOrEmpty(id)) { return(Redirect("/data")); } var ds = DataSet.CachedDatasets.Get(id); if (ds == null) { return(Redirect("/data")); } if (ds.HasAdminAccess(email) == false) { return(View("NoAccess")); } datasetIndexStatCache.Invalidate(); if (ds.IsFlatStructure() == false) { return(RedirectToAction("ImportData", new { id = ds.DatasetId, fileId = model.FileId, delimiter = model.GetValidDelimiter() })); } var uTmp = new Lib.IO.UploadedTmpFile(); var path = uTmp.GetFullPath(model.FileId.ToString(), model.FileId.ToString() + ".csv"); if (!System.IO.File.Exists(path)) { return(RedirectToAction("ImportData", new { id = ds.DatasetId })); } RuntimeClassBuilder rcb = new RuntimeClassBuilder(ds.GetPropertyNamesTypesFromSchema().ToDictionary(m => m.Key, v => v.Value.Type)); string[] formsHeaders = form["sheaders"].Split('|'); List <MappingCSV> mappingProps = new List <MappingCSV>(); for (int i = 0; i < formsHeaders.Length + 3; i++) //+3 a little bit more, at least +1 for id column { if (!string.IsNullOrEmpty(form["source_" + i]) && !string.IsNullOrEmpty(form["target_" + i]) && !string.IsNullOrEmpty(form["transform_" + i]) ) { mappingProps.Add(new MappingCSV() { sourceCSV = form["source_" + i], TargetJSON = form["target_" + i], Transform = form["transform_" + i] } ); } } System.Collections.Concurrent.ConcurrentBag <Exception> errors = new System.Collections.Concurrent.ConcurrentBag <Exception>(); List <Tuple <object, string> > items = new List <Tuple <object, string> >(); try { using (System.IO.StreamReader r = new System.IO.StreamReader(path)) { if (model.Delimiter == "auto") { model.Delimiter = Devmasters.IO.IOTools.DetectCSVDelimiter(r); } var csv = new CsvHelper.CsvReader(r, new CsvHelper.Configuration.CsvConfiguration(Util.Consts.csCulture) { HasHeaderRecord = true , Delimiter = model.GetValidDelimiter() //,MissingFieldFound = null } ); csv.Read(); csv.ReadHeader(); csvHeaders = csv.HeaderRecord.Where(m => !string.IsNullOrEmpty(m?.Trim())).ToArray(); //for future control while (csv.Read()) { var newObj = rcb.CreateObject(); for (int m = 0; m < mappingProps.Count; m++) { Type destType = ds.GetPropertyNameTypeFromSchema(mappingProps[m].TargetJSON).FirstOrDefault().Value.Type; object value = null; string[] specialValues = new string[] { "-skip-", "-gen-", "--" }; if (specialValues.Contains(mappingProps[m].sourceCSV)) { if (mappingProps[m].sourceCSV == "-gen-") { value = Guid.NewGuid().ToString("N"); rcb.SetPropertyValue(newObj, mappingProps[m].TargetJSON, value); } else { continue; // -skip- skip } } else { string svalue = null; try { svalue = csv.GetField(mappingProps[m].sourceCSV); if (destType == typeof(string)) { value = svalue; } else if (destType == typeof(DateTime) || destType == typeof(DateTime?)) { value = Devmasters.DT.Util.ToDateTime(svalue); } else if (destType == typeof(decimal) || destType == typeof(decimal?)) { value = Util.ParseTools.ToDecimal(svalue); if (value == null) { value = Util.ParseTools.FromTextToDecimal(svalue); } } else if (destType == typeof(long) || destType == typeof(long?) || destType == typeof(int) || destType == typeof(int?)) { value = Devmasters.DT.Util.ToDate(svalue); } else if (destType == typeof(bool) || destType == typeof(bool?)) { if (bool.TryParse(svalue, out bool tryp)) { value = tryp; } } else { value = svalue; } if (mappingProps[m].Transform == "normalize" && destType == typeof(string) ) { value = DataSet.NormalizeValueForId((string)value); } else if (mappingProps[m].Transform == "findico" && destType == typeof(string) ) { value = Lib.Validators.IcosInText((string)value).FirstOrDefault(); } else //copy { } rcb.SetPropertyValue(newObj, mappingProps[m].TargetJSON, value); } catch (Exception mex) { errors.Add(mex); } } } //for string idPropName = "id"; string idVal = rcb.GetPropertyValue(newObj, "id")?.ToString(); if (string.IsNullOrEmpty(idVal)) { idVal = rcb.GetPropertyValue(newObj, "Id")?.ToString(); idPropName = "Id"; } if (string.IsNullOrEmpty(idVal)) { idVal = rcb.GetPropertyValue(newObj, "iD")?.ToString(); idPropName = "iD"; } if (string.IsNullOrEmpty(idVal)) { idVal = rcb.GetPropertyValue(newObj, "ID")?.ToString(); idPropName = "ID"; } try { //var debugJson = Newtonsoft.Json.JsonConvert.SerializeObject(newObj); //normalize ID idVal = DataSet.NormalizeValueForId(idVal); rcb.SetPropertyValue(newObj, idPropName, idVal); items.Add(new Tuple <object, string>(newObj, idVal)); model.NumOfRows++; } catch (DataSetException dex) { errors.Add(dex); } catch (Exception ex) { errors.Add(ex); } } } } catch (Exception ex) { errors.Add(ex); } try { Devmasters.Batch.Manager.DoActionForAll <Tuple <object, string> >(items, (item) => { try { ds.AddData(item.Item1, item.Item2, email, true); } catch (Exception ex) { errors.Add(ex); } return(new Devmasters.Batch.ActionOutputData()); }, true ); } catch (Exception ex) { errors.Add(ex); } if (errors?.Count > 0) { HlidacStatu.Util.Consts.Logger.Error("ImportDataProcess exceptions \n" + errors.Select(m => m.Message).Aggregate((f, s) => f + "\n" + s)); } ViewBag.ApiResponseError = ApiResponseStatus.Error(-99, "Chyba při importu dat"); ViewBag.Errors = errors.ToList(); return(View(model)); }
public ActionResult DatasetsPart_Update(string id, string atribut) { if (string.IsNullOrEmpty(atribut)) { return(Json(ApiResponseStatus.InvalidFormat, JsonRequestBehavior.AllowGet)); } var data = ReadRequestBody(this.Request); var apiAuth = Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("id", id), new Framework.ApiCall.CallParameter("atribut", atribut) }); if (!apiAuth.Authentificated) { //Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess)); } else { try { if (string.IsNullOrEmpty(id)) { return(Json(ApiResponseStatus.DatasetNotFound, JsonRequestBehavior.AllowGet)); } var oldReg = DataSetDB.Instance.GetRegistration(id); if (oldReg == null) { return(Json(ApiResponseStatus.DatasetNotFound, JsonRequestBehavior.AllowGet)); } if (string.IsNullOrEmpty(oldReg.createdBy)) { oldReg.createdBy = apiAuth.ApiCall?.User?.ToLower(); } if (apiAuth.ApiCall?.User?.ToLower() != oldReg?.createdBy?.ToLower() && apiAuth.ApiCall.User.ToLower() != "*****@*****.**") { return(Json(ApiResponseStatus.DatasetNoPermision, JsonRequestBehavior.AllowGet)); } using (System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient()) { var m = new System.Net.Mail.MailMessage() { From = new System.Net.Mail.MailAddress("*****@*****.**"), Subject = "update DATASET registrace od " + apiAuth.ApiCall?.User?.ToLower(), IsBodyHtml = false, Body = data }; m.BodyEncoding = System.Text.Encoding.UTF8; m.SubjectEncoding = System.Text.Encoding.UTF8; m.To.Add("*****@*****.**"); try { smtp.Send(m); } catch (Exception) { } } switch (atribut.ToLower()) { case "name": oldReg.name = data; break; case "origurl": oldReg.origUrl = data; break; case "sourcecodeurl": oldReg.sourcecodeUrl = data; break; case "description": oldReg.description = data; break; case "betaversion": oldReg.betaversion = data == "true"; break; case "allowwriteaccess": oldReg.allowWriteAccess = data == "true"; break; case "searchresulttemplate": oldReg.searchResultTemplate = Newtonsoft.Json.JsonConvert.DeserializeObject <Registration.Template>(data); break; case "detailtemplate": oldReg.detailTemplate = Newtonsoft.Json.JsonConvert.DeserializeObject <Registration.Template>(data); break; default: return(Json(ApiResponseStatus.InvalidFormat, JsonRequestBehavior.AllowGet)); } DataSetDB.Instance.AddData(oldReg); return(Json(ApiResponseStatus.Valid(), JsonRequestBehavior.AllowGet)); } catch (DataSetException dse) { return(Json(dse.APIResponse, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { HlidacStatu.Util.Consts.Logger.Error("Dataset API", ex); return(Json(ApiResponseStatus.GeneralExceptionError, JsonRequestBehavior.AllowGet)); } } }
public ActionResult CreateSimple2(CreateSimpleModel model) { var email = Request?.RequestContext?.HttpContext?.User?.Identity?.Name; if (Request.IsAuthenticated == false) { return(RedirectToAction("Login", "Account", new { returnUrl = this.Request.Url.PathAndQuery })); } var uTmp = new Lib.IO.UploadedTmpFile(); var path = uTmp.GetFullPath(model.FileId.ToString(), model.FileId.ToString() + ".csv"); if (!System.IO.File.Exists(path)) { return(RedirectToAction("CreateSimple")); } try { using (System.IO.StreamReader r = new System.IO.StreamReader(path)) { var config = new CsvHelper.Configuration.CsvConfiguration(Util.Consts.csCulture); config.HasHeaderRecord = true; config.Delimiter = model.GetValidDelimiter(); var csv = new CsvHelper.CsvReader(r, config); csv.Read(); csv.ReadHeader(); model.Headers = csv.HeaderRecord.Where(m => !string.IsNullOrEmpty(m?.Trim())).ToArray(); //read first lines with data and guest type List <string[]> lines = new List <string[]>(); for (int row = 0; row < 10; row++) { if (csv.Read()) { lines.Add(csv.GetRecords <string>().ToArray()); } } List <string> colTypes = null; if (lines.Count > 0) { colTypes = new List <string>(); for (int cx = 0; cx < lines[0].Length; cx++) { string t = GuestBestCSVValueType(lines[0][cx]); for (int line = 1; line < lines.Count; line++) { var nextT = GuestBestCSVValueType(lines[line][cx]); if (nextT != t) { t = "string"; //kdyz jsou ruzne typy ve stejnem sloupci v ruznych radcich, } //fallback na string } colTypes.Add(t); } } ViewBag.ColTypes = colTypes.ToArray(); return(View(model)); } } catch (Exception e) { ViewBag.ApiResponseError = ApiResponseStatus.Error(-99, "Soubor není ve formátu CSV.", e.ToString()); return(View(model)); } }
public ActionResult NasiPolitici_GetData(string _id) { string id = _id; if (!Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("id", id), }) .Authentificated) { Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess, JsonRequestBehavior.AllowGet)); } else { var o = Osoba.GetByNameId(id); if (o == null) { Response.StatusCode = 404; return(Json(ApiResponseStatus.Error(404, "Politik not found"), JsonRequestBehavior.AllowGet)); } if (o.StatusOsoby() != Osoba.StatusOsobyEnum.Politik) { Response.StatusCode = 404; return(Json(ApiResponseStatus.Error(404, "Person is not marked as politician"), JsonRequestBehavior.AllowGet)); } var vazby = o.AktualniVazby(Relation.AktualnostType.Nedavny) .Where(v => v.Distance == 1 && v.To?.Type == Graph.Node.NodeType.Company) .Take(10) .Select(v => new { company = Firma.FromIco(v.To.Id).Jmeno, ico = v.To.Id, since = v.RelFrom, until = v.RelTo, description = v.Descr }).ToList(); var statDescription = InfoFact.RenderInfoFacts( o.InfoFacts().Where(i => i.Level != InfoFact.ImportanceLevel.Stat).ToArray() , 4, true, true, "", "{0}"); var angazovanost = InfoFact.RenderInfoFacts( o.InfoFacts().Where(m => m.Level == InfoFact.ImportanceLevel.Stat).ToArray() , 4, true, true, "", "{0}"); int[] types = { (int)OsobaEvent.Types.VolenaFunkce, (int)OsobaEvent.Types.PolitickaPracovni, (int)OsobaEvent.Types.Politicka, (int)OsobaEvent.Types.VerejnaSpravaJine, (int)OsobaEvent.Types.VerejnaSpravaPracovni, }; //var funkceOsoba = o.Description(true, // m => types.Contains(m.Type), // 20); var roleOsoba = o.Events(m => types.Contains(m.Type) && m.Status != (int)OsobaEvent.Statuses.NasiPoliticiSkryte) .Select(e => new { role = e.AddInfo, dateFrom = e.DatumOd, dateTo = e.DatumDo, organisation = e.Organizace }) .ToArray(); string registrOznameni = o.Events(m => m.Type == (int)OsobaEvent.Types.CentralniRegistrOznameni && m.Status != (int)OsobaEvent.Statuses.NasiPoliticiSkryte) .Select(m => m.AddInfo).FirstOrDefault(); List <StatementDTO> statements = null; if (!string.IsNullOrWhiteSpace(registrOznameni)) { var ds = DataSet.CachedDatasets.Get("centralniregistroznameni"); var value = ds.GetDataObj(registrOznameni); //StatementDTO[] statements = (StatementDTO[])value.statements; statements = value?.statements?.ToObject <List <StatementDTO> >(); } string osobaInsQuery = $"{{0}}.osobaId:{o.NameId}"; //var oinsRes = HlidacStatu.Lib.Data.Insolvence.Insolvence.SimpleSearch("osobaid:" + Model.NameId, 1, 5, (int)HlidacStatu.Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.LatestUpdateDesc, false, false); //query: dluznici.osobaId:{o.NameId} var oinsDluznik = Lib.Data.Insolvence.Insolvence.SimpleSearch(string.Format(osobaInsQuery, "dluznici"), 1, 1, (int)Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.FastestForScroll, false, true); //query: veritele.osobaId:{o.NameId} var oinsVeritel = Lib.Data.Insolvence.Insolvence.SimpleSearch(string.Format(osobaInsQuery, "veritele"), 1, 1, (int)Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.FastestForScroll, false, true); //query: spravci.osobaId:{o.NameId} var oinsSpravce = Lib.Data.Insolvence.Insolvence.SimpleSearch(string.Format(osobaInsQuery, "spravci"), 1, 1, (int)Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.FastestForScroll, false, true); Dictionary <string, long> oinsolv = new Dictionary <string, long>(); oinsolv.Add("dluznici|dlužník|dlužníka|dlužníkem", oinsDluznik.Total); oinsolv.Add("veritele|věřitel|věřitele|veřitelem", oinsVeritel.Total); oinsolv.Add("spravci|insolvenční správce|insolvenčního správce|insolvenčním správcem", oinsSpravce.Total); var insRes = Lib.Data.Insolvence.Insolvence.SimpleSearch("osobaid:" + o.NameId, 1, 5, (int)Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.LatestUpdateDesc, false, true); var insDluznik = Lib.Data.Insolvence.Insolvence.SimpleSearch("osobaiddluznik:" + o.NameId, 1, 1, (int)Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.FastestForScroll, false, true); var insVeritel = Lib.Data.Insolvence.Insolvence.SimpleSearch("osobaidveritel:" + o.NameId, 1, 1, (int)Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.FastestForScroll, false, true); var insSpravce = Lib.Data.Insolvence.Insolvence.SimpleSearch("osobaidspravce:" + o.NameId, 1, 1, (int)Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.FastestForScroll, false, true); Dictionary <string, long> insolv = new Dictionary <string, long>(); insolv.Add("dluznik|dlužník|dlužníka|dlužníkem", insDluznik.Total); insolv.Add("veritel|věřitel|věřitele|veřitelem", insVeritel.Total); insolv.Add("spravce|insolvenční správce|insolvenčního správce|insolvenčním správcem", insSpravce.Total); var photo = o.GetPhotoUrl(false) + "?utm_source=nasipolitici&utm_medium=detail&utm_campaign=photo"; var sponzorstvi = o.Events(m => m.Type == (int)OsobaEvent.Types.Sponzor && m.Status != (int)OsobaEvent.Statuses.NasiPoliticiSkryte) .Select(m => new { party = m.Organizace, donatedAmount = m.AddInfoNum, year = m.DatumOd?.Year, source = m.Zdroj } ).ToArray(); var insPerson = new { debtorCount = oinsDluznik.Total, debtorLink = $"https://www.hlidacstatu.cz/insolvence/hledat?Q=dluznici.osobaId:{o.NameId}" + "&utm_source=nasipolitici&utm_medium=detail&utm_campaign=dluznikosoba", creditorCount = oinsVeritel.Total, creditorLink = $"https://www.hlidacstatu.cz/insolvence/hledat?Q=veritele.osobaId:{o.NameId}" + "&utm_source=nasipolitici&utm_medium=detail&utm_campaign=veritelosoba", bailiffCount = oinsSpravce.Total, bailiffLink = $"https://www.hlidacstatu.cz/insolvence/hledat?Q=spravci.osobaId:{o.NameId}" + "&utm_source=nasipolitici&utm_medium=detail&utm_campaign=spravceosoba", }; var insCompany = new { debtorCount = insDluznik.Total, debtorLink = $"https://www.hlidacstatu.cz/insolvence/hledat?Q=osobaiddluznik:{o.NameId}" + "&utm_source=nasipolitici&utm_medium=detail&utm_campaign=dluznikfirma", creditorCount = insVeritel.Total, creditorLink = $"https://www.hlidacstatu.cz/insolvence/hledat?Q=osobaidveritel:{o.NameId}" + "&utm_source=nasipolitici&utm_medium=detail&utm_campaign=veritelfirma", bailiffCount = insSpravce.Total, bailiffLink = $"https://www.hlidacstatu.cz/insolvence/hledat?Q=osobaidspravce:{o.NameId}" + "&utm_source=nasipolitici&utm_medium=detail&utm_campaign=spravcefirma", }; var lastUpdate = o.Events(m => true) .OrderByDescending(e => e.Created) .Select(e => e.Created) .FirstOrDefault(); var result = new { id = o.NameId, lastUpdate = lastUpdate, lastManualUpdate = o.ManuallyUpdated, namePrefix = o.TitulPred, nameSuffix = o.TitulPo, name = o.Jmeno, surname = o.Prijmeni, birthDate = o.Narozeni, deathDate = o.Umrti, status = o.StatusOsoby().ToString(), hasPhoto = o.HasPhoto(), photo = photo, description = statDescription, companyConnection = angazovanost, notificationRegisterId = registrOznameni, notificationRegisterStatements = statements, //funkce = funkceOsoba, roles = roleOsoba, insolvencyPerson = insPerson, insolvencyCompany = insCompany, source = o.GetUrl(false), sponsor = sponzorstvi, currentParty = o.CurrentPoliticalParty(), contacts = o.GetSocialContact(), connections = vazby, wikiId = o.WikiId, //sources sourceInsolvency = $"https://www.hlidacstatu.cz/insolvence/hledat?Q=osobaid:{o.NameId}" + "&utm_source=nasipolitici&utm_medium=detail&utm_campaign=osoba", sourceSponzor = $"https://www.hlidacstatu.cz/osoba/{o.NameId}" + "?utm_source=nasipolitici&utm_medium=detail&utm_campaign=osoba", sourceRegisterStatements = string.IsNullOrWhiteSpace(registrOznameni) ? "https://www.hlidacstatu.cz" + "?utm_source=nasipolitici&utm_medium=detail&utm_campaign=osoba" : $"https://www.hlidacstatu.cz/data/Detail/centralniregistroznameni/{registrOznameni}" + "?utm_source=nasipolitici&utm_medium=detail&utm_campaign=osoba", sourceRoles = $"https://www.hlidacstatu.cz/osoba/{o.NameId}" + "?utm_source=nasipolitici&utm_medium=detail&utm_campaign=osoba", }; return(Content(JsonConvert.SerializeObject(result), "application/json")); // return Json(result, JsonRequestBehavior.AllowGet); } }
public static object SetResponse(ApiResponseStatus responseStatus, string message, object data) { return(new { responseStatus, message, data }); }
public QueryResult(string message, ApiResponseStatus status) : base(message, status) { }
public static object SetResponse(ApiResponseStatus responseStatus, string message, object data) { return(new { ResponseStatus = responseStatus, Message = message, Data = data }); }
public ActionResult Watchdog(string _id, string _dataid, string dataType = "VerejnaZakazka", string query = null, string expiration = null) { string id = _id; string dataid = _dataid; id = id.ToLower(); var apiAuth = Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("id", id), new Framework.ApiCall.CallParameter("query", query), new Framework.ApiCall.CallParameter("expiration", expiration) }); if (!apiAuth.Authentificated) { //Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess, JsonRequestBehavior.AllowGet)); } else { if (apiAuth.ApiCall.User != "*****@*****.**" && apiAuth.ApiCall.User != "*****@*****.**" ) { return(Json(ApiResponseStatus.ApiUnauthorizedAccess, JsonRequestBehavior.AllowGet)); } var wdName = WatchDog.APIID_Prefix + dataid; using (HlidacStatu.Lib.Data.DbEntities db = new HlidacStatu.Lib.Data.DbEntities()) { switch (id.ToLower()) { case "add": var expirDate = Devmasters.DT.Util.ToDateTime(expiration, "yyyy-MM-ddTHH:mm:ss"); if (string.IsNullOrEmpty(query)) { return(Json(ApiResponseStatus.Error(-99, "No query"), JsonRequestBehavior.AllowGet)); } var wd2 = db.WatchDogs.AsNoTracking().Where(m => m.Name == wdName).FirstOrDefault(); if (wd2 != null) { wd2.SearchTerm = query; wd2.Expires = expirDate; wd2.Save(); } else { var dt = dataType; HlidacStatu.Lib.Data.WatchDog wd = new HlidacStatu.Lib.Data.WatchDog(); wd.Created = DateTime.Now; wd.UserId = apiAuth.ApiCall.UserId; wd.StatusId = 1; wd.SearchTerm = query; wd.PeriodId = 2; //daily wd.FocusId = 0; wd.Name = wdName; wd.Expires = expirDate; wd.SpecificContact = "HTTPPOSTBACK"; if (dt.ToLower() == typeof(Smlouva).Name.ToLower()) { wd.dataType = typeof(Smlouva).Name; } else if (dt.ToLower() == typeof(VerejnaZakazka).Name.ToLower()) { wd.dataType = typeof(VerejnaZakazka).Name; } else if (dt.ToLower().StartsWith(typeof(HlidacStatu.Lib.Data.External.DataSets.DataSet).Name.ToLower())) { var dataSetId = dt.Replace("DataSet.", ""); if (HlidacStatu.Lib.Data.External.DataSets.DataSet.ExistsDataset(dataSetId) == false) { HlidacStatu.Util.Consts.Logger.Error("AddWd - try to hack, wrong dataType = " + dataType + "." + dataSetId); throw new ArgumentOutOfRangeException("AddWd - try to hack, wrong dataType = " + dataType + "." + dataSetId); } wd.dataType = typeof(HlidacStatu.Lib.Data.External.DataSets.DataSet).Name + "." + dataSetId; } else if (dt == WatchDog.AllDbDataType) { wd.dataType = dt; } else { HlidacStatu.Util.Consts.Logger.Error("AddWd - try to hack, wrong dataType = " + dataType); throw new ArgumentOutOfRangeException("AddWd - try to hack, wrong dataType = " + dataType); } wd.Save(); } break; case "delete": case "disable": case "get": case "enable": var wd1 = db.WatchDogs.AsNoTracking().Where(m => m.Name == wdName).FirstOrDefault(); if (wd1 == null) { return(Json(ApiResponseStatus.Error(-404, "Watchdog not found"), JsonRequestBehavior.AllowGet)); } if (id == "delete") { wd1.Delete(); return(Json(new { Ok = true }, JsonRequestBehavior.AllowGet)); } if (id == "disable") { wd1.StatusId = 0; } if (id == "delete") { wd1.StatusId = 1; } if (id == "get") { return(Content(Newtonsoft.Json.JsonConvert.SerializeObject(new { id = wd1.Name.Replace("APIID:", ""), expiration = wd1.Expires, query = wd1.SearchTerm }), "text/json")); } wd1.Save(); break; default: break; } } return(Json(new { Ok = true }, JsonRequestBehavior.AllowGet)); } }
public static object SetResponse( ApiResponseStatus responseStatus, string message, ApiOpStatus operationStatus, object data) => new { ResponseStatus = responseStatus, Message = message, OperationStatus = operationStatus, Data = data };
public ActionResult DatasetItem_Post(string id, string dataid, string mode = "", bool?rewrite = false) //rewrite for backwards compatibility { var apiAuth = Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("id", id), new Framework.ApiCall.CallParameter("dataid", dataid) }); if (!apiAuth.Authentificated) { //Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess)); } else { mode = mode.ToLower(); if (string.IsNullOrEmpty(mode)) { if (rewrite == true) { mode = "rewrite"; } else { mode = "skip"; } } var data = ReadRequestBody(this.Request); id = id.ToLower(); try { var ds = DataSet.CachedDatasets.Get(id); var newId = dataid; if (mode == "rewrite") { newId = ds.AddData(data, dataid, apiAuth.ApiCall.User, true); } else if (mode == "merge") { if (ds.ItemExists(dataid)) { //merge var oldObj = Lib.Data.External.DataSets.Util.CleanHsProcessTypeValuesFromObject(ds.GetData(dataid)); var newObj = Lib.Data.External.DataSets.Util.CleanHsProcessTypeValuesFromObject(data); newObj["DbCreated"] = oldObj["DbCreated"]; newObj["DbCreatedBy"] = oldObj["DbCreatedBy"]; var diffs = Lib.Data.External.DataSets.Util.CompareObjects(oldObj, newObj); if (diffs.Count > 0) { oldObj.Merge(newObj, new Newtonsoft.Json.Linq.JsonMergeSettings() { MergeArrayHandling = Newtonsoft.Json.Linq.MergeArrayHandling.Union, MergeNullValueHandling = Newtonsoft.Json.Linq.MergeNullValueHandling.Ignore } ); newId = ds.AddData(oldObj.ToString(), dataid, apiAuth.ApiCall.User, true); } } else { newId = ds.AddData(data, dataid, apiAuth.ApiCall.User, true); } } else //skip { if (!ds.ItemExists(dataid)) { newId = ds.AddData(data, dataid, apiAuth.ApiCall.User, true); } } return(Json(new { id = newId }, JsonRequestBehavior.AllowGet)); } catch (DataSetException dse) { return(Json(dse.APIResponse, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { HlidacStatu.Util.Consts.Logger.Error("Dataset API", ex); return(Json(ApiResponseStatus.GeneralExceptionError(ex), JsonRequestBehavior.AllowGet)); } } }
public ActionResult DatasetSearch(string _id, string q, int?page, string sort = null, string desc = "0") { string id = _id; page = page ?? 1; if (page < 1) { page = 1; } if (page > 200) { return(Content( Newtonsoft.Json.JsonConvert.SerializeObject( new { total = 0, page = 201, results = Array.Empty <dynamic>() } ) , "application/json")); } if (!Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("id", id), new Framework.ApiCall.CallParameter("q", q), new Framework.ApiCall.CallParameter("page", page?.ToString()), new Framework.ApiCall.CallParameter("sort", sort) }) .Authentificated) { //Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess, JsonRequestBehavior.AllowGet)); } else { try { var ds = DataSet.CachedDatasets.Get(id?.ToLower()); if (ds == null) { return(Json(ApiResponseStatus.DatasetNotFound, JsonRequestBehavior.AllowGet)); } bool bDesc = (desc == "1" || desc?.ToLower() == "true"); var res = ds.SearchData(q, page.Value, 50, sort + (bDesc ? " desc" : "")); res.Result = res.Result.Select(m => { m.DbCreatedBy = null; return(m); }); return(Content( Newtonsoft.Json.JsonConvert.SerializeObject( new { total = res.Total, page = res.Page, results = res.Result } ) , "application/json")); } catch (DataSetException dex) { return(Json(dex.APIResponse, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(Json(ApiResponseStatus.GeneralExceptionError(ex), JsonRequestBehavior.AllowGet)); } } }
public static IApiResponse <IPaged <IEnumerable <T> > > ToApiResponsePaged <T>(this IQueryable <T> source, int?Page, int?PageSize, out int Count, IEnumerable <string> decryptFieldsOnRead, string encryptionKey, string message = null, ApiResponseStatus apiResponseStatus = ApiResponseStatus.Succeeded) { source = source.Paged(Page, PageSize, out Count); var data = Count > 0 ? source.ToList() : new List <T>(); if (decryptFieldsOnRead.Any()) { foreach (var record in data) { foreach (var prop in decryptFieldsOnRead) { var value = record.GetType().GetProperty(prop).GetValue(record).ToString(); record.GetType().GetProperty(prop).SetValue(record, value.DecryptData(encryptionKey)); } } } return(new ApiResponse <IPaged <IEnumerable <T> > >() { Data = new Paged <IEnumerable <T> >(Page.Value, PageSize.Value, Count, data), Message = message, Status = apiResponseStatus }); }
public static async Task <IActionResult> ToJsonApiResponseAsync <T>(this IQueryable <T> source, string message = null, ApiResponseStatus apiResponseStatus = ApiResponseStatus.Succeeded) { return(new ContentResult() .OutputJson ( new ApiResponse <IEnumerable <T> >() { Data = await source.Future().ToListAsync(), Message = message, Status = apiResponseStatus } )); }
public ActionResult DatasetSearch(string id, string q, int?page, string sort = null, bool desc = false) { page = page ?? 1; if (page < 1) { page = 1; } if (page > 200) { page = 200; } if (!Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("id", id), new Framework.ApiCall.CallParameter("q", q), new Framework.ApiCall.CallParameter("page", page?.ToString()), new Framework.ApiCall.CallParameter("sort", sort) }) .Authentificated) { //Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess)); } else { try { var ds = DataSet.CachedDatasets.Get(id?.ToLower()); if (false) { var res = ds.SearchDataRaw(q, page.Value, 50, null); System.Text.StringBuilder sb = new System.Text.StringBuilder(512 * (int)res.Total); sb.Append($"{{ \"total\": {res.Total}, \"page\": {page}, \"results\" : [ "); foreach (var item in res.Result) { sb.Append(item.Item2 + ", "); } sb.Remove(sb.Length - 2, 2); sb.Append($"]}}"); return(Content(sb.ToString(), "application/json")); } else { var res = ds.SearchData(q, page.Value, 50, sort + (desc ? " desc" : "")); res.Result = res.Result.Select(m => { m.DbCreatedBy = null; return(m); }); return(Content( Newtonsoft.Json.JsonConvert.SerializeObject( new { total = res.Total, page = res.Page, results = res.Result } ) , "application/json")); } } catch (DataSetException) { return(Json(ApiResponseStatus.DatasetNotFound, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(Json(ApiResponseStatus.GeneralExceptionError(ex), JsonRequestBehavior.AllowGet)); } } }