Example #1
0
        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"));
        }