Beispiel #1
0
        public ItemPedido AdicionarItem(Pedido pedido, string codigo, int quantidade)
        {
            if (pedido == null)
            {
                throw new ArgumentNullException(nameof(pedido));
            }

            if (string.IsNullOrWhiteSpace(codigo))
            {
                throw new ArgumentNullException(nameof(codigo));
            }

            if (quantidade < 1)
            {
                throw new ArgumentNullException(nameof(quantidade));
            }

            if (pedido.Status != PedidoStatus.Aberto)
            {
                throw new StatusInvalidoException();
            }

            var produto = produtoDAL.Get(codigo);

            if (produto == null)
            {
                throw new ProdutoNaoEncontradoException();
            }

            var itemPedido = new ItemPedido(produto.Id, quantidade, produto.PrecoUnitario);

            pedido.Itens.Add(itemPedido);
            return(itemPedido);
        }
        public ItemPedido AdicionarItem(Pedido pedido, string codigo, int quantidade)
        {
            if (pedido == null)
            {
                throw new ArgumentNullException(nameof(pedido));
            }

            if (string.IsNullOrWhiteSpace(codigo))
            {
                throw new ArgumentException("Erro no código", nameof(codigo));
            }

            if (quantidade < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(quantidade));
            }

            if (pedido.Status != PedidoStatus.Aberto)
            {
                throw new StatusInvalidoException();
            }

            Produto produto;

            try
            {
                produto = produtoDAL.Get(codigo);
            }
            catch (KeyNotFoundException ex)
            {
                throw new ProdutoNaoEncontradoException("Produto não encontrado", ex);
            }

            if (pedido.Itens == null)
            {
                pedido.Itens = new List <ItemPedido>();
            }

            ItemPedido item = new ItemPedido(produto.Id, quantidade, produto.PrecoUnitario);

            pedido.Itens.Add(item);

            return(item);
        }