public CompraResponse Add(CompraRequest request) { if (ExisteFactura(request.NumeroFactura)) { return(new CompraResponse($"La factura {request.NumeroFactura} ya está registrada")); } CompraBuilder compraBuilder = new CompraBuilder(request.NumeroFactura); foreach (var item in request.Detalles) { Producto producto = _unitOfWork.ProductoRepository.FindFirstOrDefault(x => x.Codigo == item.CodigoProducto); compraBuilder = compraBuilder.AgregarDetalle(producto, item.Cantidad, item.PrecioCompra); } if (compraBuilder.IsOk().Any()) { return(new CompraResponse(string.Join(',', compraBuilder.IsOk()))); } Compra compra = compraBuilder.Build(request.Pagado, request.Impuesto); if (_unitOfWork.Commit() > 0) { return(new CompraResponse ( mensaje: "Compra registrada correctamente", entidad: compra )); } return(new CompraResponse("No se pudo registrar la compra")); }