public async Task <Core.Models.Account> Get(string id, AccountFieldsSelection selection) { try { _logger.Debug( $"{nameof(IAccountApiClient)}.{nameof(IAccountApiClient.GetResource)}<{nameof(AccountDetailViewModel)}>(\"/api/accounts/{id.ToUpper()}\");"); var response = await _accountApiClient.GetResource <AccountDetailViewModel>($"/api/accounts/{id.ToUpper()}"); return(await GetAdditionalFields(response, selection)); } catch (Exception e) { _logger.Error(e, $"Account with id {id} not found"); return(null); } }
private async Task <Core.Models.Account> GetAdditionalFields(AccountDetailViewModel response, AccountFieldsSelection selection) { var result = MapToAccount(response); switch (selection) { case AccountFieldsSelection.Organisations: var legalEntities = await GetLegalEntities(response.LegalEntities ?? new ResourceList(new List <ResourceViewModel>())); result.LegalEntities = legalEntities; break; case AccountFieldsSelection.TeamMembers: var teamMembers = await GetAccountTeamMembers(result.HashedAccountId); result.TeamMembers = teamMembers; break; case AccountFieldsSelection.PayeSchemes: result.PayeSchemes = await MapToDomainPayeSchemeAsync(response); return(result); case AccountFieldsSelection.Finance: result.PayeSchemes = await MapToDomainPayeSchemeAsync(response); result.Transactions = await GetAccountTransactions(response.HashedAccountId);; return(result); } return(result); }