public async Task SendOrganizationAddedAsync() { var user = UserData.GenerateSampleUser(); var organization = OrganizationData.GenerateSampleOrganization(_billingManager, _plans); await _mailer.SendOrganizationAddedAsync(user, organization, user); await RunMailJobAsync(); }
public async Task <ActionResult <User> > AddUserAsync(string id, string email) { if (String.IsNullOrEmpty(id) || !CanAccessOrganization(id) || String.IsNullOrEmpty(email)) { return(NotFound()); } var organization = await GetModelAsync(id); if (organization == null) { return(NotFound()); } if (!await _billingManager.CanAddUserAsync(organization)) { return(PlanLimitReached("Please upgrade your plan to add an additional user.")); } var user = await _userRepository.GetByEmailAddressAsync(email); if (user != null) { if (!user.OrganizationIds.Contains(organization.Id)) { user.OrganizationIds.Add(organization.Id); await _userRepository.SaveAsync(user, o => o.Cache()); await _messagePublisher.PublishAsync(new UserMembershipChanged { ChangeType = ChangeType.Added, UserId = user.Id, OrganizationId = organization.Id }); } await _mailer.SendOrganizationAddedAsync(CurrentUser, organization, user); } else { var invite = organization.Invites.FirstOrDefault(i => String.Equals(i.EmailAddress, email, StringComparison.OrdinalIgnoreCase)); if (invite == null) { invite = new Invite { Token = StringExtensions.GetNewToken(), EmailAddress = email.ToLowerInvariant(), DateAdded = SystemClock.UtcNow }; organization.Invites.Add(invite); await _repository.SaveAsync(organization, o => o.Cache()); } await _mailer.SendOrganizationInviteAsync(CurrentUser, organization, invite); } return(Ok(new User { EmailAddress = email })); }