public Lib.Data.Osoba Osoba() { if (_osoba == null) { _osoba = Data.Osoby.GetByNameId.Get(this.Item); } return(_osoba); }
public static List <Edge> vsechnyDcerineVazbyInternal(Lib.Data.Osoba person, int level, bool goDeep, Edge parent, ExcludeDataCol excludeICO = null, IEnumerable <int> excludeOsobaId = null, DateTime?datumOd = null, DateTime?datumDo = null, Relation.AktualnostType aktualnost = Relation.AktualnostType.Libovolny) { if (excludeOsobaId == null) { excludeOsobaId = new int[] { } } ; string sql = @"select vazbakIco, vazbakOsobaId, datumOd, datumDo, typVazby, pojmenovaniVazby, podil from OsobaVazby where osobaId = @osobaId and ( (datumOd <= @datumOd or @datumOd is null) OR (datumOd >= @datumOd and datumDo is null) ) and (datumDo >= @datumDo or datumDo is null or @datumDo is null) "; var p = new IDataParameter[] { new SqlParameter("osobaId", person.InternalId), new SqlParameter("datumOd", datumOd), new SqlParameter("datumDo", datumDo), }; var relForPerson = GetChildrenRelations(sql, Node.NodeType.Person, person.InternalId.ToString(), datumOd, datumDo, p, level, goDeep, parent, excludeICO, aktualnost); var relForConnectedPersons = new List <Edge>(); using (DbEntities db = new DbEntities()) { var navazaneOsoby = db.OsobaVazby.Where(m => m.OsobaID == person.InternalId && m.VazbakOsobaId != null).ToList(); if (navazaneOsoby.Count > 0) { foreach (var ov in navazaneOsoby) { Edge parentRelFound = relForPerson .Where(r => r.To.Type == Node.NodeType.Person && r.To.Id == ov.VazbakOsobaId.Value.ToString()) .FirstOrDefault(); if (!excludeOsobaId.Contains(ov.VazbakOsobaId.Value)) { Osoba o = Osoby.GetById.Get(ov.VazbakOsobaId.Value); excludeOsobaId = excludeOsobaId.Union(new int[] { ov.VazbakOsobaId.Value }); var rel = vsechnyDcerineVazbyInternal(o, level + 1, true, parentRelFound, excludeOsobaId: excludeOsobaId, aktualnost: aktualnost); relForConnectedPersons = Edge.Merge(relForConnectedPersons, rel); } } } } var finalRel = Edge.Merge(relForConnectedPersons, relForPerson); return(finalRel); }
public OsobaStatistic(Data.Osoba o, Data.Relation.AktualnostType aktualnost, bool refresh = false) { this.Item = o.NameId; this._osoba = o; this.Aktualnost = aktualnost; osq = new OsobaStatisticQuery() { NameId = this.Item, Aktualnost = this.Aktualnost }; if (refresh) { osobaStatcache.Delete(osq); } this.InitData(); }
public ActionResult FindOsobaId(string jmeno, string prijmeni, string celejmeno, string narozeni, string funkce) { if (!Framework.ApiAuth.IsApiAuth(this, parameters: new Framework.ApiCall.CallParameter[] { new Framework.ApiCall.CallParameter("jmeno", jmeno), new Framework.ApiCall.CallParameter("prijmeni", prijmeni), new Framework.ApiCall.CallParameter("celejmeno", celejmeno), new Framework.ApiCall.CallParameter("narozeni", narozeni), new Framework.ApiCall.CallParameter("funkce", funkce) }) .Authentificated) { //Response.StatusCode = 401; return(Json(ApiResponseStatus.ApiUnauthorizedAccess, JsonRequestBehavior.AllowGet)); } else { DateTime?dt = Devmasters.DT.Util.ToDateTime(narozeni, "yyyy-MM-dd"); if (dt.HasValue == false && string.IsNullOrEmpty(funkce)) { var status = ApiResponseStatus.InvalidFormat; status.error.errorDetail = "invalid date format for parameter 'narozeni'. Use yyyy-MM-dd format."; return(Json(status, JsonRequestBehavior.AllowGet)); } if (string.IsNullOrEmpty(jmeno) && string.IsNullOrEmpty(prijmeni) && !string.IsNullOrEmpty(celejmeno)) { Lib.Data.Osoba osobaZeJmena = Lib.Validators.JmenoInText(celejmeno); if (osobaZeJmena == null) { jmeno = ""; prijmeni = ""; } else { jmeno = osobaZeJmena.Jmeno; prijmeni = osobaZeJmena.Prijmeni; } } if (string.IsNullOrEmpty(jmeno) || string.IsNullOrEmpty(prijmeni)) { var status = ApiResponseStatus.InvalidFormat; status.error.errorDetail = "no data for parameter 'jmeno' or 'prijmeni' or 'celejmeno'."; return(Json(status, JsonRequestBehavior.AllowGet)); } IEnumerable <Lib.Data.Osoba> found = null; if (dt.HasValue) { found = FindByDate(jmeno, prijmeni, dt); } else { found = FindByFunkce(jmeno, prijmeni, funkce); } if (found == null || found?.Count() == 0) { return(Json(new { }, JsonRequestBehavior.AllowGet)); } else { var f = found.First(); return(Json(new { Jmeno = f.Jmeno, Prijmeni = f.Prijmeni, //Narozeni = found.Narozeni.Value.ToString("yyyy-MM-dd"), OsobaId = f.NameId } , JsonRequestBehavior.AllowGet)); } } }
public virtual string AddData(string data, string id, string createdBy, bool validateSchema = true, bool skipOCR = false) { Newtonsoft.Json.Linq.JObject obj = Newtonsoft.Json.Linq.JObject.Parse(data); dynamic objDyn = Newtonsoft.Json.Linq.JObject.Parse(data); if (validateSchema) { Newtonsoft.Json.Schema.JSchema schema = DataSetDB.Instance.GetRegistration(this.datasetId).GetSchema(); if (schema != null) { IList <string> errors; if (!obj.IsValid(schema, out errors)) { if (errors == null || errors?.Count == 0) { errors = new string[] { "", "" } } ; throw DataSetException.GetExc(this.datasetId, ApiResponseStatus.DatasetItemInvalidFormat.error.number, ApiResponseStatus.DatasetItemInvalidFormat.error.description, errors.Aggregate((f, s) => f + ";" + s) ); } } } if (string.IsNullOrEmpty(id)) { throw new DataSetException(this.datasetId, ApiResponseStatus.DatasetItemNoSetID); } if (objDyn.Id == null && objDyn.id == null) { throw new DataSetException(this.datasetId, ApiResponseStatus.DatasetItemNoSetID); } else { id = objDyn.Id == null ? (string)objDyn.id : (string)objDyn.Id; } objDyn.DbCreated = DateTime.UtcNow; objDyn.DbCreatedBy = createdBy; //check special HsProcessType var jobj = (Newtonsoft.Json.Linq.JObject)objDyn; var jpaths = jobj .SelectTokens("$..HsProcessType") .ToArray(); var jpathObjs = jpaths.Select(j => j.Parent.Parent).ToArray(); if (this.DatasetId == DataSetDB.DataSourcesDbName) //don't analyze for registration of new dataset { jpathObjs = new JContainer[] { } } ; foreach (var jo in jpathObjs) { if (jo["HsProcessType"].Value <string>() == "person") { var jmenoAttrName = jo.Children() .Select(c => c as JProperty) .Where(c => c != null) .Where(c => c.Name.ToLower() == "jmeno" || c.Name.ToLower() == "name") .FirstOrDefault()?.Name; var prijmeniAttrName = jo.Children() .Select(c => c as JProperty) .Where(c => c != null) .Where(c => c.Name.ToLower() == "prijmeni" || c.Name.ToLower() == "surname") .FirstOrDefault()?.Name; var narozeniAttrName = jo.Children() .Select(c => c as JProperty) .Where(c => c != null) .Where(c => c.Name.ToLower() == "narozeni" || c.Name.ToLower() == "birthdate") .FirstOrDefault()?.Name; var osobaIdAttrName = jo.Children() .Select(c => c as JProperty) .Where(c => c != null) .Where(c => c.Name.ToLower() == "osobaid") .FirstOrDefault()?.Name ?? "OsobaId"; var celejmenoAttrName = jo.Children() .Select(c => c as JProperty) .Where(c => c != null) .Where(c => c.Name.ToLower() == "celejmeno" || c.Name.ToLower() == "fullname") .FirstOrDefault()?.Name; #region FindOsobaId if (jmenoAttrName != null && prijmeniAttrName != null && narozeniAttrName != null) { if (string.IsNullOrEmpty(jo["OsobaId"]?.Value <string>()) && jo[narozeniAttrName] != null && jo[narozeniAttrName].Value <DateTime?>().HasValue ) //pokud OsobaId je vyplnena, nehledej jinou { string osobaId = null; var osobaInDb = Osoba.GetByName( jo[jmenoAttrName].Value <string>(), jo[prijmeniAttrName].Value <string>(), jo[narozeniAttrName].Value <DateTime>() ); if (osobaInDb == null) { osobaInDb = Osoba.GetByNameAscii( jo[jmenoAttrName].Value <string>(), jo[prijmeniAttrName].Value <string>(), jo[narozeniAttrName].Value <DateTime>() ); } if (osobaInDb != null && string.IsNullOrEmpty(osobaInDb.NameId)) { osobaInDb.NameId = osobaInDb.GetUniqueNamedId(); osobaInDb.Save(); } osobaId = osobaInDb?.NameId; jo["OsobaId"] = osobaId; } } else if (celejmenoAttrName != null && narozeniAttrName != null) { if (string.IsNullOrEmpty(jo["OsobaId"]?.Value <string>()) && jo[narozeniAttrName].Value <DateTime?>().HasValue ) //pokud OsobaId je vyplnena, nehledej jinou { string osobaId = null; Lib.Data.Osoba osobaZeJmena = Lib.Validators.OsobaInText(jo[celejmenoAttrName].Value <string>()); if (osobaZeJmena != null) { var osobaInDb = Osoba.GetByName( osobaZeJmena.Jmeno, osobaZeJmena.Prijmeni, jo[narozeniAttrName].Value <DateTime>() ); if (osobaInDb == null) { osobaInDb = Osoba.GetByNameAscii( osobaZeJmena.Jmeno, osobaZeJmena.Prijmeni, jo[narozeniAttrName].Value <DateTime>() ); } if (osobaInDb != null && string.IsNullOrEmpty(osobaInDb.NameId)) { osobaInDb.NameId = osobaInDb.GetUniqueNamedId(); osobaInDb.Save(); } osobaId = osobaInDb?.NameId; } jo["OsobaId"] = osobaId; } } #endregion } } string updatedData = Newtonsoft.Json.JsonConvert.SerializeObject(objDyn); PostData pd = PostData.String(updatedData); var tres = client.LowLevel.Index <StringResponse>(client.ConnectionSettings.DefaultIndex, id, pd); //todo: es7 check if (tres.Success) { Newtonsoft.Json.Linq.JObject jobject = Newtonsoft.Json.Linq.JObject.Parse(tres.Body); string finalId = jobject.Value <string>("_id"); //do DocumentMining after successfull save //record must exists before document mining bool needsOCR = false; if (skipOCR == false) { foreach (var jo in jpathObjs) { if (jo["HsProcessType"].Value <string>() == "document") { if (jo["DocumentUrl"] != null && string.IsNullOrEmpty(jo["DocumentPlainText"].Value <string>())) { if (Uri.TryCreate(jo["DocumentUrl"].Value <string>(), UriKind.Absolute, out var uri2Ocr)) { //get text from document //var url = Devmasters.Core.Util.Config.GetConfigValue("ESConnection"); //url = url + $"/{client.ConnectionSettings.DefaultIndex}/data/{finalId}/_update"; //string callback = HlidacStatu.Lib.OCR.Api.CallbackData.PrepareElasticCallbackDataForOCRReq($"{jo.Path}.DocumentPlainText", false); //var ocrCallBack = new HlidacStatu.Lib.OCR.Api.CallbackData(new Uri(url), callback, HlidacStatu.Lib.OCR.Api.CallbackData.CallbackType.LocalElastic); //HlidacStatu.Lib.OCR.Api.Client.TextFromUrl( // Devmasters.Core.Util.Config.GetConfigValue("OCRServerApiKey"), // uri2Ocr, "Dataset+" + createdBy, // HlidacStatu.Lib.OCR.Api.Client.TaskPriority.Standard, HlidacStatu.Lib.OCR.Api.Client.MiningIntensity.Maximum // ); //TODOcallBackData: ocrCallBack); needsOCR = true; } } } } } if (needsOCR) { Lib.Data.ItemToOcrQueue.AddNewTask(ItemToOcrQueue.ItemToOcrType.Dataset, finalId, this.datasetId, OCR.Api.Client.TaskPriority.Standard); } return(finalId); } else { var status = ApiResponseStatus.DatasetItemSaveError; if (tres.TryGetServerError(out var servererr)) { status.error.errorDetail = servererr.Error.ToString(); } throw new DataSetException(this.datasetId, status); } //return res.ToString(); //ElasticsearchResponse<string> result = this.client.Raw.Index(document.Index, document.Type, document.Id, documentJson); }