public async Task <JsonResult> AddMember(string accountName, string memberName, bool isAdmin) { var account = GetAccount(accountName); if (account == null || ActionsRequiringPermissions.ManageMembership.CheckPermissions(GetCurrentUser(), account) != PermissionsCheckResult.Allowed) { return(Json(HttpStatusCode.Forbidden, Strings.Unauthorized)); } if (!account.Confirmed) { return(Json(HttpStatusCode.BadRequest, Strings.Member_OrganizationUnconfirmed)); } try { var request = await UserService.AddMembershipRequestAsync(account, memberName, isAdmin); var currentUser = GetCurrentUser(); var organizationMembershipRequestMessage = new OrganizationMembershipRequestMessage( MessageServiceConfiguration, account, request.NewMember, currentUser, request.IsAdmin, profileUrl: Url.User(account, relativeUrl: false), confirmationUrl: Url.AcceptOrganizationMembershipRequest(request, relativeUrl: false), rejectionUrl: Url.RejectOrganizationMembershipRequest(request, relativeUrl: false)); await MessageService.SendMessageAsync(organizationMembershipRequestMessage); var organizationMembershipRequestInitiatedMessage = new OrganizationMembershipRequestInitiatedMessage( MessageServiceConfiguration, account, currentUser, request.NewMember, request.IsAdmin, cancellationUrl: Url.CancelOrganizationMembershipRequest(memberName, relativeUrl: false)); await MessageService.SendMessageAsync(organizationMembershipRequestInitiatedMessage); return(Json(new OrganizationMemberViewModel(request))); } catch (EntityException e) { return(Json(HttpStatusCode.BadRequest, e.Message)); } }