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); }
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)); }
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 })); }
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))); }
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 })); }