예제 #1
0
        private void ComprarPedidoVenda(object sender, DataGridViewCellMouseEventArgs e)
        {
            bool resposta = util.MensagemDeConfirmacao("Deseja realmente comprar o item: " + tabela.CurrentRow.Cells[0].Value, "Confirmação");

            if (resposta)
            {
                Venda     venda     = new Venda();
                Usuario   vendedor  = new Usuario();
                Usuario   comprador = new Usuario();
                ItemModel item      = new ItemModel();
                Pedido    pedido    = new Pedido();
                venda.Vendedor      = vendedor;
                venda.Comprador     = comprador;
                venda.Item          = item;
                venda.Pedido        = pedido;
                venda.Vendedor.Id   = Convert.ToInt32(tabela.CurrentRow.Cells[5].Value);
                venda.Comprador.Id  = UserCache.UsuarioLogado.Id;
                venda.Item.Id       = Convert.ToInt32(tabela.CurrentRow.Cells[6].Value);
                venda.Pedido.Id     = Convert.ToInt32(tabela.CurrentRow.Cells[4].Value);
                venda.Valor         = Convert.ToDouble(tabela.CurrentRow.Cells[2].Value);
                venda.ValorUnitario = venda.Valor / Convert.ToInt32(tabela.CurrentRow.Cells[1].Value);

                if (ItemCache.Carregado)
                {
                    util.MensagemDeTeste("Você não pode comprar itens com inventário cheio", "Ameãças");
                }
                else if (UserCache.UsuarioLogado.Moeda < venda.Valor)
                {
                    util.MensagemDeTeste("Você não tem moedas suficientes", "Ameãças");
                }
                else
                {
                    try
                    {
                        VendaController vendaController = new VendaController();
                        vendaController.AdicionarVenda(venda);
                    }
                    catch (MySqlException exce)
                    {
                        util.MensagemDeTeste("Erro ao criar venda, falha na conexão ao banco de dados", "Erro!");
                        throw exce;
                    }
                    catch (Exception ex)
                    {
                        util.MensagemDeTeste("Erro não esperado ao criar venda:  " + ex.Message, "Erro!");
                        throw ex;
                    }
                    finally
                    {
                        UserCache.UsuarioLogado.Moeda -= venda.Valor;
                        principal.money.Text           = UserCache.UsuarioLogado.Moeda.ToString();
                        ItemCache.ListaItens[venda.Item.Id - 1].Quantidade +=
                            Convert.ToInt32(tabela.CurrentRow.Cells[1].Value);
                        principal.inventario[venda.Item.Id - 1].labQuant.Text =
                            ItemCache.ListaItens[venda.Item.Id - 1].Quantidade.ToString();
                        UserCache.UsuarioLogado.Peso +=
                            ItemCache.ListaGeral[venda.Item.Id].Peso *
                            Convert.ToInt32(tabela.CurrentRow.Cells[1].Value);
                        principal.lbPeso.Text = UserCache.UsuarioLogado.Peso.ToString() + " Kg";
                        ItemController iContro = new ItemController();
                        iContro.VerificarCor(principal);
                        try
                        {
                            PedidosController pedidosController = new PedidosController();
                            pedidosController.ExcluirPedido(venda.Pedido.Id);
                            tabela.DataSource = pedidosController.GerarTabela(cbTIpo.SelectedIndex);
                        }
                        catch (MySqlException exce)
                        {
                            util.MensagemDeTeste("Erro ao excluir pedidos, falha na conexão ao banco de dados", "Erro!");
                            throw exce;
                        }
                        catch (Exception ex)
                        {
                            util.MensagemDeTeste("Erro não esperado ao excluir pedidos:  " + ex.Message, "Erro!");
                            throw ex;
                        }
                    }
                }
            }
        }