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)); } }
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; * } * } */ }
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)); }
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()); }
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); }
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)); }
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); }
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; } }
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); }
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); }
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)); }
public static bool Compare(OsobaEvent a, OsobaEvent b) { return(comparer.Compare(a, b)); }
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); } } }
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); }