phronCare/Core/Services/Stock/ExpeditionService.cs

38 lines
1.4 KiB
C#
Raw Normal View History

2025-09-04 18:15:15 -03:00
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<ELSExpeditionDetail> 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<ExpeditionDto?> GetDtoByIdAsync(int id)
{
return await _repo.GetDtoByIdAsync(id);
}
}
}