// GET: Projects/Create public ActionResult Create() { ProjectCreateViewModel viewmodel = new ProjectCreateViewModel(); List<Group> allgroups = new List<Group>(); List<Person> allpeople = new List<Person>(); foreach(Group g in db.Groups) { allgroups.Add(g); } foreach(Person p in db.People) { allpeople.Add(p); } viewmodel.AllGroups = allgroups; viewmodel.AllPeople = allpeople; return View(viewmodel); }
public ActionResult Create(ProjectCreateViewModel viewmodel) { if (ModelState.IsValid) { Project project = new Project(); //add basic stuff to project project.EndDate = viewmodel.EndDate; project.Name = viewmodel.Name; project.ProjectId = viewmodel.ProjectId; List<PersonProjectRecord> newrecords = new List<PersonProjectRecord>(); //add project groups if there are selected groups if (viewmodel.SelectedGroupIds != null) { List<Group> projectgroups = new List<Group>(); foreach (int groupId in viewmodel.SelectedGroupIds) { Group group = db.Groups.Find(groupId); projectgroups.Add(group); } project.ProjectGroups = projectgroups; //create personprojectrecords for individuals added through groups foreach (Group group in projectgroups) { foreach (Person member in group.Members) { PersonProjectRecord newrecord = new PersonProjectRecord(); newrecord.PersonId = member.PersonId; newrecord.ProjectId = project.ProjectId; newrecord.RemoveWithGroup = true; newrecords.Add(newrecord); } } } //create personprojectrecords for individuals added outside of groups if (viewmodel.SelectedPersonIds != null) { foreach (int id in viewmodel.SelectedPersonIds) { PersonProjectRecord newrecord = new PersonProjectRecord(); newrecord.PersonId = id; newrecord.ProjectId = project.ProjectId; newrecord.RemoveWithGroup = false; newrecords.Add(newrecord); } } //save to db if (newrecords.Count != 0) { foreach (PersonProjectRecord record in newrecords) { db.PersonProjectRecords.Add(record); } } db.Projects.Add(project); db.SaveChanges(); return RedirectToAction("Index"); } return View(viewmodel); }