Ejemplo n.º 1
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.AddInfo == osobaEvent.AddInfo &&
                                    ev.DatumOd == osobaEvent.DatumOd &&
                                    ev.Type == osobaEvent.Type &&
                                    ev.Organizace == osobaEvent.Organizace)
                             .FirstOrDefault();

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

                    db.OsobaEvent.Add(osobaEvent);
                    db.SaveChanges();
                    Osoby.GetById.Get(osobaEvent.OsobaId).FlushCache();
                    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.Status     = osobaEvent.Status;
                        eventToUpdate.Ico        = osobaEvent.Ico;
                        eventToUpdate.CEO        = osobaEvent.CEO;

                        eventToUpdate.Created = DateTime.Now;

                        db.SaveChanges();
                        Osoby.GetById.Get(osobaEvent.OsobaId).FlushCache();
                        Audit.Add(Audit.Operations.Update, user, eventToUpdate, eventOriginal);

                        return(eventToUpdate);
                    }
                }
            }
            return(osobaEvent);
        }
Ejemplo n.º 2
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);
                }
            }
        }