using Core.Interfaces.Stock; using Domain.Dtos.Stock; using Domain.Entities; using Models.Interfaces; namespace Core.Services.Stock { public class ExpeditionService : IExpeditionDom { #region Declaraciones private readonly IExpeditionRepository _repo; public ExpeditionService(IExpeditionRepository repo) => _repo = repo; #endregion #region Guardado completo de expedicion (encabezado + detalles) public async Task<(int Id, string ExpeditionNumber)> CreateAndIssueAsync( ELSExpeditionHeader header, IEnumerable details, int formSeriesId) { if (header is null) throw new ArgumentNullException(nameof(header)); if (details is null || !details.Any()) throw new InvalidOperationException("Debe incluir al menos un ítem."); if (formSeriesId <= 0) throw new ArgumentOutOfRangeException(nameof(formSeriesId), "Serie inválida."); // Reemplazo directo de la colección (más claro que Clear()+Add) header.PhLsmExpeditionDetails = details.ToList(); return await _repo.CreateFullExpeditionAsync(header, formSeriesId); } #endregion public async Task GetDtoByIdAsync(int id) { return await _repo.GetDtoByIdAsync(id); } } }