Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }