opencand/OpenCand.ETL/Services/BemCandidatoService.cs
2025-05-31 10:58:30 -03:00

38 lines
1.5 KiB
C#

using OpenCand.Core.Models;
using OpenCand.Repository;
namespace OpenCand.Services
{
public class BemCandidatoService
{
private readonly CandidatoRepository candidatoRepository;
private readonly BemCandidatoRepository bemCandidatoRepository;
public BemCandidatoService(CandidatoRepository candidatoRepository, BemCandidatoRepository bemCandidatoRepository)
{
this.candidatoRepository = candidatoRepository;
this.bemCandidatoRepository = bemCandidatoRepository;
}
public async Task AddBemCandidatoAsync(BemCandidato bemCandidato)
{
if (bemCandidato == null || string.IsNullOrWhiteSpace(bemCandidato.SqCandidato))
{
throw new ArgumentNullException(nameof(bemCandidato), "BemCandidato cannot be null");
}
// Get idCandidato from CandidatoRepository
var candidato = await candidatoRepository.GetIdCandidatoBySqCandidato(bemCandidato.SqCandidato, bemCandidato.Ano, bemCandidato.SiglaUF, bemCandidato.NomeUE);
if (candidato == null || candidato.IdCandidato == Guid.Empty)
{
throw new InvalidOperationException($"AddBemCandidatoAsync - Candidato '{bemCandidato.SqCandidato}'/{bemCandidato.Ano}/'{bemCandidato.SiglaUF}'/'{bemCandidato.NomeUE}' not found.");
}
bemCandidato.IdCandidato = candidato.IdCandidato;
await bemCandidatoRepository.AddBemCandidatoAsync(bemCandidato);
}
}
}