Files
monorepo/LCU.API.Operations.IncentiveAPI/LCU.API.Internal.Operations.IncentiveApiLib/Repositories/ProcessorHistoryRepository.cs
T
2026-03-17 09:53:09 -05:00

63 lines
2.6 KiB
C#

using System.Collections.Generic;
using System.Threading.Tasks;
using LCU.Library.Internal.IncentiveApiModels.Entities;
using LCU.Library.Internal.IncentiveApiModels.Enums;
using LCU.API.Internal.Operations.IncentiveApiLib.Persistence;
using Microsoft.EntityFrameworkCore;
using Serilog;
namespace LCU.API.Internal.Operations.IncentiveApiLib.Repositories;
public class ProcessorHistoryRepository : BaseRepository, IProcessorHistoryRepository
{
public ProcessorHistoryRepository(IApplicationDbContext context) : base(context)
{
}
public async Task<Process> SaveProcessorRunHistory(ProcessorHistoryRecord newHistoryRecord)
{
var existingProcess = await _context.ProcessorRunHistory.FindAsync(newHistoryRecord.Process);
if (existingProcess == null)
{
await _context.ProcessorRunHistory.AddAsync(newHistoryRecord);
return newHistoryRecord.Process;
}
if (newHistoryRecord.LastSuccessfulRunTime < existingProcess.LastSuccessfulRunTime)
{
Log.Warning(
$"ProcessorHistoryRepository Saved over a record with older data." +
$"Old LastSuccess {existingProcess.LastSuccessfulRunTime} New LastSuccess: {newHistoryRecord.LastSuccessfulRunTime}");
}
if (newHistoryRecord.LastProcessedRecordTimestamp < existingProcess.LastProcessedRecordTimestamp)
{
Log.Warning(
$"ProcessorHistoryRepository Saved over a record with older data." +
$"Old LastProcessed {existingProcess.LastProcessedRecordTimestamp} New LastProcessed: {newHistoryRecord.LastProcessedRecordTimestamp}");
}
if (newHistoryRecord.LastProcessedRecordId < existingProcess.LastProcessedRecordId)
{
Log.Warning(
$"ProcessorHistoryRepository Saved over a record with older data." +
$"Old ID {existingProcess.LastProcessedRecordId} New ID: {newHistoryRecord.LastProcessedRecordId}");
}
existingProcess.LastProcessedRecordId = newHistoryRecord.LastProcessedRecordId;
existingProcess.LastProcessedRecordTimestamp = newHistoryRecord.LastProcessedRecordTimestamp;
existingProcess.LastSuccessfulRunTime = newHistoryRecord.LastSuccessfulRunTime;
return existingProcess.Process;
}
public async Task<ProcessorHistoryRecord> GetProcessorRunHistory(Process process)
{
return await _context.ProcessorRunHistory.FindAsync(process);
}
public async Task<List<ProcessorHistoryRecord>> GetAllProcessorRunHistory()
{
return await _context.ProcessorRunHistory.ToListAsync();
}
}