Files
monorepo/LCU.Api.Internal.CoreApiWrapper/LCU.Library.Internal.CoreApiWrapperLib/DataAccess/ActivityDao.cs
T
2026-03-31 14:32:23 -05:00

318 lines
15 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using LCU.Library.Internal.CoreApiWrapperLib.CoreDbUtilities;
using LCU.Library.Internal.CoreApiWrapperLib.Utilities;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Activity;
using LCU.Library.Internal.CoreApiWrapperModel.LcuModels.Activity;
namespace LCU.Library.Internal.CoreApiWrapperLib.DataAccess
{
public class ActivityDao : IActivityDao
{
private readonly ICoreDbExecution _coreDbExecution;
private const string NewCheckingAccountSalesDigitalBanking = "Activity/NewCheckingAccountSalesDigitalBanking";
private const string NewCheckingAccountSalesQuery = "Activity/NewCheckingAccountSales";
private const string NewAtmCheckCardQuery = "Activity/NewAtmCheckCardSales";
private const string NewMortgageSalesQuery = "Activity/NewMortgageAccountSales";
private const string NewVehicleSalesQuery = "Activity/NewVehicleAccountSales";
private const string NewDebtProtectedLoanQuery = "Activity/NewDebtProtectedLoanSales";
private const string EStatementDeliveryQuery = "Activity/QueryEStatementDeliveryMethod";
private const string NewActivityManagerIncentiveReferralQuery = "Activity/NewActivityManagerIncentiveReferralQuery";
private const string ActivityManagerReferralById = "Activity/QueryActivityManagerActivityDetail";
private const string GetPersonActivityByPhoneNumberQuery = "Activity/GetPersonActivityByPhoneNumberQuery";
private const string GetPersonActivityByPersonNumberQuery = "Activity/GetPersonActivityByPersonNumberQuery";
private const string DnaTimeFormat = "yyyy-MM-dd HH:mm:ss";
public ActivityDao(ICoreDbExecution coreDbExecution)
{
_coreDbExecution = coreDbExecution;
}
//Some of this could be DRYer, opting for this for better Type Safety and Messaging in Services.
public async Task<IReadOnlyCollection<NewCheckingAccountActivity>> GetNewCheckingActivitiesNewerThanDate(
DateTime newerThanDateTime,
int limitAmount
)
{
var query = QueryUtilities.GetQuery(NewCheckingAccountSalesQuery);
//Define Anonymous Object to Pass in Parameter "newerThanDateTime: "datetimestring" to query
//See: https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/types/anonymous-types
var accountActivityParams = new
{
newerThanDateTime = newerThanDateTime.ToString(DnaTimeFormat),
afterActivityNbr = (string)null,
limitAmount = limitAmount.ToString()
};
var results =
await _coreDbExecution.ExecuteQuery<NewCheckingAccountActivity, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewCheckingAccountActivity>> GetNewCheckingActivitiesAfterActivityNbr(
long afterActivityNumber,
int limitAmount
)
{
var query = QueryUtilities.GetQuery(NewCheckingAccountSalesQuery);
var accountActivityParams = new
{
afterActivityNbr = afterActivityNumber.ToString(),
newerThanDateTime = (string)null,
limitAmount = limitAmount.ToString()
};
var results =
await _coreDbExecution.ExecuteQuery<NewCheckingAccountActivity, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewCheckingAccountActivity>> GetNewCheckingActivities(
DateTime newerThanDateTime,
long afterActivityNumber,
int limitAmount
)
{
var query = QueryUtilities.GetQuery(NewCheckingAccountSalesQuery);
var accountActivityParams = new
{
afterActivityNbr = afterActivityNumber.ToString(),
newerThanDateTime = newerThanDateTime.ToString(DnaTimeFormat),
limitAmount = limitAmount.ToString()
};
var results =
await _coreDbExecution.ExecuteQuery<NewCheckingAccountActivity, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewCheckingAccountActivity>> GetNewDigitalBankingCheckingActivitiesNewerThanDate(
DateTime newerThanDateTime,
int limitAmount
)
{
var query = QueryUtilities.GetQuery(NewCheckingAccountSalesDigitalBanking);
var accountActivityParams = new
{
newerThanDateTime = newerThanDateTime.ToString(DnaTimeFormat),
afterActivityNbr = (string)null,
limitAmount = limitAmount.ToString()
};
var results =
await _coreDbExecution.ExecuteQuery<NewCheckingAccountActivity, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewCheckingAccountActivity>> GetNewDigitalBankingCheckingActivitiesAfterActivityNbr(
long afterActivityNumber,
int limitAmount
)
{
var query = QueryUtilities.GetQuery(NewCheckingAccountSalesDigitalBanking);
var accountActivityParams = new
{
afterActivityNbr = afterActivityNumber.ToString(),
newerThanDateTime = (string)null,
limitAmount = limitAmount.ToString()
};
var results =
await _coreDbExecution.ExecuteQuery<NewCheckingAccountActivity, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewCheckingAccountActivity>> GetNewDigitalBankingCheckingActivities(
DateTime newerThanDateTime,
long afterActivityNumber,
int limitAmount
)
{
var query = QueryUtilities.GetQuery(NewCheckingAccountSalesDigitalBanking);
var accountActivityParams = new
{
afterActivityNbr = afterActivityNumber.ToString(),
newerThanDateTime = newerThanDateTime.ToString(DnaTimeFormat),
limitAmount = limitAmount.ToString()
};
var results =
await _coreDbExecution.ExecuteQuery<NewCheckingAccountActivity, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewAtmCheckCardActivity>> GetNewAtmCheckCardActivitiesNewerThanDate(
DateTime newerThanDateTime,
int limitAmount
)
{
var query = QueryUtilities.GetQuery(NewAtmCheckCardQuery);
var accountActivityParams = new
{
newerThanDateTime = newerThanDateTime.ToString(DnaTimeFormat),
afterActivityNbr = (string)null,
limitAmount = limitAmount.ToString()
};
var results =
await _coreDbExecution.ExecuteQuery<NewAtmCheckCardActivity, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewAtmCheckCardActivity>> GetNewAtmCheckCardActivitiesAfterActivityNbr(
long afterActivityNumber,
int limitAmount
)
{
var query = QueryUtilities.GetQuery(NewAtmCheckCardQuery);
var accountActivityParams = new
{
afterActivityNbr = afterActivityNumber.ToString(),
newerThanDateTime = (string)null,
limitAmount = limitAmount.ToString()
};
var results =
await _coreDbExecution.ExecuteQuery<NewAtmCheckCardActivity, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewAtmCheckCardActivity>> GetNewAtmCheckCardActivities(
DateTime newerThanDateTime,
long afterActivityNumber,
int limitAmount
)
{
var query = QueryUtilities.GetQuery(NewAtmCheckCardQuery);
var accountActivityParams = new
{
afterActivityNbr = afterActivityNumber.ToString(),
newerThanDateTime = newerThanDateTime.ToString(DnaTimeFormat),
limitAmount = limitAmount.ToString()
};
var results =
await _coreDbExecution.ExecuteQuery<NewAtmCheckCardActivity, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewActivityManagerIncentiveReferral>> GetNewActivityManagerReferralsNewerThan(
DateTime newerThanOriginationDateTime)
{
var query = QueryUtilities.GetQuery(NewActivityManagerIncentiveReferralQuery);
var accountActivityParams = new
{
newerThanOriginationDate = newerThanOriginationDateTime.ToString(DnaTimeFormat),
afterActivityId = (string)null
};
var results =
await _coreDbExecution.ExecuteQuery<NewActivityManagerIncentiveReferral, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewActivityManagerIncentiveReferral>> GetNewActivityManagerReferralsAfterActivityId(long afterActivityId)
{
var query = QueryUtilities.GetQuery(NewActivityManagerIncentiveReferralQuery);
var accountActivityParams = new
{
afterActivityId = afterActivityId.ToString(),
newerThanOriginationDate = (string)null
};
var results =
await _coreDbExecution.ExecuteQuery<NewActivityManagerIncentiveReferral, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewActivityManagerIncentiveReferral>> GetNewActivityManagerReferrals(DateTime newerThanOriginationDateTime,
long afterActivityId)
{
var query = QueryUtilities.GetQuery(NewActivityManagerIncentiveReferralQuery);
var accountActivityParams = new
{
afterActivityId = afterActivityId.ToString(),
newerThanOriginationDate = newerThanOriginationDateTime.ToString(DnaTimeFormat),
};
var results =
await _coreDbExecution.ExecuteQuery<NewActivityManagerIncentiveReferral, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewLoanSaleActivity>> GetNewMortgageSaleActivities(
DateTime? newerThanDateTime, long? afterActivityNumber)
{
var query = QueryUtilities.GetQuery(NewMortgageSalesQuery);
var accountActivityParams = new
{
afterActivityNbr = afterActivityNumber?.ToString(),
newerThanDateTime = newerThanDateTime?.ToString(DnaTimeFormat)
};
var results =
await _coreDbExecution.ExecuteQuery<NewLoanSaleActivity, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewLoanSaleActivity>> GetNewVehicleSaleActivities(
DateTime? newerThanDateTime, long? afterActivityNumber)
{
var query = QueryUtilities.GetQuery(NewVehicleSalesQuery);
var accountActivityParams = new
{
afterActivityNbr = afterActivityNumber?.ToString(),
newerThanDateTime = newerThanDateTime?.ToString(DnaTimeFormat)
};
var results =
await _coreDbExecution.ExecuteQuery<NewLoanSaleActivity, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewLoanSaleActivity>> GetNewDebtProtectedLoanSaleActivities(
DateTime? newerThanDateTime, long? afterActivityNumber)
{
var query = QueryUtilities.GetQuery(NewDebtProtectedLoanQuery);
var accountActivityParams = new
{
afterActivityNbr = afterActivityNumber?.ToString(),
newerThanDateTime = newerThanDateTime?.ToString(DnaTimeFormat)
};
var results =
await _coreDbExecution.ExecuteQuery<NewLoanSaleActivity, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<NewActivityManagerIncentiveReferral>> QueryActivityManagerActivity(ActivityQueryRequest request)
{
var query = QueryUtilities.GetQuery(ActivityManagerReferralById);
var accountActivityParams = new
{
activityIds = request.ActivityIds.Select(x => x.ToString()).ToArray()
};
var results =
await _coreDbExecution.ExecuteQuery<NewActivityManagerIncentiveReferral, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<EStatementDeliveryMethod>> GetEStatementDeliveryActivity(DateTime? newerThanDateTime)
{
var query = QueryUtilities.GetQuery(EStatementDeliveryQuery);
var accountActivityParams = new
{
newerThanDateTime = newerThanDateTime?.ToString(DnaTimeFormat)
};
var results =
await _coreDbExecution.ExecuteQuery<EStatementDeliveryMethod, object>(query, accountActivityParams);
return results.ToList();
}
public async Task<IReadOnlyCollection<PersonRecentActivity>> GetPersonActivityByPhoneNumber(string phoneNumber)
{
var query = QueryUtilities.GetQuery(GetPersonActivityByPhoneNumberQuery);
var personRecentActivityParams = new
{
phoneNumber = phoneNumber
};
return (await _coreDbExecution.ExecuteQuery<PersonRecentActivity, dynamic>(query, personRecentActivityParams)).ToList();
}
public async Task<PersonRecentActivity> GetPersonActivityByPersonNumber(string personNumber)
{
var query = QueryUtilities.GetQuery(GetPersonActivityByPersonNumberQuery);
var personRecentActivityParams = new {
personNumber = personNumber
};
return (await _coreDbExecution.ExecuteQuery<PersonRecentActivity, dynamic>(query, personRecentActivityParams)).FirstOrDefault();
}
}
}