public ActionResult AssoEdit(short?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } NPC npc = db.NPCs.Find(id); if (npc == null) { return(HttpNotFound()); } ViewBag.Orgs = db.Orgs.ToList(); var selected = db.NpcOrgs.Where(x => x.NpcId == npc.NpcId).ToList(); List <AssoOrg_Npc> assoOrgs = new List <AssoOrg_Npc>(); foreach (NpcOrg npcOrg in selected) { AssoOrg_Npc toAdd = new AssoOrg_Npc(npcOrg); assoOrgs.Add(toAdd); } ViewBag.Classes = db.Classes.ToList(); var selected2 = db.ClassNPCs.Where(x => x.NpcId == npc.NpcId).ToList(); List <AssoClass_Npc> assoClasses = new List <AssoClass_Npc>(); foreach (ClassNPC asso in selected2) { AssoClass_Npc toAdd = new AssoClass_Npc(asso); assoClasses.Add(toAdd); } var infoid = npc.InfoId; AssoNpcVM model = new AssoNpcVM { InfoId = infoid, NpcId = npc.NpcId, Submit = "Save", Name = npc.Name, AssoClasses = assoClasses, AssoOrgs = assoOrgs }; return(View(model)); }
public ActionResult AssoEdit(short infoId, short npcId, string submit, List <AssoClass_Npc> assoClasses, List <AssoOrg_Npc> orgs) { if (ModelState.IsValid) { #region Add Classes List <byte> currentClassId = db.ClassNPCs.Where(x => x.NpcId == npcId).Select(x => (byte)x.ClassId).ToList(); if (assoClasses != null) { foreach (AssoClass_Npc cn in assoClasses) { //if the association already exists if (currentClassId.Contains(cn.ClassId)) { ClassNPC toEdit = db.ClassNPCs.Where(x => x.ClassId == cn.ClassId && x.NpcId == npcId).First(); toEdit.ClassOrder = cn.ClassOrder; db.Entry(toEdit).State = EntityState.Modified; db.SaveChanges(); currentClassId.Remove(cn.ClassId); } else { ClassNPC toAdd = new ClassNPC { NpcId = npcId, ClassId = cn.ClassId, ClassOrder = cn.ClassOrder }; db.ClassNPCs.Add(toAdd); } } } if (currentClassId.Count != 0) { foreach (byte id in currentClassId) { ClassNPC gone = db.ClassNPCs.Where(x => x.NpcId == npcId && x.ClassId == id).FirstOrDefault(); db.ClassNPCs.Remove(gone); } } db.SaveChanges(); #endregion #region Add Orgs List <short> currentOrgId = db.NpcOrgs.Where(x => x.NpcId == npcId).Select(x => x.OrgId).ToList(); if (orgs != null) { foreach (AssoOrg_Npc assoOrg in orgs) { //if the association already exists if (currentOrgId.Contains(assoOrg.OrgId)) { NpcOrg toEdit = db.NpcOrgs.Where(x => x.OrgId == assoOrg.OrgId && x.NpcId == npcId).First(); toEdit.OrgOrder = assoOrg.OrgOrder; toEdit.BlurbNpcPage = assoOrg.BlurbNpcPage; toEdit.BlurbOrgPage = assoOrg.BlurbOrgPage; toEdit.MemberOrder = assoOrg.MemberOrder; toEdit.IsCurrent = assoOrg.IsCurrent; db.Entry(toEdit).State = EntityState.Modified; db.SaveChanges(); currentOrgId.Remove(assoOrg.OrgId); } else { NpcOrg toAdd = new NpcOrg { NpcId = npcId, OrgId = assoOrg.OrgId, OrgOrder = assoOrg.OrgOrder, BlurbNpcPage = assoOrg.BlurbNpcPage, BlurbOrgPage = assoOrg.BlurbOrgPage, MemberOrder = assoOrg.MemberOrder, IsCurrent = assoOrg.IsCurrent }; db.NpcOrgs.Add(toAdd); } } } if (currentOrgId.Count != 0) { foreach (short id in currentOrgId) { NpcOrg gone = db.NpcOrgs.Where(x => x.NpcId == npcId & x.OrgId == id).FirstOrDefault(); db.NpcOrgs.Remove(gone); } } db.SaveChanges(); #endregion return(Json(true)); } //if model fails ViewBag.Orgs = db.Orgs.ToList(); ViewBag.Classes = db.Classes.ToList(); var npc = db.NPCs.Find(npcId); AssoNpcVM model = new AssoNpcVM { InfoId = infoId, NpcId = npcId, Submit = submit, Name = npc.Name, AssoClasses = assoClasses, AssoOrgs = orgs }; return(View(model)); }