public async Task <IHttpActionResult> AddUser(string id, string email) { if (String.IsNullOrEmpty(id) || !CanAccessOrganization(id) || String.IsNullOrEmpty(email)) { return(BadRequest()); } Organization organization = _repository.GetById(id); if (organization == null) { return(BadRequest()); } if (!_billingManager.CanAddUser(organization)) { return(PlanLimitReached("Please upgrade your plan to add an additional user.")); } var currentUser = ExceptionlessUser; User user = _userRepository.GetByEmailAddress(email); if (user != null) { if (!user.OrganizationIds.Contains(organization.Id)) { user.OrganizationIds.Add(organization.Id); _userRepository.Save(user); } _mailer.SendAddedToOrganization(currentUser, organization, user); } else { Invite invite = organization.Invites.FirstOrDefault(i => String.Equals(i.EmailAddress, email, StringComparison.OrdinalIgnoreCase)); if (invite == null) { invite = new Invite { Token = Guid.NewGuid().ToString("N").ToLower(), EmailAddress = email, DateAdded = DateTime.UtcNow }; organization.Invites.Add(invite); _repository.Save(organization); } _mailer.SendInvite(currentUser, organization, invite); } if (user != null) { return(Ok(new User { EmailAddress = user.EmailAddress })); } return(Ok()); }
public async Task <IHttpActionResult> AddUser(string id, string email) { if (String.IsNullOrEmpty(id) || !CanAccessOrganization(id) || String.IsNullOrEmpty(email)) { return(NotFound()); } Organization organization = _repository.GetById(id); if (organization == null) { return(NotFound()); } if (!_billingManager.CanAddUser(organization)) { return(PlanLimitReached("Please upgrade your plan to add an additional user.")); } var currentUser = ExceptionlessUser; User user = _userRepository.GetByEmailAddress(email); if (user != null) { if (!user.OrganizationIds.Contains(organization.Id)) { user.OrganizationIds.Add(organization.Id); _userRepository.Save(user); _messagePublisher.Publish(new UserMembershipChanged { ChangeType = ChangeType.Added, UserId = user.Id, OrganizationId = organization.Id }); } _mailer.SendAddedToOrganization(currentUser, organization, user); } else { Invite 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 = DateTime.UtcNow }; organization.Invites.Add(invite); _repository.Save(organization); } _mailer.SendInvite(currentUser, organization, invite); } return(Ok(new User { EmailAddress = email })); }