Example #1
0
        public static OsobaEvent CreateOrUpdate(OsobaEvent osobaEvent, string user)
        {
            using (DbEntities db = new DbEntities())
            {
                OsobaEvent eventToUpdate = null;
                // známe PK
                if (osobaEvent.pk > 0)
                {
                    eventToUpdate = db.OsobaEvent
                                    .Where(ev =>
                                           ev.pk == osobaEvent.pk
                                           )
                                    .FirstOrDefault();

                    if (eventToUpdate != null)
                    {
                        return(UpdateEvent(eventToUpdate, osobaEvent, user, db));
                    }
                }

                eventToUpdate = GetDuplicate(osobaEvent, db);

                if (eventToUpdate != null)
                {
                    return(UpdateEvent(eventToUpdate, osobaEvent, user, db));
                }

                return(CreateEvent(osobaEvent, user, db));
            }
        }
Example #2
0
        public OsobaEvent AddSponsoring(string strana, int rok, decimal castka, string zdroj, string user, bool rewrite = false, bool checkDuplicates = true)
        {
            var t = OsobaEvent.Types.Sponzor;

            if (zdroj?.Contains("https://www.hlidacstatu.cz/ucty/transakce/") == true)
            {
                t = OsobaEvent.Types.SponzorZuctu;
            }

            OsobaEvent oe = new OsobaEvent(this.InternalId, string.Format("Sponzor {0}", strana), "", t);

            oe.AddInfoNum = castka;
            oe.AddInfo    = strana;
            oe.Zdroj      = zdroj;
            oe.SetYearInterval(rok);
            return(AddOrUpdateEvent(oe, user, checkDuplicates: checkDuplicates));
            //return oe;

            /*
             * //check duplicates
             * using (DbEntities db = new Data.DbEntities())
             * {
             *  var exists = db.OsobaEvent
             *                  .AsNoTracking()
             *                  .FirstOrDefault(m =>
             *                          m.OsobaId == this.InternalId
             *                          && m.Type == (int)OsobaEvent.Types.Sponzor
             *                          && m.AddInfo == strana
             *                          && m.AddInfoNum == castka
             *                          && m.DatumOd == new DateTime(rok, 1, 1)
             *                          && m.DatumDo == new DateTime(rok, 12, 31)
             *                          && m.Zdroj == zdroj
             *                  );
             *  if (exists != null && rewrite)
             *  {
             *      db.OsobaEvent.Remove(exists);
             *      Audit.Add<OsobaEvent>(Audit.Operations.Delete, user, exists, null);
             *      db.SaveChanges();
             *      exists = null;
             *  }
             *  if (exists == null)
             *  {
             *      OsobaEvent oe = new OsobaEvent(this.InternalId, string.Format("Sponzor {0}", strana), "", OsobaEvent.Types.Sponzor);
             *      oe.AddInfoNum = castka;
             *      oe.AddInfo = strana;
             *      oe.Zdroj = zdroj;
             *      oe.SetYearInterval(rok);
             *      db.OsobaEvent.Add(oe);
             *      db.SaveChanges();
             *      Audit.Add(Audit.Operations.Create, user, oe, null);
             *      return oe;
             *  }
             *  else
             *  {
             *      Audit.Add(Audit.Operations.Update, user, exists, null);
             *      return exists;
             *  }
             * }
             */
        }
Example #3
0
        public OsobaEvent AddClenStrany(string strana, int rokOd, int?rokDo, string zdroj, string user)
        {
            OsobaEvent oe = new OsobaEvent(this.InternalId, string.Format("Člen strany {0}", strana), "", OsobaEvent.Types.ClenStrany);

            oe.AddInfo = ParseTools.NormalizaceStranaShortName(strana);
            oe.Zdroj   = zdroj;
            oe.DatumOd = new DateTime(rokOd, 1, 1, 0, 0, 0, DateTimeKind.Local);
            oe.DatumDo = rokDo == null ? (DateTime?)null : new DateTime(rokDo.Value, 12, 31, 0, 0, 0, DateTimeKind.Local);
            return(AddOrUpdateEvent(oe, user));
        }
Example #4
0
 private static OsobaEvent GetDuplicate(OsobaEvent osobaEvent, DbEntities db)
 {
     return(db.OsobaEvent
            .Where(ev =>
                   ev.OsobaId == osobaEvent.OsobaId &&
                   ev.Ico == osobaEvent.Ico &&
                   ev.AddInfo == osobaEvent.AddInfo &&
                   ev.AddInfoNum == osobaEvent.AddInfoNum &&
                   ev.DatumOd == osobaEvent.DatumOd &&
                   ev.Type == osobaEvent.Type &&
                   ev.Organizace == osobaEvent.Organizace)
            .FirstOrDefault());
 }
