Files
2026-03-24 15:26:03 -05:00

115 lines
5.1 KiB
C#

using LCU.Api.Internal.DispatcherLib.Repositories;
using Microsoft.Data.SqlClient;
using System.Collections.Generic;
namespace LCU.Api.Internal.Dispatcher.Services
{
public class CleanUpJobSettingService : ICleanUpJobSettingService
{
private readonly ICleanUpJobSettingRepository _cleanUpJobSettingRepository;
private readonly IUnitOfWork _unitOfWork;
public CleanUpJobSettingService(IUnitOfWork unitOfWork,
ICleanUpJobSettingRepository cleanUpJobSettingRepository)
{
_unitOfWork = unitOfWork;
_cleanUpJobSettingRepository = cleanUpJobSettingRepository;
}
public async Task<IEnumerable<CleanUpJobSetting>> GetAsync()
{
try
{
return await _cleanUpJobSettingRepository.ListAsync();
}
catch (Exception exception)
{
Log.Error(exception, "Failure retrieving CleanUpJobSetting.");
throw new ServiceException("Failure retrieving CleanUpJobSetting.");
}
}
public async Task<CleanUpJobSetting> GetByCleanUpJobSettingIdAsync(int cleanUpJobSettingId)
{
try
{
return await _cleanUpJobSettingRepository.FindByCleanUpJobSettingIdAsync(cleanUpJobSettingId);
}
catch (ArgumentNullException exception)
{
Log.Error(exception, $"Failure getting dispatcher Clean Up Job Settings by Id. CleanUpJobSettingId was null");
return null;
}
catch (Exception exception)
{
Log.Error(exception, "Failure retrieving dispatcher Clean Up Job Settings. CleanUpJobSettingId: {@cleanUpJobSettingId}", cleanUpJobSettingId);
throw new ServiceException($"Failure retrieving dispatcher Clean Up Job Settings. CleanUpJobSettingId: {cleanUpJobSettingId}");
}
}
public async Task<CleanUpJobSetting> SaveAsync(CleanUpJobSetting request)
{
try
{
var result = await _cleanUpJobSettingRepository.AddAsync(request);
await _unitOfWork.CompleteAsync();
return result;
}
catch (Exception exception)
{
Log.Error(exception, "Failure saving dispatcher Clean Up Job Settings. CleanUpJobSettingId: {@request.CleanUpJobSettingId}", request.CleanUpJobSettingId);
throw new ServiceException($"Failure saving dispatcher Clean Up Job Settings. CleanUpJobSettingId: {request.CleanUpJobSettingId}");
}
}
public async Task<CleanUpJobSetting> UpdateAsync(CleanUpJobSetting request)
{
try
{
var existing = await GetByCleanUpJobSettingIdAsync(request.CleanUpJobSettingId);
if(existing == null)
{
return null;
}
existing.CompletionDaysPast = request.CompletionDaysPast;
_cleanUpJobSettingRepository.Update(existing);
await _unitOfWork.CompleteAsync();
return existing;
}
catch (SqlException sqlException)
{
Log.Error(sqlException, "SQL Failure updating dispatcher Clean Up Job Settings. CleanUpJobSettingId: {@request.CleanUpJobSettingId}", request.CleanUpJobSettingId);
throw new ServiceException($"SQL Failure updating dispatcher Clean Up Job Settings. CleanUpJobSettingId: {request.CleanUpJobSettingId}");
}
catch (Exception exception)
{
Log.Error(exception, "SQL Failure updating dispatcher Clean Up Job Settings. CleanUpJobSettingId: {@request.CleanUpJobSettingId}", request.CleanUpJobSettingId);
throw new ServiceException($"SQL Failure updating dispatcher Clean Up Job Settings. CleanUpJobSettingId: {request.CleanUpJobSettingId}");
}
}
public async Task DeleteAsync(int cleanUpJobSettingId)
{
try
{
var cleanUpJobSetting = await _cleanUpJobSettingRepository.FindByCleanUpJobSettingIdAsync(cleanUpJobSettingId);
ArgumentNullException.ThrowIfNull(cleanUpJobSetting);
_cleanUpJobSettingRepository.Remove(cleanUpJobSetting);
await _unitOfWork.CompleteAsync();
}
catch (SqlException sqlException)
{
Log.Error(sqlException, "SQL Failure removing dispatcher Clean Up Job Settings. CleanUpJobSettingId: {@cleanUpJobSettingId}", cleanUpJobSettingId);
throw new ServiceException($"SQL Failure removing dispatcher Clean Up Job Settings. CleanUpJobSettingId: {cleanUpJobSettingId}");
}
catch (Exception exception)
{
Log.Error(exception, "Failure removing dispatcher Clean Up Job Settings. CleanUpJobSettingId: {@cleanUpJobSettingId}", cleanUpJobSettingId);
throw new ServiceException($"Failure removing dispatcher Clean Up Job Settings. CleanUpJobSettingId: {cleanUpJobSettingId}");
}
}
}
}