Exemplo n.º 1
0
        public bool RemoveMember(RemoveMemberViewModel viewModel)
        {
            string userRole = _groupMemberRepository.GetRole(viewModel.GroupId, viewModel.UserId);

            if (!userRole.Equals(RoleNames.ROLE_OWNER) ||
                !_groupMemberRepository.IsInGroup(viewModel.GroupId, viewModel.UserToRemove))
            {
                throw new ArgumentException("User does not belong to this group");
            }

            if (IsGroupOwner(viewModel.GroupId, viewModel.UserToRemove))
            {
                int owners = _groupMemberRepository.CountOwners(viewModel.GroupId);

                if (owners > 1)
                {
                    _groupMemberRepository.RemoveUserFromGroup(viewModel.GroupId, viewModel.UserToRemove);
                    _issueRepository.AssignToNoone(viewModel.GroupId, viewModel.UserToRemove);

                    return(true);
                }
                return(false);
            }

            _groupMemberRepository.RemoveUserFromGroup(viewModel.GroupId, viewModel.UserToRemove);
            _issueRepository.AssignToNoone(viewModel.GroupId, viewModel.UserToRemove);

            return(true);
        }
Exemplo n.º 2
0
        public ActionResult RemoveMember(RemoveMemberViewModel viewModel)
        {
            int userId = User.Identity.GetUserId <int>();

            viewModel.UserId = userId;
            bool isDeleted = _groupService.RemoveMember(viewModel);

            if (isDeleted)
            {
                return(Json(userId));
            }

            return(new HttpStatusCodeResult(HttpStatusCode.NotModified));
        }
Exemplo n.º 3
0
        public async Task <ActionResult> RemoveMember(RemoveMemberViewModel model)
        {
            if (ModelState.IsValid)
            {
                var project = await db.Projects.FindAsync(model.IdProject);

                /* var thisMember = await db.Users.FirstAsync(u => u.Id == model.IdMemberRemove);
                 *
                 * project.ApplicationUsers.Remove(thisMember);*/

                db.SaveChanges();
            }

            return(RedirectToAction("Members", new { id = model.IdProject }));
        }
Exemplo n.º 4
0
        public async Task <ActionResult> RemoveMember(
            string id,
            string memberIndex,
            RemoveMemberViewModel model)
        {
            ApplicationUser au = db.Users.Find(HttpContext.User.Identity.GetUserId());
            Project         p  = await db.Projects.FindAsync(int.Parse(id));

            if (!(au.OrganizerInProjects.Contains(p) || au.MemberInProjects.Contains(p) || UserManager.IsInRole(au.Id, "Administrator")))
            {
                TempData["Toast"] = new Toast
                {
                    Title = "Project",
                    Body  = "Access unauthorized!",
                    Type  = ToastType.Danger
                };
                return(RedirectToAction("Index", "Home"));
            }
            if (ModelState.IsValid)
            {
                ApplicationUser u = db.Users.Find(
                    p.Members.ElementAt(int.Parse(memberIndex)).Id
                    );

                p.Members.Remove(u);

                await db.SaveChangesAsync();

                TempData["Toast"] = new Toast
                {
                    Title = "Project",
                    Body  = "Member successfully removed!",
                    Type  = ToastType.Success
                };
                return(RedirectToAction("Details", new { id = p.ProjectId }));
            }
            TempData["Toast"] = new Toast
            {
                Title = "Project",
                Body  = "Member removal unsuccessful!",
                Type  = ToastType.Danger
            };
            return(View(model));
        }
        public object RemoveMemberFromProject(RemoveMemberViewModel removeMemberViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new BaseResponse(ResponseStatus.ValidationError.ToString(), ModelState.Values.ToList()[0].Errors[0].ErrorMessage)));
            }

            CurrentUserInfo currentUserInfo = _tokenHelper.GetUserInfo();

            if (!_projectLogic.IsProjectExist(currentUserInfo.Id, removeMemberViewModel.ProjectId))
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, new BaseResponse(ResponseStatus.Notfound.ToString(), ResponseMessagesModel.ProjectNotFound)));
            }

            if (_projectLogic.IsUserProjectCreator(currentUserInfo.Id, removeMemberViewModel.ProjectId))
            {
                return(Request.CreateResponse(HttpStatusCode.MethodNotAllowed, new BaseResponse(ResponseStatus.ValidationError.ToString(), ResponseMessagesModel.PermissionDenied)));
            }

            if (!_projectLogic.IsUserAdminOrCreatorOfProject(currentUserInfo.Id, removeMemberViewModel.ProjectId))
            {
                return(Request.CreateResponse(HttpStatusCode.MethodNotAllowed, new BaseResponse(ResponseStatus.ValidationError.ToString(), ResponseMessagesModel.PermissionDenied)));
            }

            if (!_accountLogic.IsUserExist(removeMemberViewModel.UserId))
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, new BaseResponse(ResponseStatus.Notfound.ToString(), ResponseMessagesModel.UserIsNotFound)));
            }

            if (!_projectTeamLogic.IsUserExistInProject(removeMemberViewModel.UserId, removeMemberViewModel.ProjectId))
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new BaseResponse(ResponseStatus.ValidationError.ToString(), ResponseMessagesModel.UserIsNotFound)));
            }

            ProjectTeamData projectTeamData = RemoveMemberViewModel.GetProjectTeamData(removeMemberViewModel);

            _projectTeamLogic.Delete(projectTeamData);

            return(Request.CreateResponse(HttpStatusCode.OK, new BaseResponse(ResponseStatus.Success.ToString(),
                                                                              ResponseMessagesModel.Success)));
        }
Exemplo n.º 6
0
        public async Task <IActionResult> RemoveMember(RemoveMemberViewModel viewModel, CancellationToken cancellationToken)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            var account = await AccountProvider.GetAccountForCurrentUser(cancellationToken);

            var group = await GetGroup(viewModel.GroupId, cancellationToken);

            if (group == null)
            {
                ModelState.AddModelError(nameof(viewModel.GroupId), "Group does not exist");
                return(View(viewModel));
            }

            if (!group.IsOwner(account))
            {
                ModelState.AddModelError(String.Empty, "Only admin can add members.");
                return(View(viewModel));
            }

            var member = await MailAppDbContext.Accounts.SingleOrDefaultAsync(x => x.Nick == viewModel.AccountNick, cancellationToken);

            if (member == null)
            {
                ModelState.AddModelError(nameof(viewModel.AccountNick), "There is no Account with such nick.");
                return(View(viewModel));
            }

            group.RemoveAccount(member);
            await MailAppDbContext.SaveChangesAsync(cancellationToken);

            return(RedirectToAction(nameof(Details), new { groupId = viewModel.GroupId }));
        }