40 lines
1.4 KiB
C#
40 lines
1.4 KiB
C#
using System.Data;
|
|
using AMREZ.EOP.Abstractions.Applications.UseCases.MasterData.Allergen;
|
|
using AMREZ.EOP.Abstractions.Infrastructures.Common;
|
|
using AMREZ.EOP.Abstractions.Infrastructures.Repositories;
|
|
using AMREZ.EOP.Contracts.DTOs.MasterData.Allergen;
|
|
|
|
namespace AMREZ.EOP.Application.UseCases.MasterData.Allergen;
|
|
|
|
public class UpdateAllergenUseCase : IUpdateAllergenUseCase
|
|
{
|
|
private readonly IAllergenRepository _repo;
|
|
private readonly IUnitOfWork _uow;
|
|
|
|
public UpdateAllergenUseCase(IAllergenRepository repo, IUnitOfWork uow) { _repo = repo; _uow = uow; }
|
|
|
|
public async Task<AllergenResponse?> ExecuteAsync(Guid id, AllergenUpdateRequest req, CancellationToken ct = default)
|
|
{
|
|
await _uow.BeginAsync(null, IsolationLevel.ReadCommitted, ct);
|
|
try
|
|
{
|
|
var e = await _repo.GetAsync(id, ct);
|
|
if (e is null) { await _uow.RollbackAsync(ct); return null; }
|
|
|
|
e.Name = req.Name.Trim();
|
|
e.NameI18n = req.NameI18n;
|
|
e.Meta = req.Meta;
|
|
e.IsActive = req.IsActive;
|
|
|
|
await _repo.UpdateAsync(e, ct);
|
|
await _uow.CommitAsync(ct);
|
|
|
|
return new AllergenResponse(e.Id, e.Scope, e.Code, e.Name, e.NameI18n, e.OverridesGlobalId, e.IsActive, e.IsSystem, e.Meta);
|
|
}
|
|
catch
|
|
{
|
|
await _uow.RollbackAsync(ct);
|
|
throw;
|
|
}
|
|
}
|
|
} |