public async Task <ActionResult> AddMemberAsync(GroupAddMemberViewModel model, CancellationToken cancellationToken) { ViewBag.HideSideBar = true; if (!ModelState.IsValid) { return(View(model)); } var invitedMemberMailAddress = new MailAddress(model.Email); var groupAddMemberQueryResponse = await _addMemberService.GroupAddMemberQueryAsync(invitedMemberMailAddress, model.Slug, cancellationToken); //Dont want to use IMembershipService var addedByUsername = System.Web.HttpContext.Current.User.Identity.Name; if (ResponseType.DoesntExist == groupAddMemberQueryResponse.Response) { ModelState.AddModelError(nameof(model.Email), "This user is not registered on the platform. The platform is not open for new registrations at present, please contact support for more information."); return(View(model)); } var response = ResponseType.NoResponse; if (ResponseType.AlreadyExists == groupAddMemberQueryResponse.Response) { if (groupAddMemberQueryResponse.IsApproved) { ModelState.AddModelError(nameof(model.Email), "The email address belongs to a member of this group."); return(View(model)); } response = await _addMemberService.ApproveGroupMemberAsync(invitedMemberMailAddress, addedByUsername, model.Slug, cancellationToken); } if (ResponseType.Success == groupAddMemberQueryResponse.Response) { response = await _addMemberService.AddMemberToGroupAsync(invitedMemberMailAddress, StandardMemberRole, addedByUsername, model.Slug, cancellationToken); } if (ResponseType.Success == response) { var newModel = new GroupAddMemberViewModel { Slug = model.Slug, Response = ResponseType.Success }; return(View(newModel)); } ModelState.AddModelError(nameof(model.Email), response.ToString()); return(View(model)); }
public async Task <ActionResult> AddMemberAsync(string slug, CancellationToken cancellationToken) { var currentMemberUsername = System.Web.HttpContext.Current.User.Identity.Name; if (!await _addMemberService.IsCurrentMemberAdminAsync(currentMemberUsername, slug, cancellationToken)) { return(RedirectToRoute("GroupUrls", new { slug })); } ViewBag.HideSideBar = true; var model = new GroupAddMemberViewModel { Slug = slug, }; return(View(model)); }
public async Task Handles_ValidPostRequest_AddMemberAsync() { var groupAddMemberViewModel = new GroupAddMemberViewModel() { Email = EmailValid, Slug = GroupSlugValid }; var controller = new GroupInviteController(_mockGroupInviteService.Object, _mockGroupAddMemberService.Object); SetUserInContext.SetContext("admin"); var result = await controller.AddMemberAsync(groupAddMemberViewModel, CancellationToken.None) as ViewResult; Assert.IsInstanceOf <ActionResult>(result); Assert.IsInstanceOf <GroupAddMemberViewModel>(result.Model); Assert.AreEqual(GroupSlugValid, (result.Model as GroupAddMemberViewModel).Slug); Assert.AreEqual(ResponseType.Success, (result.Model as GroupAddMemberViewModel).Response); }
public async Task Handles_InvalidPostRequest_AddMemberAsync() { var controller = new GroupInviteController(_mockGroupInviteService.Object, _mockGroupAddMemberService.Object); controller.ModelState.AddModelError("error", "invalid state"); SetUserInContext.SetContext("admin"); var groupAddMemberViewModel = new GroupAddMemberViewModel() { Email = EmailInvalid, Slug = GroupSlugValid }; var result = await controller.AddMemberAsync(groupAddMemberViewModel, CancellationToken.None) as ViewResult; Assert.IsInstanceOf <ActionResult>(result); Assert.IsInstanceOf <GroupAddMemberViewModel>(result.Model); Assert.AreEqual(GroupSlugValid, (result.Model as GroupAddMemberViewModel).Slug); Assert.AreEqual(EmailInvalid, (result.Model as GroupAddMemberViewModel).Email); Assert.AreEqual("invalid state", result.ViewData.ModelState.Values.FirstOrDefault().Errors.FirstOrDefault().ErrorMessage); }