示例#1
0
        //GET People/AddToGroup
        public ActionResult AddMemberToGroup(int? PersonId)
        {
            if (PersonId == null)
                 {
                     return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                 }

                 Person person = db.People.Find(PersonId);

                 if (person == null)
                 {
                     return HttpNotFound();
                 }

            SelectList allthegroups = new SelectList(db.Groups, "GroupId", "Name");

            PersonGroupingViewModel viewmodel = new PersonGroupingViewModel();
            viewmodel.PersonId = person.PersonId;
            viewmodel.FirstName = person.FirstName;
            viewmodel.LastName = person.LastName;
            viewmodel.AllGroups = allthegroups;

            //viewmodel.Memberships cannot be empty AND THEY ARE ALWAYS EMPTY
            if (person.Memberships == null)
            {
                    IList<Group> members = new List<Group>();
                    viewmodel.Memberships = members;
            }
            else
            {
                viewmodel.Memberships = person.Memberships;
            }

            return View(viewmodel);
        }
示例#2
0
        public ActionResult AddMemberToGroup(PersonGroupingViewModel viewmodel)
        {
            if (ModelState.IsValid)
            {
                //add the person to the group
                int PersonId = viewmodel.PersonId;
                int GroupId = viewmodel.SelectedGroupId;
                Person person = db.People.Find(PersonId);
                Group group = db.Groups.Find(GroupId);

                group.Members.Add(person);
                db.SaveChanges();

                //add person to group's projects & create ppr with removewithgroup = true
                List<Person> isingroupalready = new List<Person>();
                foreach(Project project in group.Projects) //for every project the group is assigned to
                {
                    foreach(PersonProjectRecord ppr in project.PersonProjectRecords) //for every ppr on the project
                    {
                        //if they are already on the project and their rwg flag is false add them to this list
                        if (ppr.PersonId == person.PersonId && ppr.RemoveWithGroup == false)
                        {
                            isingroupalready.Add(person);
                        }
                    }
                    //if the list is empty (person not already in group  w/ false rwg flag)
                    //then make a new ppr and add them to project with true rwg flag
                    if(isingroupalready.Count == 0)
                    {
                        PersonProjectRecord newrecord = new PersonProjectRecord();
                        newrecord.PersonId = person.PersonId;
                        newrecord.ProjectId = project.ProjectId;
                        newrecord.RemoveWithGroup = true;

                        db.PersonProjectRecords.Add(newrecord);
                    }
                }
                db.SaveChanges();

                //create a new viewmodel to pass back to the view with updated memberships (v.important)
                PersonGroupingViewModel vm = new PersonGroupingViewModel();
                SelectList allthegroups = new SelectList(db.Groups, "GroupId", "Name");
                vm.PersonId = person.PersonId;
                vm.FirstName = person.FirstName;
                vm.LastName = person.LastName;
                vm.Memberships = person.Memberships;
                vm.AllGroups = allthegroups;

                return View(vm);

            }

            return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Something is wrong with the returned viewmodel.");
        }
示例#3
0
        public ActionResult RemoveMemberFromGroup(PersonGroupingViewModel viewmodel)
        {
            if (ModelState.IsValid)
            {
                //remove the person from the group
                int PersonId = viewmodel.PersonId;
                int GroupId = viewmodel.SelectedGroupId;
                Person person = db.People.Find(PersonId);
                Group group = db.Groups.Find(GroupId);

                group.Members.Remove(person);
                db.SaveChanges();

                //remove from projects if removewithgroup flag is true
                List<PersonProjectRecord> pprstoremove = new List<PersonProjectRecord>();
                foreach(Project project in group.Projects) //for each project in the group
                {
                    foreach(PersonProjectRecord ppr in project.PersonProjectRecords) //search pprs in the project
                    {
                        if(ppr.PersonId == person.PersonId && ppr.RemoveWithGroup == true)
                        {
                            //add this person's pprs where rwg = true to a list
                            pprstoremove.Add(ppr);
                        }
                    }
                }
                //you've got to remove them this way (via list) because otherwise messes with the enumerator
                //hella exceptions
                foreach(PersonProjectRecord ppr in pprstoremove)
                {
                    db.PersonProjectRecords.Remove(ppr);
                }

                db.SaveChanges();

                //create a new viewmodel to pass back to the view with updated memberships (v.important)
                PersonGroupingViewModel vm = new PersonGroupingViewModel();

                List<Group> membergroups = new List<Group>();
                foreach (Group g in person.Memberships)
                {
                    membergroups.Add(g);
                }

                SelectList membershipgroups = new SelectList(membergroups, "GroupId", "Name");

                vm.PersonId = person.PersonId;
                vm.FirstName = person.FirstName;
                vm.LastName = person.LastName;
                vm.Memberships = person.Memberships;
                vm.AllGroups = membershipgroups;

                return View(vm);

            }

            return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Something is wrong with the returned viewmodel.");
        }
示例#4
0
        //GET People/RemoveMemberFromGroup
        public ActionResult RemoveMemberFromGroup(int? PersonId)
        {
            if (PersonId == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            Person person = db.People.Find(PersonId);

            if (person == null)
            {
                return HttpNotFound();
            }

            //create a list of groups the member is already in for the selectlist
            List<Group> membergroups = new List<Group>();
            foreach(Group group in person.Memberships)
            {
                membergroups.Add(group);
            }

            SelectList membershipgroups = new SelectList(membergroups, "GroupId", "Name");

            PersonGroupingViewModel viewmodel = new PersonGroupingViewModel();
            viewmodel.PersonId = person.PersonId;
            viewmodel.FirstName = person.FirstName;
            viewmodel.LastName = person.LastName;
            viewmodel.AllGroups = membershipgroups;

            //viewmodel.Memberships cannot be empty
            if (person.Memberships == null)
            {
                IList<Group> members = new List<Group>();
                viewmodel.Memberships = members;
            }
            else
            {
                viewmodel.Memberships = person.Memberships;
            }

            return View(viewmodel);
        }
示例#5
0
        //GET: EditGroupMemberships
        public ActionResult EditGroupMemberships(int? PersonId)
        {
            if(PersonId == null)
                 {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            Person person = db.People.Find(PersonId);

            if (person == null)
            {
                return HttpNotFound();
            }

            List<Group> allgroups = new List<Group>();
            foreach (Group g in db.Groups)
            {
                allgroups.Add(g);
            }

            PersonGroupingViewModel viewmodel = new PersonGroupingViewModel();
            viewmodel.PersonId = person.PersonId;
            viewmodel.FirstName = person.FirstName;
            viewmodel.LastName = person.LastName;
            viewmodel.AllAvailableGroups = allgroups;

            //viewmodel.Memberships cannot be empty AND THEY ARE ALWAYS EMPTY
            if (person.Memberships == null)
            {
                IList<Group> members = new List<Group>();
                viewmodel.Memberships = members;
            }
            else
            {
                viewmodel.Memberships = person.Memberships;
            }
            return View(viewmodel);
        }