188 lines
8.4 KiB
C#
188 lines
8.4 KiB
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using LCU.API.Collections.RepoApi.Exceptions;
|
|
using LCU.API.Collections.RepoApi.Factories;
|
|
using LCU.Shared.Collections.RepoApiLib.Formatting;
|
|
using LCU.Shared.Collections.RepoApiLib.Models.Reporting.Responses;
|
|
using LCU.Shared.Collections.RepoApiLib.Repositories;
|
|
using Serilog;
|
|
|
|
namespace LCU.API.Collections.RepoApi.Services.Reporting
|
|
{
|
|
public class RepoCompanyReportingService : IRepoCompanyReportingService
|
|
{
|
|
private readonly IReportingRepository _reportingRepository;
|
|
|
|
public RepoCompanyReportingService(IReportingRepository reportingRepository)
|
|
{
|
|
_reportingRepository = reportingRepository;
|
|
}
|
|
|
|
public async Task<ReportTableResponse> GetAssignedBalance(DateTime lowDateTime, DateTime highDateTime)
|
|
{
|
|
try
|
|
{
|
|
var reportData = await _reportingRepository.GetAccountsByDateAssigned(lowDateTime, highDateTime);
|
|
|
|
return new ReportTableResponse()
|
|
{
|
|
ReportTable = ReportTableFactory.CreateHistoricalSummationTable(
|
|
ReportSumType.Currency,
|
|
reportData,
|
|
"Repo Companies",
|
|
lowDateTime,
|
|
highDateTime,
|
|
(reportEntry) => reportEntry.Balance,
|
|
(reportEntry) => reportEntry.RepoCompany,
|
|
(reportEntry) => reportEntry.RepoCompanyAssignmentDate,
|
|
(reportEntry) => reportEntry.CollateralId),
|
|
DataTable = DataTableFormatting.CreateDataTable(
|
|
reportData,
|
|
(entry) => entry.RepoId,
|
|
StdReportEntryColumns.Member(),
|
|
StdReportEntryColumns.AccountNo(),
|
|
StdReportEntryColumns.Status(),
|
|
StdReportEntryColumns.DaysInStatus(),
|
|
StdReportEntryColumns.Balance(),
|
|
StdReportEntryColumns.AccountCode(),
|
|
StdReportEntryColumns.Bankruptcy(),
|
|
StdReportEntryColumns.Collateral(),
|
|
StdReportEntryColumns.RepoCompany(),
|
|
StdReportEntryColumns.DateAssigned())
|
|
};
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.Error(ex, "Failure retrieving Repo Company Active Count Report");
|
|
throw new ServerErrorException();
|
|
}
|
|
}
|
|
|
|
public async Task<ReportTableResponse> GetAssignmentCountReport(DateTime lowDateTime, DateTime highDateTime)
|
|
{
|
|
try
|
|
{
|
|
var reportData = await _reportingRepository.GetAccountsByDateAssigned(lowDateTime, highDateTime);
|
|
|
|
return new ReportTableResponse()
|
|
{
|
|
ReportTable = ReportTableFactory.CreateHistoricalSummationTable(
|
|
ReportSumType.WholeNumber,
|
|
reportData,
|
|
"Repo Companies",
|
|
lowDateTime,
|
|
highDateTime,
|
|
(reportEntry) => 1,
|
|
(reportEntry) => reportEntry.RepoCompany,
|
|
(reportEntry) => reportEntry.RepoCompanyAssignmentDate,
|
|
(reportEntry) => reportEntry.CollateralId),
|
|
DataTable = DataTableFormatting.CreateDataTable(
|
|
reportData,
|
|
(entry) => entry.RepoId,
|
|
StdReportEntryColumns.Member(),
|
|
StdReportEntryColumns.AccountNo(),
|
|
StdReportEntryColumns.Status(),
|
|
StdReportEntryColumns.DaysInStatus(),
|
|
StdReportEntryColumns.RepoType(),
|
|
StdReportEntryColumns.Balance(),
|
|
StdReportEntryColumns.AccountCode(),
|
|
StdReportEntryColumns.Bankruptcy(),
|
|
StdReportEntryColumns.Collector(),
|
|
StdReportEntryColumns.Collateral(),
|
|
StdReportEntryColumns.RepoCompany(),
|
|
StdReportEntryColumns.DateAssigned())
|
|
};
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.Error(ex, "Failure retrieving Repo Company Active Count Report");
|
|
throw new ServerErrorException();
|
|
}
|
|
}
|
|
|
|
public async Task<ReportTableResponse> GetAvgDaysAssignedToRepoed(DateTime lowDateTime, DateTime highDateTime)
|
|
{
|
|
try
|
|
{
|
|
var reportData = await _reportingRepository.GetAccountsByDateRepoed(lowDateTime, highDateTime);
|
|
|
|
return new ReportTableResponse()
|
|
{
|
|
ReportTable = ReportTableFactory.CreateHistoricalSummationTable(
|
|
ReportSumType.WholeNumberAvg,
|
|
reportData,
|
|
"Repo Companies",
|
|
lowDateTime,
|
|
highDateTime,
|
|
(reportEntry) => reportEntry.RepoDuration,
|
|
(reportEntry) => reportEntry.RepoCompany,
|
|
(reportEntry) => reportEntry.DateRepoed,
|
|
(reportEntry) => reportEntry.CollateralId,
|
|
false),
|
|
DataTable = DataTableFormatting.CreateDataTable(
|
|
reportData,
|
|
(reportRow) => reportRow.RepoId,
|
|
StdReportEntryColumns.Member(),
|
|
StdReportEntryColumns.AccountNo(),
|
|
StdReportEntryColumns.Status(),
|
|
StdReportEntryColumns.DaysInStatus(),
|
|
StdReportEntryColumns.RepoType(),
|
|
StdReportEntryColumns.Balance(),
|
|
StdReportEntryColumns.AccountCode(),
|
|
StdReportEntryColumns.Bankruptcy(),
|
|
StdReportEntryColumns.Collateral(),
|
|
StdReportEntryColumns.RepoCompany(),
|
|
StdReportEntryColumns.RepoDuration(),
|
|
StdReportEntryColumns.DateAssigned(),
|
|
StdReportEntryColumns.DateRepoed())
|
|
};
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.Error(ex, "Failure retrieving Avg Days Assigned to Repoed Report");
|
|
throw new ServerErrorException();
|
|
}
|
|
}
|
|
|
|
public async Task<ReportTableResponse> GetRepoedCountReport(DateTime lowDateTime, DateTime highDateTime)
|
|
{
|
|
try
|
|
{
|
|
var reportData = await _reportingRepository.GetAccountsByDateRepoed(lowDateTime, highDateTime);
|
|
|
|
return new ReportTableResponse()
|
|
{
|
|
ReportTable = ReportTableFactory.CreateHistoricalSummationTable(
|
|
ReportSumType.WholeNumber,
|
|
reportData,
|
|
"Repo Companies",
|
|
lowDateTime,
|
|
highDateTime,
|
|
(reportEntry) => 1,
|
|
(reportEntry) => reportEntry.RepoCompany,
|
|
(reportEntry) => reportEntry.DateRepoed,
|
|
(reportEntry) => reportEntry.CollateralId),
|
|
DataTable = DataTableFormatting.CreateDataTable(
|
|
reportData,
|
|
(entry) => entry.RepoId,
|
|
StdReportEntryColumns.Member(),
|
|
StdReportEntryColumns.AccountNo(),
|
|
StdReportEntryColumns.Status(),
|
|
StdReportEntryColumns.DaysInStatus(),
|
|
StdReportEntryColumns.RepoType(),
|
|
StdReportEntryColumns.Balance(),
|
|
StdReportEntryColumns.AccountCode(),
|
|
StdReportEntryColumns.Bankruptcy(),
|
|
StdReportEntryColumns.Collateral(),
|
|
StdReportEntryColumns.RepoCompany(),
|
|
StdReportEntryColumns.RepoDuration())
|
|
};
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.Error(ex, "Failure retrieving Repo Company Active Count Report");
|
|
throw new ServerErrorException();
|
|
}
|
|
}
|
|
}
|
|
} |