Exemplo n.º 1
0
        public static majitele GetMajitele(xmlSubjekt subj)
        {
            majitele t = new majitele();

            if (Devmasters.TextUtil.IsNumeric(subj.ico))
            {
                subj.ico = subj.ico.PadLeft(8, '0');
            }
            t.ico            = subj.ico;
            t.nazev_subjektu = subj.nazev;
            t.id             = t.ico;

            var sekce = subj.udaje
                        .Where(m => m.udajTyp.kod == "SKUTECNY_MAJITEL_SEKCE")
                        .FirstOrDefault();

            if (sekce == null)
            {
                return(null);
            }

            majitel_base[] _majitele = null;
            if (sekce.podudaje != null)
            {
                _majitele = sekce.podudaje.Where(m => m?.udajTyp?.kod == "PRIMY_SKUTECNY_MAJITEL" || m?.udajTyp?.kod == "SKUTECNY_MAJITEL")
                            .Select(m => majitel_base.Get(m)).ToArray();
            }
            if (_majitele?.Count() > 0)
            {
                for (int i = 0; i < _majitele.Count(); i++)
                {
                    var maj = _majitele[i];
                    if (false && maj.osoba_datum_narozeni.Year < 1900) //nema datum tak ho dohledam v jinych castech, nyni vypnuto
                    {
                        //find osobu v celem zaznamu
                        foreach (var blok in subj.udaje)
                        {
                            if (blok?.podudaje?.Any() == true)
                            {
                                foreach (xmlSubjektUdajUdaj udaj in blok.podudaje)
                                {
                                    if (udaj.osoba != null &&
                                        string.Compare(udaj.osoba.jmeno, maj.osoba_jmeno, true) == 0 &&
                                        string.Compare(udaj.osoba.prijmeni, maj.osoba_prijmeni, true) == 0 &&
                                        udaj.osoba.narozDatum.Year > 1900
                                        )
                                    {
                                        maj.osoba_datum_narozeni = udaj.osoba.narozDatum;
                                    }
                                }
                            }
                        }
                    }
                }
                t.skutecni_majitele = _majitele;
                return(t);
            }
            return(null);
        }
Exemplo n.º 2
0
        private static void ProcessXML(Devmasters.Args args, string name)
        {
            logger.Debug($"Starting {name}.xml");
            if (System.IO.File.Exists(name + ".xml"))
            {
                if (args.Exists("/uselocal"))
                {
                    //skip next, use local file
                }
                else if (force || (DateTime.Now - new System.IO.FileInfo(name + ".xml").LastWriteTime).TotalDays > 4)
                {
                    logger.Debug($"downloading new {name}.xml");
                    Console.WriteLine($"Downloading new {name}");
                    DownloadFile(name);
                }
            }
            else
            {
                logger.Debug($"downloading new {name}.xml");
                Console.WriteLine($"Downloading {name}");
                DownloadFile(name);
            }

            if (!System.IO.File.Exists(name + ".xml"))
            {
                return;
            }

            rawXML d = null;

            Console.WriteLine($"Deserializing {name}");
            logger.Debug($"Deserializing {name}.xml");
            using (var xmlReader = new System.IO.StreamReader(name + ".xml"))
            {
                var serializer = new XmlSerializer(typeof(rawXML));
                d = (rawXML)serializer.Deserialize(xmlReader);
            }
            Console.WriteLine($"{d.Subjekt?.Count()} subjects");



            Devmasters.Batch.Manager.DoActionForAll <xmlSubjekt>(d.Subjekt //.Where(m=>m.ico== "3493661")  //debug
                                                                 , subj =>
            {
                majitele item = majitele.GetMajitele(subj);
                if (item != null && item?.skutecni_majitele?.Count() > 0)
                {
                    if (!ds.ItemExists(item.ico) || force)
                    {
                        item.UpdateOsobaId();
                        ds.AddOrUpdateItem(item, HlidacStatu.Api.V2.Dataset.Typed.ItemInsertMode.rewrite);
                    }
                    else
                    {
                        //check change
                        var old = ds.GetItem(item.ico);
                        if (old != null)
                        {
                            var same = true;
                            if (old.skutecni_majitele?.Count() != item.skutecni_majitele?.Count())
                            {
                                same = false;
                            }
                            else if (item.skutecni_majitele?.Count() == old.skutecni_majitele?.Count() && item.skutecni_majitele?.Count() > 0)
                            {
                                foreach (var sm in item.skutecni_majitele)
                                {
                                    same = same && old.skutecni_majitele.Any(m =>
                                                                             m.osoba_jmeno == sm.osoba_jmeno &&
                                                                             m.osoba_prijmeni == sm.osoba_prijmeni &&
                                                                             m.osoba_datum_narozeni == sm.osoba_datum_narozeni &&
                                                                             m.osoba_titul_pred == sm.osoba_titul_pred &&
                                                                             m.osoba_titul_za == sm.osoba_titul_za &&
                                                                             m.adresa_cast_obce == sm.adresa_cast_obce &&
                                                                             m.adresa_cislo_ev == sm.adresa_cislo_ev &&
                                                                             m.adresa_cislo_or == sm.adresa_cislo_or &&
                                                                             m.adresa_cislo_po == sm.adresa_cislo_po &&
                                                                             m.adresa_obec == sm.adresa_obec &&
                                                                             m.adresa_okres == sm.adresa_okres &&
                                                                             m.adresa_psc == sm.adresa_psc &&
                                                                             m.adresa_stat_nazev == sm.adresa_stat_nazev &&
                                                                             m.adresa_text == sm.adresa_text &&
                                                                             m.adresa_ulice == sm.adresa_ulice &&
                                                                             m.slovni_vyjadreni == sm.slovni_vyjadreni &&
                                                                             m.podil == sm.podil &&
                                                                             m.postaveni == sm.postaveni &&
                                                                             !string.IsNullOrEmpty(m.osobaId)
                                                                             );
                                }
                            }
                            if (same == false)
                            {
                                item.UpdateOsobaId();
                                ds.AddOrUpdateItem(item, HlidacStatu.Api.V2.Dataset.Typed.ItemInsertMode.rewrite);
                            }
                        }
                    }
                }
                return(new Devmasters.Batch.ActionOutputData());
            }, Devmasters.Batch.Manager.DefaultOutputWriter, Devmasters.Batch.Manager.DefaultProgressWriter,
                                                                 !System.Diagnostics.Debugger.IsAttached,
                                                                 maxDegreeOfParallelism: 4, prefix: $"{name} ITEMS ");
        }