Example #5
0
        private static OsobaEvent UpdateEvent(OsobaEvent eventToUpdate, OsobaEvent osobaEvent, string user, DbEntities db)
        {
            if (eventToUpdate is null)
            {
                throw new ArgumentNullException(nameof(eventToUpdate), "Argument can't be null");
            }
            if (osobaEvent is null)
            {
                throw new ArgumentNullException(nameof(osobaEvent), "Argument can't be null");
            }
            if (db is null)
            {
                throw new ArgumentNullException(nameof(db), "Argument can't be null");
            }

            var eventOriginal = eventToUpdate.ShallowCopy();

            NormalizeOsobaEvent(osobaEvent);

            if (!string.IsNullOrWhiteSpace(osobaEvent.Ico))
            {
                eventToUpdate.Ico = osobaEvent.Ico;
            }
            if (osobaEvent.OsobaId > 0)
            {
                eventToUpdate.OsobaId = osobaEvent.OsobaId;
            }

            eventToUpdate.DatumOd    = osobaEvent.DatumOd;
            eventToUpdate.DatumDo    = osobaEvent.DatumDo;
            eventToUpdate.Organizace = ParseTools.NormalizaceStranaShortName(osobaEvent.Organizace);
            eventToUpdate.AddInfoNum = osobaEvent.AddInfoNum;
            eventToUpdate.AddInfo    = osobaEvent.AddInfo;
            eventToUpdate.Title      = osobaEvent.Title;
            eventToUpdate.Type       = osobaEvent.Type;
            eventToUpdate.Zdroj      = osobaEvent.Zdroj;
            eventToUpdate.Status     = osobaEvent.Status;
            eventToUpdate.CEO        = osobaEvent.CEO;
            eventToUpdate.Created    = DateTime.Now;

            db.SaveChanges();
            if (osobaEvent.OsobaId > 0)
            {
                Osoby.GetById.Get(osobaEvent.OsobaId).FlushCache();
            }
            Audit.Add(Audit.Operations.Update, user, eventToUpdate, eventOriginal);
            return(eventToUpdate);
        }
Example #6
0
        public OsobaEvent AddDescription(string text, string strana, string zdroj, string user, bool deletePrevious = false)
        {
            if (deletePrevious)
            {
                var oes = this.Events(m => m.Type == (int)OsobaEvent.Types.Popis);
                foreach (var o in oes)
                {
                    o.Delete(user, true);
                }
            }
            OsobaEvent oe = new OsobaEvent(this.InternalId, "", text, OsobaEvent.Types.Popis);

            oe.AddInfo = ParseTools.NormalizaceStranaShortName(strana);
            oe.Zdroj   = zdroj;
            return(AddOrUpdateEvent(oe, user));
        }
Example #7
0
        private static OsobaEvent CreateEvent(OsobaEvent osobaEvent, string user, DbEntities db)
        {
            if (osobaEvent.OsobaId == 0 && string.IsNullOrWhiteSpace(osobaEvent.Ico))
            {
                throw new Exception("Cant attach event to a person or to a company since their reference is empty");
            }

            osobaEvent.Organizace = ParseTools.NormalizaceStranaShortName(osobaEvent.Organizace);
            osobaEvent.Created    = DateTime.Now;
            db.OsobaEvent.Add(osobaEvent);
            db.SaveChanges();
            if (osobaEvent.OsobaId > 0)
            {
                Osoby.GetById.Get(osobaEvent.OsobaId).FlushCache();
            }
            Audit.Add(Audit.Operations.Update, user, osobaEvent, null);
            return(osobaEvent);
        }
