Adding
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using LCU.API.Collections.RepoApi.Configuration;
|
||||
using LCU.Shared.Collections.RepoApiLib.Models.Consumer;
|
||||
|
||||
namespace LCU.API.Collections.RepoApi.DataAccess
|
||||
{
|
||||
[ExcludeFromCodeCoverage]
|
||||
public class CoreDao : DaoClient, ICoreDao
|
||||
{
|
||||
private readonly RepoApiConfiguration _configuration;
|
||||
|
||||
public CoreDao(RepoApiConfiguration configuration,
|
||||
IHttpClientFactory clientFactory) : base(clientFactory)
|
||||
{
|
||||
_configuration = configuration;
|
||||
}
|
||||
|
||||
public async Task<MemberDetail> RetrieveMemberAsync(string accountNo)
|
||||
{
|
||||
var url = CreateUrlFromAccountNo(_configuration.CoreMemberUrl, accountNo);
|
||||
return await RetrieveByIdentifierAsync<MemberDetail>(url, accountNo);
|
||||
}
|
||||
|
||||
public async Task<LoanDetail> RetrieveLoanAsync(string accountNo)
|
||||
{
|
||||
var url = CreateUrlFromAccountNo(_configuration.CoreLoanUrl, accountNo);
|
||||
return await RetrieveByIdentifierAsync<LoanDetail>(url, accountNo);
|
||||
}
|
||||
|
||||
public async Task<IReadOnlyCollection<CollateralDetail>> RetrieveCollateralAsync(string accountNo)
|
||||
{
|
||||
var url = CreateUrlFromAccountNo(_configuration.CoreCollateralUrl, accountNo);
|
||||
return await RetrieveByIdentifierAsync<IReadOnlyCollection<CollateralDetail>>(url, accountNo);
|
||||
}
|
||||
|
||||
public async Task<IReadOnlyCollection<CoreTransaction>> RetrieveTransactionsAsync(string accountNo)
|
||||
{
|
||||
var url = CreateUrlFromAccountNoAndDateRange(_configuration.CoreLoanTransactions, accountNo);
|
||||
return await RetrieveByIdentifierAsync<IReadOnlyCollection<CoreTransaction>>(url, accountNo);
|
||||
}
|
||||
|
||||
private string CreateUrlFromAccountNo(string inputUrl, string accountNo)
|
||||
{
|
||||
var url = inputUrl.Replace(":loanId", accountNo);
|
||||
return url;
|
||||
}
|
||||
|
||||
private string CreateUrlFromAccountNoAndDateRange(string inputUrl, string accountNo)
|
||||
{
|
||||
var url = inputUrl.Replace(":accountNo", accountNo);
|
||||
url = url.Replace(":startDate", DateTimeForUri(DateTime.Now.AddDays(_configuration.TransactionHistoryStartDateOffset)));
|
||||
url = url.Replace(":endDate", DateTimeForUri(DateTime.Now));
|
||||
url += FormatArrayValuesIntoQuery(_configuration.TransactionTypeCodes, _configuration.TransactionTypeCodeQueryPrefix);
|
||||
return url;
|
||||
}
|
||||
|
||||
private string DateTimeForUri(DateTime dateTime)
|
||||
{
|
||||
return dateTime.ToString(_configuration.TransactionHistoryParameterDateFormat);
|
||||
}
|
||||
|
||||
private string FormatArrayValuesIntoQuery(List<string> arrayValues, string queryPrefix)
|
||||
{
|
||||
var returnString = "";
|
||||
foreach (var arrayValue in arrayValues) {
|
||||
returnString += (queryPrefix + arrayValue);
|
||||
}
|
||||
|
||||
return returnString;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user