Beispiel #1
0
 private Osoba CreateNewPerson(OsobaId id)
 {
     GlobalStats.NewOsobaCount++;
     return(new Osoba {
         IdPuvodce = id.IdPuvodce, IdOsoby = id.IdOsoby, Id = id.GetId(), SpisovaZnacka = id.SpisovaZnacka
     });
 }
Beispiel #2
0
        private Osoba ProcessPersonChangedEvent(XDocument xdoc, Rizeni rizeni, long eventId)
        {
            try
            {
                GlobalStats.OsobaChangedEvent++;
                var idPuvodce = ParseValue(xdoc, "idOsobyPuvodce");
                var o         = xdoc.Descendants("osoba").FirstOrDefault();
                var osobaId   = ParseValue(o, "idOsoby");
                var key       = new OsobaId {
                    IdOsoby = osobaId, IdPuvodce = idPuvodce, SpisovaZnacka = rizeni.SpisovaZnacka
                };
                var osoba = Repository.GetPerson(key);

                if (UpdatePerson(osoba, o))
                {
                    Repository.SetPerson(osoba);
                }

                return(osoba);
            }
            catch (Exception e)
            {
                GlobalStats.WriteError(e.Message, eventId);
                throw;
            }
        }
Beispiel #3
0
        public Osoba GetPerson(OsobaId id)
        {
            var res = Elastic.GetESClient(Database.Osoba)
                      .Search <Osoba>(s => s
                                      .Size(1)   //zrus, pokud ma vratit vice zaznamu
                                      .Query(q => q.Term(t => t.Field(f => f.Id).Value(id.GetId())))
                                      );

            if (res.IsValid)
            {
                Stats.PersonGet++;
                return(res.Hits.FirstOrDefault()?.Source);
            }
            throw new ElasticsearchClientException(res.ServerError?.ToString());
        }
Beispiel #4
0
        private Osoba ProcessAddressChangedEvent(XDocument xdoc, Rizeni rizeni, long eventId)
        {
            try
            {
                GlobalStats.AdresaChangedEvent++;
                var idPuvodce = ParseValue(xdoc, "idOsobyPuvodce");
                var o         = xdoc.Descendants("osoba").FirstOrDefault();
                var osobaId   = ParseValue(o, "idOsoby");
                var key       = new OsobaId {
                    IdOsoby = osobaId, IdPuvodce = idPuvodce, SpisovaZnacka = rizeni.SpisovaZnacka
                };
                var osoba = Repository.GetPerson(key);

                var changed = UpdatePerson(osoba, o);

                var a = o.Descendants("adresa").FirstOrDefault();

                if (a != null)
                {
                    var druhAdresy = ParseValue(a, "druhAdresy");
                    if (druhAdresy == "TRVALÁ" || druhAdresy == "SÍDLO FY")
                    {
                        changed |= Update(osoba, p => p.Mesto, ParseValue(a, "mesto"));
                        changed |= Update(osoba, p => p.Okres, ParseValue(a, "okres"));
                        changed |= Update(osoba, p => p.Zeme, ParseValue(a, "zeme"));
                        changed |= Update(osoba, p => p.Psc, ParseValue(a, "psc"));
                    }
                }

                if (changed)
                {
                    Repository.SetPerson(osoba);
                }

                return(osoba);
            }
            catch (Exception e)
            {
                GlobalStats.WriteError(e.Message, eventId);
                throw;
            }
        }
Beispiel #5
0
 public Osoba GetPerson(OsobaId id) => OsobaCache.GetOrAdd(id.GetId(), UnderlyingRepository.GetPerson(id) ?? CreateNewPerson(id));