public async Task DeactiveInvitesForExistingMembers(AppendOnlyStringList messages) { var spec = new ActiveInvitationsSpec(); var activeInvitations = await _inviteRepository.ListAsync(spec); foreach (var invitation in activeInvitations) { var user = await _userManager.FindByEmailAsync(invitation.Email); if (user == null) { continue; } var member = await _memberRepository.GetBySpecAsync(new MemberByUserIdSpec(user.Id)); if (member == null) { continue; } invitation.Deactivate(); await _inviteRepository.UpdateAsync(invitation); messages.Append($"Disabled invitation for email {invitation.Email}"); } }
public async Task SendPingIfNeeded(AppendOnlyStringList messages) { var spec = new ActiveInvitationsSpec(); var activeInvitations = await _inviteRepository.ListAsync(spec); var invitationsForUserPing = CheckIfAnyActiveInvitationsRequireUserPing(activeInvitations); if (invitationsForUserPing.Any()) { foreach (var invitation in invitationsForUserPing) { messages.Append($"User at email {invitation.Email} should be reminded to finish setting up their account."); } var userPingMessages = await SendUserPing(invitationsForUserPing); foreach (var message in userPingMessages) { messages.Append(message); } } var invitationsForAdminPing = CheckIfAnyActiveInvitationsRequireAdminPing(activeInvitations); if (invitationsForAdminPing.Any()) { var listOfEmailsToRemindAdminsAbout = ""; foreach (var invitation in invitationsForAdminPing) { listOfEmailsToRemindAdminsAbout += $"{invitation.Email}\n"; } messages.Append($"Admins should be reminded to remind these users to finish setting up their DevBetter accounts: {listOfEmailsToRemindAdminsAbout}"); var adminPingMessage = await SendAdminPing(invitationsForAdminPing); messages.Append(adminPingMessage); } }