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);
        }