public override async Task <ResendInvitationCodeCommand> HandleAsync(ResendInvitationCodeCommand command, CancellationToken cancellationToken = default) { var account = await _accountRepository.GetAccountByEmail(command.Email, cancellationToken); if (account != null && !string.IsNullOrWhiteSpace(account.InvitationCode)) { var library = await _libraryRepository.GetLibrariesByAccountId(account.Id, cancellationToken); // TODO : Read app name from settings var libraryName = library.FirstOrDefault()?.Name ?? "Nawishta"; var invitationCode = Guid.NewGuid(); await _accountRepository.UpdateInvitationCode( command.Email, invitationCode.ToString("N"), DateTime.Today.AddDays(+7), cancellationToken); await _emailService.SendAsync(account.Email, $"Welcome to {libraryName}", EmailTemplateProvider.GetLibraryUserInvitationEmail(account.Name, libraryName, new Uri(new Uri(_settings.FrontEndUrl), _settings.ResetPasswordPagePath).ToString()), _settings.EmailFrom, cancellationToken); } return(await base.HandleAsync(command, cancellationToken)); }
public override async Task <InviteUserCommand> HandleAsync(InviteUserCommand command, CancellationToken cancellationToken = default) { var library = await _libraryRepository.GetLibraryById(command.LibraryId, cancellationToken); if (command.Role != Role.Admin && library == null) { throw new UnauthorizedException(); } var account = await _accountRepository.GetAccountByEmail(command.Email, cancellationToken); if (account != null) { var accountLibraries = await _libraryRepository.GetLibrariesByAccountId(account.Id, cancellationToken); if (string.IsNullOrWhiteSpace(account.InvitationCode) && accountLibraries.Any(t => t.Id == command.LibraryId)) { return(await base.HandleAsync(command, cancellationToken)); } else { await _libraryRepository.AddAccountToLibrary(command.LibraryId, account.Id, command.Role, cancellationToken); return(await base.HandleAsync(command, cancellationToken)); } } var invitationCode = Guid.NewGuid(); await _accountRepository.AddInvitedAccount( command.Name, command.Email, command.Role, invitationCode.ToString("N"), DateTime.Today.AddDays(7), library?.Id, cancellationToken); if (command.Role == Role.Admin) { await _emailService.SendAsync(command.Email, $"Welcome to Dashboards", EmailTemplateProvider.GetSuperAdminInvitationEmail(command.Name, new Uri(new Uri(_settings.FrontEndUrl), _settings.ResetPasswordPagePath).ToString()), _settings.EmailFrom, cancellationToken); } else { await _emailService.SendAsync(command.Email, $"Welcome to {library.Name}", EmailTemplateProvider.GetLibraryUserInvitationEmail(command.Name, library.Name, new Uri(new Uri(_settings.FrontEndUrl), _settings.ResetPasswordPagePath).ToString()), _settings.EmailFrom, cancellationToken); } return(await base.HandleAsync(command, cancellationToken)); }