Example #8
0
 public GenericSponzorItem(OsobaEvent oe)
 {
     this.Name       = Osoba.GetByInternalId(oe.OsobaId).FullNameWithYear();
     this.Amount     = oe.AddInfoNum ?? 0;
     this.SubjectUrl = Osoba.GetByInternalId(oe.OsobaId).GetUrlOnWebsite();
     this.Strana     = oe.AddInfo;
     //transaction
     if (!string.IsNullOrEmpty(oe.Zdroj) && oe.Zdroj.ToLower().StartsWith("https://www.hlidacstatu.cz/ucty/transakce/"))
     {
         //https://www.hlidacstatu.cz/ucty/transakce/7CCEEC74486A0B58A13DE15369B3CE74
         var res = HlidacStatu.Lib.ES.Manager.GetESClient_Ucty()
                   .Get <HlidacStatu.Lib.Data.TransparentniUcty.BankovniPolozka>(oe.Zdroj.Substring("https://www.hlidacstatu.cz/ucty/transakce/".Length));
         if (res.Found)
         {
             this.Transaction    = res.Source;
             this.TransactionUrl = this.Transaction.GetUrl(false);
             this.Date           = this.Transaction.Datum;
         }
     }
     if (this.Transaction == null)
     {
         this.Date = oe.DatumOd ?? oe.Created;
     }
 }
Example #9
0
        public static OsobaEvent CreateOrUpdate(OsobaEvent osobaEvent, string user)
        {
            using (Lib.Data.DbEntities db = new Data.DbEntities())
            {
                // create
                if (osobaEvent.pk == 0 && osobaEvent.OsobaId > 0)
                {
                    osobaEvent.Organizace = ParseTools.NormalizaceStranaShortName(osobaEvent.Organizace);
                    osobaEvent.Created    = DateTime.Now;

                    // check if event exists so we are not creating duplicities...
                    var oe = db.OsobaEvent
                             .Where(ev =>
                                    ev.OsobaId == osobaEvent.OsobaId &&
                                    ev.Title == osobaEvent.Title &&
                                    ev.DatumOd == osobaEvent.DatumOd &&
                                    ev.Type == osobaEvent.Type &&
                                    ev.Organizace == osobaEvent.Organizace)
                             .FirstOrDefault();

                    if (oe != null)
                    {
                        return(oe);
                    }

                    db.OsobaEvent.Add(osobaEvent);
                    db.SaveChanges();
                    Audit.Add(Audit.Operations.Update, user, osobaEvent, null);
                    return(osobaEvent);
                }

                // update
                if (osobaEvent.pk > 0)
                {
                    var eventToUpdate = db.OsobaEvent
                                        .Where(ev =>
                                               ev.pk == osobaEvent.pk
                                               ).FirstOrDefault();

                    var eventOriginal = eventToUpdate.ShallowCopy();

                    if (eventToUpdate != null)
                    {
                        eventToUpdate.DatumOd    = osobaEvent.DatumOd;
                        eventToUpdate.DatumDo    = osobaEvent.DatumDo;
                        eventToUpdate.Organizace = ParseTools.NormalizaceStranaShortName(osobaEvent.Organizace);
                        eventToUpdate.AddInfoNum = osobaEvent.AddInfoNum;
                        eventToUpdate.AddInfo    = osobaEvent.AddInfo;
                        eventToUpdate.Title      = osobaEvent.Title;
                        eventToUpdate.Type       = osobaEvent.Type;
                        eventToUpdate.Zdroj      = osobaEvent.Zdroj;

                        eventToUpdate.Created = DateTime.Now;

                        db.SaveChanges();
                        Audit.Add(Audit.Operations.Update, user, eventToUpdate, eventOriginal);

                        return(eventToUpdate);
                    }
                }
            }
            return(osobaEvent);
        }
