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 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 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 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 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 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 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 ActionResult NasiPolitici_GetData(string 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 statDescription = HlidacStatu.Util.InfoFact.RenderInfoFacts( o.InfoFacts().Where(i => i.Level != HlidacStatu.Util.InfoFact.ImportanceLevel.Stat).ToArray() , 4, true, true, "", "{0}"); var angazovanost = HlidacStatu.Util.InfoFact.RenderInfoFacts( o.InfoFacts().Where(m => m.Level == HlidacStatu.Util.InfoFact.ImportanceLevel.Stat).ToArray() , 4, true, true, "", "{0}"); int[] types = { (int)HlidacStatu.Lib.Data.OsobaEvent.Types.VolenaFunkce, (int)HlidacStatu.Lib.Data.OsobaEvent.Types.PolitickaPracovni, (int)HlidacStatu.Lib.Data.OsobaEvent.Types.Politicka, (int)HlidacStatu.Lib.Data.OsobaEvent.Types.VerejnaSpravaJine, (int)HlidacStatu.Lib.Data.OsobaEvent.Types.VerejnaSpravaPracovni, }; var funkceOsoba = o.Description(true, m => types.Contains(m.Type), 20); var roleOsoba = o.Events(m => types.Contains(m.Type)) .Select(e => new { role = e.AddInfo, dateFrom = e.DatumOd, dateTo = e.DatumDo, organisation = e.Organizace }) .ToArray(); 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 = HlidacStatu.Lib.Data.Insolvence.Insolvence.SimpleSearch(string.Format(osobaInsQuery, "dluznici"), 1, 1, (int)HlidacStatu.Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.FastestForScroll, false, false); //query: veritele.osobaId:{o.NameId} var oinsVeritel = HlidacStatu.Lib.Data.Insolvence.Insolvence.SimpleSearch(string.Format(osobaInsQuery, "veritele"), 1, 1, (int)HlidacStatu.Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.FastestForScroll, false, false); //query: spravci.osobaId:{o.NameId} var oinsSpravce = HlidacStatu.Lib.Data.Insolvence.Insolvence.SimpleSearch(string.Format(osobaInsQuery, "spravci"), 1, 1, (int)HlidacStatu.Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.FastestForScroll, false, false); 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 = HlidacStatu.Lib.Data.Insolvence.Insolvence.SimpleSearch("osobaid:" + o.NameId, 1, 5, (int)HlidacStatu.Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.LatestUpdateDesc, false, false); var insDluznik = HlidacStatu.Lib.Data.Insolvence.Insolvence.SimpleSearch("osobaiddluznik:" + o.NameId, 1, 1, (int)HlidacStatu.Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.FastestForScroll, false, false); var insVeritel = HlidacStatu.Lib.Data.Insolvence.Insolvence.SimpleSearch("osobaidveritel:" + o.NameId, 1, 1, (int)HlidacStatu.Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.FastestForScroll, false, false); var insSpravce = HlidacStatu.Lib.Data.Insolvence.Insolvence.SimpleSearch("osobaidspravce:" + o.NameId, 1, 1, (int)HlidacStatu.Lib.Searching.InsolvenceSearchResult.InsolvenceOrderResult.FastestForScroll, false, false); 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); var sponzorstvi = o.Events(m => m.Type == (int)HlidacStatu.Lib.Data.OsobaEvent.Types.Sponzor) .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}", creditorCount = oinsVeritel.Total, creditorLink = $"https://www.hlidacstatu.cz/insolvence/hledat?Q=veritele.osobaId:{o.NameId}", bailiffCount = oinsSpravce.Total, bailiffLink = $"https://www.hlidacstatu.cz/insolvence/hledat?Q=spravci.osobaId:{o.NameId}" }; var insCompany = new { debtorCount = insDluznik.Total, debtorLink = $"https://www.hlidacstatu.cz/insolvence/hledat?Q=osobaiddluznik:{o.NameId}", creditorCount = insVeritel.Total, creditorLink = $"https://www.hlidacstatu.cz/insolvence/hledat?Q=osobaidveritel:{o.NameId}", bailiffCount = insSpravce.Total, bailiffLink = $"https://www.hlidacstatu.cz/insolvence/hledat?Q=osobaidspravce:{o.NameId}" }; string politickaStrana = o.Events(ev => ev.Type == (int)OsobaEvent.Types.Politicka && ev.AddInfo == "člen strany") .OrderByDescending(ev => ev.DatumOd) .Select(ev => ev.Organizace) .FirstOrDefault(); var result = new { id = o.NameId, namePrefix = o.TitulPred, nameSuffix = o.TitulPo, name = o.Jmeno, surname = o.Prijmeni, birthDate = o.Narozeni, deathDate = o.Umrti, status = o.StatusOsoby().ToString(), photo = photo, description = statDescription, companyConnection = angazovanost, //funkce = funkceOsoba, roles = roleOsoba, insolvencyPerson = insPerson, insolvencyCompany = insCompany, source = o.GetUrl(false), sponsor = sponzorstvi, currentParty = politickaStrana, contacts = o.GetSocialContact() }; return(Content(JsonConvert.SerializeObject(result), "application/json")); // return Json(result, JsonRequestBehavior.AllowGet); } }