using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Net.Http; using System.Threading.Tasks; using LCU.API.Collections.CollectionsApiLib.Models; using LCU.API.Collections.RepoApi.Configuration; using LCU.Shared.Collections.RepoApiLib.Models.Settings; namespace LCU.API.Collections.RepoApi.DataAccess { [ExcludeFromCodeCoverage] public class CollectionsDao : DaoClient, ICollectionsDao { private readonly RepoApiConfiguration _configuration; public CollectionsDao(RepoApiConfiguration configuration, IHttpClientFactory clientFactory) : base(clientFactory) { _configuration = configuration; } public async Task RetrieveAccountAsync(string accountNo) { var url = BuildTemenosAccountUrl(accountNo); var accounts = await RetrieveByIdentifierAsync>(url, accountNo); if (accounts != null && accounts.Any()) { return accounts.Where(x => x.AccountIdentifier == accountNo) .OrderByDescending(x => x.OriginalLoanDate).First(); } return null; } public async Task> RetrieveHistoryAsync(int accountId) { var url = _configuration.CollectionsLetterUrl.Replace(":accountId", accountId.ToString()); return await RetrieveByIdentifierAsync>(url, accountId.ToString()); } public async Task> RetrieveBranchSetAsync() { var url = _configuration.CoreBranchSetUrl; return await RetrieveAllAsync>(url); } public async Task RetrieveTemenosConfigurationAsync() { var url = _configuration.CollectionsConfigUrl; return await RetrieveAllAsync(url); } public string BuildTemenosAccountUrl(string accountNo) { return _configuration.CollectionAccountUrl + _configuration.OrganizationCode + accountNo; } } }