Files
monorepo/LCU.API.Operations.IncentiveAPI/LCU.API.Internal.Operations.IncentiveApi/Services/CommissionService.cs
T
2026-03-17 09:53:09 -05:00

50 lines
1.7 KiB
C#

using LCU.API.Internal.Operations.IncentiveApi.Exceptions;
using LCU.API.Internal.Operations.IncentiveApiLib.Repositories;
using LCU.Library.Internal.IncentiveApiModels.Entities;
namespace LCU.API.Internal.Operations.IncentiveApi.Services;
public class CommissionService : ICommissionService
{
private readonly ICommissionRepository _commissionRepository;
private readonly IUnitOfWork _unitOfWork;
public CommissionService(ICommissionRepository commissionRepository, IUnitOfWork unitOfWork)
{
_commissionRepository = commissionRepository;
_unitOfWork = unitOfWork;
}
public async Task<IReadOnlyCollection<Commission>> GetCommissionsAsync()
{
return await _commissionRepository.GetCommissionsAsync();
}
public async Task SaveCommissionsAsync(List<Commission> commissionsToSave)
{
foreach (var commission in commissionsToSave)
{
if (commission.Id == 0)
{
var existing = await _commissionRepository.FindExistingCommission(commission.Role, commission.Product);
if (existing != null)
{
throw new CommissionExistsException($"Commission already exists for Role={existing.Role.Name}, Product={existing.Product}");
}
await _commissionRepository.SaveCommission(commission);
}
else
{
var existing = await _commissionRepository.FindExistingCommission(commission.Id);
if (existing != null)
{
existing.RatePerProduct = commission.RatePerProduct;
}
}
}
await _unitOfWork.CompleteAsync();
}
}