Exemplo n.º 1
0
 //create clone model of CharOrg so I don not skip a layer by using database models
 //directly in views and controllers
 public BCharOrg convertToBCharOrg(CharOrg charOrg)
 {
     return(new BCharOrg
     {
         Id = charOrg.Id,
         Address = charOrg.Address,
         Phone = charOrg.Phone
     });
 }
Exemplo n.º 2
0
        public ActionResult AssoEdit(short infoId, short orgId, string submit,
                                     List <AssoNpc_Org> npcs,
                                     List <AssoEvent_Org> events,
                                     List <AssoChar_Org> charas
                                     )
        {
            if (ModelState.IsValid)
            {
                #region Add Members
                List <short> currentNpcId = db.NpcOrgs.Where(x => x.OrgId == orgId).Select(x => x.NpcId).ToList();
                if (npcs != null)
                {
                    foreach (AssoNpc_Org member in npcs)
                    {
                        //if the association already exists
                        if (currentNpcId.Contains(member.NpcId))
                        {
                            NpcOrg toEdit = db.NpcOrgs.Where(x => x.NpcId == member.NpcId && x.OrgId == orgId).First();

                            //make the edits
                            toEdit.OrgOrder     = member.OrgOrder;
                            toEdit.BlurbNpcPage = member.BlurbNpcPage;
                            toEdit.BlurbOrgPage = member.BlurbOrgPage;
                            toEdit.MemberOrder  = member.MemberOrder;
                            toEdit.IsCurrent    = member.IsCurrent;

                            db.Entry(toEdit).State = EntityState.Modified;
                            db.SaveChanges();
                            currentNpcId.Remove(member.NpcId);
                        }
                        else
                        {
                            NpcOrg toAdd = new NpcOrg
                            {
                                OrgId        = orgId,
                                NpcId        = member.NpcId,
                                OrgOrder     = member.OrgOrder,
                                BlurbNpcPage = member.BlurbNpcPage,
                                BlurbOrgPage = member.BlurbOrgPage,
                                MemberOrder  = member.MemberOrder,
                                IsCurrent    = member.IsCurrent
                            };
                            db.NpcOrgs.Add(toAdd);
                        }
                    }
                }
                if (currentNpcId.Count != 0)
                {
                    foreach (short id in currentNpcId)
                    {
                        NpcOrg gone = db.NpcOrgs.Where(x => x.OrgId == orgId && x.NpcId == id).FirstOrDefault();
                        db.NpcOrgs.Remove(gone);
                    }
                }
                db.SaveChanges();
                #endregion

                #region Add Events
                List <short> currentEventId = db.OrgEvents.Where(x => x.OrgId == orgId).Select(x => x.EventId).ToList();
                if (events != null)
                {
                    foreach (AssoEvent_Org assoEvent in events)
                    {
                        //if the association already exists
                        if (currentEventId.Contains(assoEvent.EventId))
                        {
                            OrgEvent toEdit = db.OrgEvents.Where(x => x.EventId == assoEvent.EventId && x.OrgId == orgId).First();
                            toEdit.Blurb           = assoEvent.Blurb;
                            db.Entry(toEdit).State = EntityState.Modified;
                            db.SaveChanges();
                            currentEventId.Remove(assoEvent.EventId);
                        }
                        else
                        {
                            OrgEvent toAdd = new OrgEvent
                            {
                                OrgId   = orgId,
                                EventId = assoEvent.EventId,
                                Blurb   = assoEvent.Blurb
                            };
                            db.OrgEvents.Add(toAdd);
                        }
                    }
                }
                if (currentEventId.Count != 0)
                {
                    foreach (short id in currentEventId)
                    {
                        OrgEvent gone = db.OrgEvents.Where(x => x.OrgId == orgId && x.EventId == id).FirstOrDefault();
                        db.OrgEvents.Remove(gone);
                    }
                }
                db.SaveChanges();
                #endregion

                #region Add CharacterOrgs
                List <short> currentCharId = db.CharOrgs.Where(x => x.OrgId == orgId).Select(x => x.CharId).ToList();
                if (charas != null)
                {
                    foreach (AssoChar_Org assoChar in charas)
                    {
                        if (currentCharId.Contains(assoChar.CharId))
                        {
                            CharOrg toEdit = db.CharOrgs.Where(x => x.CharId == assoChar.CharId && x.OrgId == orgId).First();
                            toEdit.BlurbOrgPage      = assoChar.BlurbOrgPage;
                            toEdit.IsCurrent         = assoChar.IsCurrent;
                            toEdit.IsPublic          = assoChar.IsPublic;
                            toEdit.KatherineApproved = assoChar.KatherineApproved;
                            db.Entry(toEdit).State   = EntityState.Modified;
                            db.SaveChanges();
                            currentCharId.Remove(assoChar.CharId);
                        }
                        else
                        {
                            CharOrg toAdd = new CharOrg
                            {
                                OrgId             = orgId,
                                CharId            = assoChar.CharId,
                                BlurbOrgPage      = assoChar.BlurbOrgPage,
                                IsPublic          = assoChar.IsPublic,
                                IsCurrent         = assoChar.IsCurrent,
                                KatherineApproved = assoChar.KatherineApproved
                            };
                            db.CharOrgs.Add(toAdd);
                        }
                    }
                }
                if (currentCharId.Count != 0)
                {
                    foreach (short id in currentCharId)
                    {
                        CharOrg gone = db.CharOrgs.Where(x => x.OrgId == orgId && x.CharId == id).FirstOrDefault();
                        db.CharOrgs.Remove(gone);
                    }
                }
                db.SaveChanges();
                #endregion


                return(Json(true));
            }
            //if model fails
            ViewBag.Npcs       = db.NPCs.OrderBy(n => n.Name).ToList();
            ViewBag.Events     = db.Events.OrderBy(e => e.Name).ToList();
            ViewBag.Characters = db.Characters.Where(i => i.IsApproved).OrderBy(c => c.CharacterName).ToList();
            var       org   = db.Orgs.Find(orgId);
            AssoOrgVM model = new AssoOrgVM {
                InfoId = infoId, OrgId = orgId, Submit = submit, Name = org.Name, AssoNpcs = npcs, AssoEvents = events, AssoChars = charas
            };
            return(View(model));
        }