Ejemplo n.º 1
0
        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));
            }
        }