public AssoEvent_Locale(LocaleEvent localeEvent)
 {
     EventId = localeEvent.EventId;
 }
        public ActionResult AssoEdit(short infoId, short localeId, string submit,
                                     List <AssoMaj> majs,
                                     List <AssoEvent_Locale> events)
        {
            if (ModelState.IsValid)
            {
                #region Add majorities
                List <byte> currentMajId = db.Majorities.Where(x => x.LocaleId == localeId).Select(x => x.RaceId).ToList();
                if (majs != null)
                {
                    foreach (AssoMaj maj in majs)
                    {
                        //if the association already exists
                        if (currentMajId.Contains(maj.RaceId))
                        {
                            Majority toEdit = db.Majorities.Where(x => x.RaceId == maj.RaceId && x.LocaleId == localeId).First();
                            toEdit.IsFirst         = maj.IsFirst;
                            db.Entry(toEdit).State = EntityState.Modified;
                            db.SaveChanges();
                            currentMajId.Remove(maj.RaceId);
                        }
                        else
                        {
                            Majority toAdd = new Majority
                            {
                                LocaleId = localeId,
                                IsFirst  = maj.IsFirst,
                                RaceId   = maj.RaceId
                            };
                            db.Majorities.Add(toAdd);
                            db.SaveChanges();
                        }
                    }
                }
                if (currentMajId.Count != 0)
                {
                    foreach (byte id in currentMajId)
                    {
                        Majority gone = db.Majorities.Where(x => x.LocaleId == localeId && x.RaceId == id).FirstOrDefault();
                        db.Majorities.Remove(gone);
                        db.SaveChanges();
                    }
                }
                #endregion

                #region Add LocaleEvents
                List <short> currentEventId = db.LocaleEvents.Where(x => x.LocaleId == localeId).Select(x => x.EventId).ToList();
                if (events != null)
                {
                    foreach (AssoEvent_Locale assoEvent in events)
                    {
                        //if the association already exists
                        if (currentEventId.Contains(assoEvent.EventId))
                        {
                            LocaleEvent toEdit = db.LocaleEvents.Where(x => x.LocaleId == localeId && x.EventId == assoEvent.EventId).First();
                            //if I ever add more columns to LocaleEvent, edit them here
                            //db.Entry(toEdit).State = EntityState.Modified;
                            //db.SaveChanges();
                            currentEventId.Remove(assoEvent.EventId);
                        }
                        else
                        {
                            LocaleEvent toAdd = new LocaleEvent
                            {
                                LocaleId = localeId,
                                EventId  = assoEvent.EventId
                            };
                            db.LocaleEvents.Add(toAdd);
                        }
                    }
                }
                if (currentEventId.Count != 0)
                {
                    foreach (short id in currentEventId)
                    {
                        LocaleEvent gone = db.LocaleEvents.Where(x => x.LocaleId == localeId && x.EventId == id).FirstOrDefault();
                        db.LocaleEvents.Remove(gone);
                    }
                }
                db.SaveChanges();
                #endregion
                return(Json(true));
            }
            //having a lot of trouble with the return so the ajax right now
            ViewBag.Majs   = db.Races.OrderBy(r => r.RaceName).ToList();
            ViewBag.Events = db.Events.OrderBy(e => e.Name).ToList();
            var          locale = db.Locales.Find(localeId);
            AssoLocaleVM model  = new AssoLocaleVM {
                InfoId = infoId, LocaleId = localeId, Submit = submit, AssoMajs = majs, AssoEvents = events, Name = locale.Name
            };
            return(View(model));
        }
        public ActionResult AssoEdit(short infoId, short eventId, string submit,
                                     List <AssoLocale_Event> locales,
                                     List <AssoOrg_Event> orgs)
        {
            if (ModelState.IsValid)
            {
                #region Add Locales
                List <short> currentLocaleId = db.LocaleEvents.Where(x => x.EventId == eventId).Select(x => x.LocaleId).ToList();
                if (locales != null)
                {
                    foreach (AssoLocale_Event le in locales)
                    {
                        //if the association already exists
                        if (currentLocaleId.Contains(le.LocaleId))
                        {
                            LocaleEvent toEdit = db.LocaleEvents.Where(x => x.LocaleId == le.LocaleId && x.EventId == eventId).First();
                            //if I ever add more columns to LocaleEvent, edit them here
                            //db.Entry(toEdit).State = EntityState.Modified;
                            //db.SaveChanges();
                            currentLocaleId.Remove(le.LocaleId);
                        }
                        else
                        {
                            LocaleEvent toAdd = new LocaleEvent
                            {
                                EventId  = eventId,
                                LocaleId = le.LocaleId
                            };
                            db.LocaleEvents.Add(toAdd);
                        }
                    }
                }
                if (currentLocaleId.Count != 0)
                {
                    foreach (short id in currentLocaleId)
                    {
                        LocaleEvent gone = db.LocaleEvents.Where(x => x.EventId == eventId && x.LocaleId == id).FirstOrDefault();
                        db.LocaleEvents.Remove(gone);
                    }
                }
                db.SaveChanges();
                #endregion

                #region Add Orgs
                List <short> currentOrgId = db.OrgEvents.Where(x => x.EventId == eventId).Select(x => x.OrgId).ToList();
                if (orgs != null)
                {
                    foreach (AssoOrg_Event assoOrg in orgs)
                    {
                        //if the association already exists
                        if (currentOrgId.Contains(assoOrg.OrgId))
                        {
                            OrgEvent toEdit = db.OrgEvents.Where(x => x.OrgId == assoOrg.OrgId && x.EventId == eventId).First();
                            toEdit.Blurb           = assoOrg.Blurb;
                            db.Entry(toEdit).State = EntityState.Modified;
                            db.SaveChanges();
                            currentOrgId.Remove(assoOrg.OrgId);
                        }
                        else
                        {
                            OrgEvent toAdd = new OrgEvent
                            {
                                EventId = eventId,
                                OrgId   = assoOrg.OrgId,
                                Blurb   = assoOrg.Blurb
                            };
                            db.OrgEvents.Add(toAdd);
                        }
                    }
                }
                if (currentOrgId.Count != 0)
                {
                    foreach (short id in currentOrgId)
                    {
                        OrgEvent gone = db.OrgEvents.Where(x => x.EventId == eventId && x.OrgId == id).FirstOrDefault();
                        db.OrgEvents.Remove(gone);
                    }
                }
                db.SaveChanges();
                #endregion
                return(Json(true));
            }

            //if model fails
            ViewBag.Locales = db.Locales.OrderBy(l => l.Name).ToList();
            ViewBag.Orgs    = db.Orgs.OrderBy(l => l.Name).ToList();
            var taevent = db.Events.Find(eventId);
            //if I actually was handling if the model failed (as currently I'm using the bandaid solution of just preventing the submition ) this would not cut it. It does not account for orgs or locales being null
            AssoEventVM model = new AssoEventVM {
                InfoId = infoId, EventId = eventId, Submit = submit, Name = taevent.Name, AssoOrgs = orgs, AssoLocales = locales
            };
            return(View(model));
        }