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