Example #10
0
            public Osoba Save(string user)
            {
                Osoba o = null;
                var   t = this;

                DateTime?narozeni = Devmasters.DT.Util.ToDateTime(t.Narozeni, "yyyy-MM-dd");

                //find existing
                if (this.Id > 0)
                {
                    o = Osoby.GetById.Get(this.Id);
                }
                else if (narozeni.HasValue == false)
                {
                    return(null);
                }
                if (o == null)
                {
                    o = Osoba.Searching.GetByName(t.Jmeno, t.Prijmeni, narozeni.Value);
                }
                if (o == null)
                {
                    o = Osoba.Searching.GetByNameAscii(t.Jmeno, t.Prijmeni, narozeni.Value);
                }

                if (o == null)
                {
                    o = new Data.Osoba();
                }

                o.Pohlavi  = (t.Gender == gender.Žena) ? "f" : "m";
                o.Jmeno    = t.Jmeno;
                o.Narozeni = narozeni.Value;
                o.Umrti    = Devmasters.DT.Util.ToDateTime(t.Umrti, "yyyy-MM-dd");
                o.Prijmeni = t.Prijmeni;
                o.Status   = (int)t.Status;
                o.NameId   = t.NameId;
                o.Save();

                foreach (var e in t.Event)
                {
                    OsobaEvent ev = new OsobaEvent();
                    ev.pk         = e.pk;
                    ev.Organizace = e.Organizace;
                    ev.AddInfoNum = e.AddInfoNum;
                    ev.DatumOd    = Devmasters.DT.Util.ToDateTime(e.DatumOd, "yyyy-MM-dd");
                    ev.DatumDo    = Devmasters.DT.Util.ToDateTime(e.DatumDo, "yyyy-MM-dd");
                    ev.Note       = e.Note;
                    ev.Title      = e.Title;
                    ev.Type       = (int)e.Typ;
                    ev.AddInfo    = e.AddInfo;
                    ev.Zdroj      = e.Zdroj;
                    ev.OsobaId    = o.InternalId;
                    o.AddOrUpdateEvent(ev, user);
                }

                foreach (var v in t.Vazbyfirmy)
                {
                    if (!string.IsNullOrEmpty(v.VazbaKOsoba))
                    {
                        var os = Osoby.GetByNameId.Get(v.VazbaKOsoba);
                        if (os != null)
                        {
                            OsobaVazby.AddOrUpdate(o.InternalId, os.InternalId, (int)v.TypVazby, v.Popis, 0, Devmasters.DT.Util.ToDateTime(v.DatumOd, "yyyy-MM-dd"), Devmasters.DT.Util.ToDateTime(v.DatumDo, "yyyy-MM-dd"), v.Zdroj);
                        }
                    }
                    else
                    {
                        OsobaVazby.AddOrUpdate(o.InternalId, v.VazbaKIco, (int)v.TypVazby, v.Popis, 0, Devmasters.DT.Util.ToDateTime(v.DatumOd, "yyyy-MM-dd"), Devmasters.DT.Util.ToDateTime(v.DatumDo, "yyyy-MM-dd"), v.Zdroj);
                    }
                }
                return(o);
            }
Example #11
0
 public static string RenderDatum(this OsobaEvent oEvent, string txtOd = "", string txtDo = " - ", string dateFormat = "yyyy", string template = "{0}")
 {
     return(RenderDatum(oEvent.DatumOd, oEvent.DatumDo, txtOd, txtDo, dateFormat, template));
 }
Example #12
0
 public static bool Compare(OsobaEvent a, OsobaEvent b)
 {
     return(comparer.Compare(a, b));
 }
Example #13
0
        public OsobaEvent AddOrUpdateEvent(OsobaEvent ev, string user, bool rewrite = false, bool checkDuplicates = true)
        {
            if (ev == null)
            {
                return(null);
            }

            //if (ev.Type == (int)OsobaEvent.Types.Sponzor)
            //{
            //    return AddSponsoring(ev.AddInfo, ev.DatumOd.Value.Year, ev.AddInfoNum.Value, ev.Zdroj, user);
            //}

            //check duplicates
            using (DbEntities db = new Data.DbEntities())
            {
                OsobaEvent exists = null;
                if (ev.pk > 0)
                {
                    exists = db.OsobaEvent
                             .AsNoTracking()
                             .FirstOrDefault(m =>
                                             m.pk == ev.pk
                                             );
                }
                else if (checkDuplicates)
                {
                    exists = db.OsobaEvent
                             .AsNoTracking()
                             .FirstOrDefault(m =>
                                             m.OsobaId == this.InternalId &&
                                             m.Type == ev.Type &&
                                             m.AddInfo == ev.AddInfo &&
                                             m.AddInfoNum == ev.AddInfoNum &&
                                             m.DatumOd == ev.DatumOd &&
                                             m.DatumDo == ev.DatumDo &&
                                             m.Zdroj == ev.Zdroj
                                             );
                    if (exists != null)
                    {
                        ev.pk = exists.pk;
                    }
                }

                if (exists != null && rewrite)
                {
                    db.OsobaEvent.Remove(exists);
                    Audit.Add <OsobaEvent>(Audit.Operations.Delete, user, exists, null);
                    db.SaveChanges();
                    exists = null;
                }

                if (exists == null)
                {
                    ev.OsobaId = this.InternalId;
                    db.OsobaEvent.Add(ev);
                    Audit.Add(Audit.Operations.Create, user, ev, null);
                    db.SaveChanges();
                    return(ev);
                }
                else
                {
                    ev.OsobaId = this.InternalId;
                    ev.pk      = exists.pk;
                    db.OsobaEvent.Attach(ev);
                    db.Entry(ev).State = System.Data.Entity.EntityState.Modified;
                    Audit.Add(Audit.Operations.Create, user, ev, exists);
                    db.SaveChanges();
                    return(ev);
                }
            }
        }
