using OAService.Service.Servizi.Implementazioni;
using StandManager.Domain.Entita;
using StandManager.Service.Interfaces;
using StandManager.Service.Repository;

namespace StandManager.Service;

public class IscrizioneEventoService : TService<IscrizioneEvento>, IIscrizioneEventoService
{
    private readonly IStandManagerUnitOfWork _unitOfWork;

    public IscrizioneEventoService(IStandManagerUnitOfWork unitOfWork) : base(unitOfWork)
    {
        _unitOfWork = unitOfWork;
    }

    public async Task<IscrizioneEvento> Salva(IscrizioneEvento entita)
    {
        bool isNuovaEntita = entita.Id == Guid.Empty;

        entita.DataCreazione = isNuovaEntita ? DateTime.Now : entita.DataCreazione;
        entita.DataModifica = isNuovaEntita == false ? DateTime.Now : null;
        entita.IdUtenteCreazione = isNuovaEntita ? null : entita.IdUtenteCreazione;
        entita.IdUtenteModifica = isNuovaEntita == false ? null : null;

        if (isNuovaEntita)
            await _unitOfWork.GetRepository<IscrizioneEvento>().Put(entita);

        int result = await _unitOfWork.Salva();

        return entita;
    }
}
