Example #1
0
        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 }));
            }
        }
Example #2
0
        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" }));
            }
        }
Example #3
0
        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));
        }
Example #4
0
        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));
        }
Example #5
0
        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);
            }
        }
Example #8
0
        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);
            }
        }