76 lines
3.0 KiB
C#
76 lines
3.0 KiB
C#
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;
|
|
}
|
|
}
|
|
} |