Exemple #1
0
    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}");
        }
    }
Exemple #2
0
    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);
        }
    }