Example #14
0
        public Osoba MergeWith(Osoba duplicated, string user)
        {
            if (this.InternalId == duplicated.InternalId)
            {
                return(this);
            }

            OsobaEvent[]      dEvs  = duplicated.Events().ToArray();
            OsobaExternalId[] dEids = duplicated.ExternalIds().Where(m => m.ExternalSource != (int)OsobaExternalId.Source.HlidacSmluvGuid).ToArray();

            foreach (var dEv in dEvs)
            {
                bool exists = false;
                foreach (var ev in this.Events())
                {
                    exists = exists || OsobaEvent.Compare(ev, dEv);
                }
                if (!exists)
                {
                    this.AddOrUpdateEvent(dEv, user);
                }
            }

            List <OsobaExternalId> addExternalIds = new List <OsobaExternalId>();

            foreach (var dEid in dEids)
            {
                bool exists = false;
                foreach (var eid in this.ExternalIds())
                {
                    exists = exists || (eid.ExternalId == dEid.ExternalId && eid.ExternalSource == dEid.ExternalSource && eid.OsobaId == dEid.OsobaId);
                }
                if (!exists)
                {
                    addExternalIds.Add(dEid);
                }
            }

            if (string.IsNullOrEmpty(this.TitulPred) && !string.IsNullOrEmpty(duplicated.TitulPred))
            {
                this.TitulPred = duplicated.TitulPred;
            }
            if (string.IsNullOrEmpty(this.Jmeno) && !string.IsNullOrEmpty(duplicated.Jmeno))
            {
                this.Jmeno = duplicated.Jmeno;
            }
            if (string.IsNullOrEmpty(this.Prijmeni) && !string.IsNullOrEmpty(duplicated.Prijmeni))
            {
                this.Prijmeni = duplicated.Prijmeni;
            }
            if (string.IsNullOrEmpty(this.TitulPo) && !string.IsNullOrEmpty(duplicated.TitulPo))
            {
                this.TitulPo = duplicated.TitulPo;
            }
            if (string.IsNullOrEmpty(this.Pohlavi) && !string.IsNullOrEmpty(duplicated.Pohlavi))
            {
                this.Pohlavi = duplicated.Pohlavi;
            }
            if (string.IsNullOrEmpty(this.Ulice) && !string.IsNullOrEmpty(duplicated.Ulice))
            {
                this.Ulice = duplicated.Ulice;
            }
            if (string.IsNullOrEmpty(this.Mesto) && !string.IsNullOrEmpty(duplicated.Mesto))
            {
                this.Mesto = duplicated.Mesto;
            }
            if (string.IsNullOrEmpty(this.PSC) && !string.IsNullOrEmpty(duplicated.PSC))
            {
                this.PSC = duplicated.PSC;
            }
            if (string.IsNullOrEmpty(this.CountryCode) && !string.IsNullOrEmpty(duplicated.CountryCode))
            {
                this.CountryCode = duplicated.CountryCode;
            }
            if (string.IsNullOrEmpty(this.PuvodniPrijmeni) && !string.IsNullOrEmpty(duplicated.PuvodniPrijmeni))
            {
                this.PuvodniPrijmeni = duplicated.PuvodniPrijmeni;
            }

            if (!this.Narozeni.HasValue && duplicated.Narozeni.HasValue)
            {
                this.Narozeni = duplicated.Narozeni;
            }
            if (!this.Umrti.HasValue && duplicated.Umrti.HasValue)
            {
                this.Umrti = duplicated.Umrti;
            }
            if (!this.OnRadar && duplicated.OnRadar)
            {
                this.OnRadar = duplicated.OnRadar;
            }

            if (this.Status < duplicated.Status)
            {
                this.Status = duplicated.Status;
            }

            if (duplicated.InternalId != 0)
            {
                duplicated.Delete(user);
            }

            //obrazek
            if (this.HasPhoto() == false && duplicated.HasPhoto())
            {
                foreach (var fn in new string[] { "small.jpg", "source.txt", "original.uploaded.jpg", "small.uploaded.jpg" })
                {
                    var from = Lib.Init.OsobaFotky.GetFullPath(duplicated, fn);
                    var to   = Lib.Init.OsobaFotky.GetFullPath(this, fn);
                    if (System.IO.File.Exists(from))
                    {
                        System.IO.File.Copy(from, to);
                    }
                }
            }
            this.Save(addExternalIds.ToArray());


            return(this);
        }