Ejemplo n.º 1
0
        // Valida e insere a venda + itens
        public Response InsertVenda(VendaProduto venda)
        {
            Response response = Validate(venda);

            if (response.Success)
            {
                venda.DataVenda = DateTime.Now;
                venda.Valor     = venda.Itens.Sum(w => w.Valor * w.Quantidade);
                SingleResponse <VendaProduto> responseVenda = vendaProdutoDAL.InsertVenda(venda);
                using (TransactionScope scope = new TransactionScope())
                {
                    if (responseVenda.Success)
                    {
                        foreach (ItensVenda item in venda.Itens)
                        {
                            ItensVendaBLL itensVendaBLL = new ItensVendaBLL();
                            SingleResponse <VendaProduto> responseEntradaID = vendaProdutoDAL.GetVendaID(venda.ID);
                            item.VendaID = responseEntradaID.Data.ID;
                            Response responseItensVenda = itensVendaBLL.InsertItem(item);

                            if (responseItensVenda.Success)
                            {
                                produtoDAL.AtualizaEstoqueVenda(item.ProdutoID, item.Quantidade);
                            }
                            else
                            {
                                return(responseItensVenda);
                            }
                        }
                        venda.Itens.Clear();
                    }
                    scope.Complete();
                }
                return(responseVenda);
            }
            return(response);
        }