phronCare/Core/Services/Stock/ExpeditionService.cs
Leandro Hernan Rojas 6e61b7b598
All checks were successful
CI/CD Pipeline / Build and Deploy with Docker Compose (push) Successful in 10m12s
Update Expeditions Print
2025-09-04 18:15:15 -03:00

38 lines
1.4 KiB
C#

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);
}
}
}