private void btnSalvar_Click(object sender, EventArgs e) { Enum.TryParse <SituacaoPedido>(cboSituacao.SelectedValue.ToString(), out situacaoPedido); int valueSituacaoPedido = (int)situacaoPedido; errorProvider1.Clear(); if (cboCliente.Text == string.Empty) { errorProvider1.SetError(cboCliente, "Selecione o cliente do pedido."); cboCliente.Focus(); return; } if (cboFormaPagamento.Text == string.Empty) { errorProvider1.SetError(cboFormaPagamento, "Selecione a forma de pagamento do pedido."); cboFormaPagamento.Focus(); return; } if (dtpPrevisaoPagamento.Text == string.Empty) { errorProvider1.SetError(dtpPrevisaoPagamento, "Informe a data de previsão de pagamento."); dtpPrevisaoPagamento.Focus(); return; } if (cboSituacao.Text == string.Empty) { errorProvider1.SetError(cboSituacao, "Informe a situação do pedido."); cboSituacao.Focus(); return; } if (cboSituacao.Text == "PAGO" && dtpDataPagamento.Text == string.Empty) { errorProvider1.SetError(dtpDataPagamento, "Informe a data de pagamento do pedido."); dtpDataPagamento.Focus(); return; } if (dgvPedidoItem.Rows.Count == 0) { errorProvider1.SetError(cboProduto, "Inclua pelo menos um produto ao pedido."); cboProduto.Focus(); return; } if (valueSituacaoPedido == 3 && txtMotivo.Text == string.Empty) { errorProvider1.SetError(txtMotivo, "Informe o motivo do cancelamento do pedido."); txtMotivo.Focus(); return; } PedidoRepositorio <Pedido> pedidoRepo = new PedidoRepositorio <Pedido>(); try { Pedido pedido = new Pedido(); IList <PedidoItem> pedidoItem = new List <PedidoItem>(); Cliente cliente = new Cliente(); //Recupera as informações do cliente selecionado no combo Clientes. //Atualiza a classe cliente instanciada na classe pedido if (clienteInserido > 0) { pedido.Cliente = consultaClienteSelecionado(clienteInserido); } else { pedido.Cliente = consultaClienteSelecionado(Convert.ToInt32(this.cboCliente.SelectedValue.ToString())); } //Recupera as informações do cliente selecionado no combo Clientes. //Atualiza a classe cliente instanciada na classe pedido pedido.FormaPagamento = consultaFormaPagamentoSelecionada(Convert.ToInt32(this.cboFormaPagamento.SelectedValue.ToString())); pedido.Id = idPedido; pedido.Usuario.Id = Global.idUsuario; pedido.Data_Inclusao = DateTime.Now; pedido.Data_Previsao_Pagamento = Convert.ToDateTime(dtpPrevisaoPagamento.Text); pedido.Valor_Total = Convert.ToDecimal(txtValorPedido.Text); pedido.Status = situacaoPedido; //pedido.Data_Pagamento = Convert.ToDateTime(dtpDataPagamento.Text); //pedido.Data_Registro_Pagamento = DateTime.Now; //Enum.TryParse<SituacaoPedido>(cboSituacao.SelectedValue.ToString(), out situacaoPedido); //int value = (int)situacaoPedido; //pedido.Status =Convert.ToString(value); //pedido.Status = situacaoPedido; //Preencher somente quando a situação do pedido for Pago if (valueSituacaoPedido == 2) { //pedido.UsuarioPagamento.Id = Global.idUsuario; pedido.Status = situacaoPedido; pedido.Data_Pagamento = Convert.ToDateTime(dtpDataPagamento.Text); pedido.Data_Registro_Pagamento = DateTime.Now; } else if (valueSituacaoPedido == 3) { pedido.Status = situacaoPedido; pedido.Motivo_Cancelamento = txtMotivo.Text.Trim(); pedido.Data_Cancelamento = Convert.ToDateTime(DateTime.Now); } // Processo de inclusão if (pedido.Id == 0) { //Percorre o datagridview se o processo for de inclusão foreach (DataGridViewRow dr in dgvPedidoItem.Rows) { var lstPedidoItem = new PedidoItem(); //lstPedidoItem.Id = Convert.ToInt32(dr.Cells[0].Value.ToString()); lstPedidoItem.Produto.Id = Convert.ToInt32(dr.Cells[1].Value.ToString()); lstPedidoItem.Quantidade = Convert.ToInt32(dr.Cells[3].Value.ToString()); lstPedidoItem.Valor_Unitario = Convert.ToDecimal(dr.Cells[4].Value.ToString()); lstPedidoItem.Valor_Total = Convert.ToDecimal(dr.Cells[5].Value.ToString()); pedidoItem.Add(lstPedidoItem); //MessageBox.Show("Produto " + lstPedidoItem.Produto.Id + " valor unitário" + lstPedidoItem.Valor_Unitario); } pedidoRepo.InserirPedidoItem(pedido, pedidoItem); MessageBox.Show("Cadastro realizado com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Warning); clienteInserido = 0; this.Close(); } else { //Cenário que ocorre no processo de edição // Valida a opção selecionada no combo situação do pedido if (valueSituacaoPedido == 2) // Pago { pedidoUpdate.Data_Pagamento = Convert.ToDateTime(dtpDataPagamento.Text); pedidoUpdate.Data_Registro_Pagamento = DateTime.Now; pedidoUpdate.Status = situacaoPedido; } else if (valueSituacaoPedido == 3) //Cancelado { pedidoUpdate.Status = situacaoPedido; pedidoUpdate.Motivo_Cancelamento = txtMotivo.Text.Trim(); pedidoUpdate.Data_Cancelamento = DateTime.Now; } pedidoRepo.Alterar(pedidoUpdate); MessageBox.Show("Alteração realizada com sucesso", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Warning); clienteInserido = 0; this.Close(); } } catch (Exception ex) { MessageBox.Show("Erro na operação " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }