public async Task <IActionResult> CreatePayment() { if (_environment.IsProduction()) { return(NotFound()); } IImmutableList <Account> accounts = ImmutableList.Create <Account>(); try { accounts = await _aiiaService.GetUserAccounts(User); } catch (AiiaClientException e) { // TODO } return(View(new CreatePaymentViewModel { Accounts = accounts })); }
public async Task <IActionResult> Accounts() { var currentUserId = User.FindFirst(ClaimTypes.NameIdentifier).Value; var user = _dbContext.Users.FirstOrDefault(x => x.Id == currentUserId); var providers = await _aiiaService.GetProviders(); providers = providers .OrderBy(x => x.CountryCode) .ThenBy(y => y.Name) .ToImmutableList(); // If user hasn't connected to Aiia or his access token is expired, show empty accounts page if (user?.AiiaAccessToken == null || user.AiiaAccessTokenExpires < DateTimeOffset.UtcNow) { return(View(new AccountsViewModel { AccountsGroupedByProvider = null, AiiaConnectUrl = _aiiaService.GetAuthUri(user?.Email).ToString(), EmailEnabled = user?.EmailEnabled ?? false, Providers = providers, Email = user?.Email, ConsentId = user?.AiiaConsentId })); } var accounts = await _aiiaService.GetUserAccounts(User); var groupedAccounts = accounts.ToLookup(x => x.AccountProvider?.Id, x => x); var allAccountsSelected = await _aiiaService.AllAccountsSelected(User); var model = new AccountsViewModel { AccountsGroupedByProvider = groupedAccounts, AiiaConnectUrl = _aiiaService.GetAuthUri(user.Email).ToString(), JwtToken = new JwtSecurityTokenHandler().ReadJwtToken(user.AiiaAccessToken), RefreshToken = new JwtSecurityTokenHandler().ReadJwtToken(user.AiiaRefreshToken), EmailEnabled = user.EmailEnabled, Providers = providers, ConsentId = user.AiiaConsentId, Email = user.Email, AllAccountsSelected = allAccountsSelected }; return(View(model)); }