public List <Cerimonia_Produto> Listar_Cerimonia()
        {
            try
            {
                List <Cerimonia_Produto> list = new List <Cerimonia_Produto>();
                sqlcommand.CommandText = "select * from Cerimonia_produto";
                sqlcommand.Connection  = con.conectar();
                sqldataReader          = sqlcommand.ExecuteReader();
                while (sqldataReader.Read())
                {
                    Cerimonia_Produto cerimonia_produto = new Cerimonia_Produto();

                    cerimonia_produto.cerimonia_produto_id          = int.Parse(sqldataReader["cerimonia_produto_id"].ToString());
                    cerimonia_produto.cerimonia_produto_servicos_id = int.Parse(sqldataReader["cerimonia_produto_servicos_id"].ToString());
                    cerimonia_produto.cerimonia__id           = int.Parse(sqldataReader["cerimonia__id"].ToString());
                    cerimonia_produto.cerimonia_produto_valor = sqldataReader.GetDouble(3);

                    list.Add(cerimonia_produto);
                }
                sqlcommand.Parameters.Clear();
                con.desconectar();
                sqldataReader.Close();
                return(list);
            }
            catch (SqlException ex)
            {
                return(null);
            }
            finally
            {
                sqlcommand.Parameters.Clear();
                con.desconectar();
            }
        }
        public void Salvar(Cerimonia_Produto cerimonia_produto)
        {
            try
            {
                sqlcommand.CommandText = "insert into Cerimonia_Produto(cerimonia__id,cerimonia_produto_pacote_servicos_id,cerimonia_produto_valor) " +
                                         "values (@cerimonia__id,@cerimonia_produto_pacote_servicos_id,@cerimonia_produto_valor);";

                sqlcommand.Parameters.AddWithValue("@cerimonia__id", cerimonia_produto.cerimonia__id);
                sqlcommand.Parameters.AddWithValue("@cerimonia_produto_pacote_servicos_id", cerimonia_produto.cerimonia_produto_servicos_id);
                sqlcommand.Parameters.AddWithValue("@cerimonia_produto_valor", cerimonia_produto.cerimonia_produto_valor);

                sqlcommand.Connection = con.conectar();
                sqlcommand.ExecuteNonQuery();

                Statusmessagem = "Serviços Cadastrados com Sucesso!";
            }
            catch (SqlException ex)
            {
                Statusmessagem = ex.Message;
            }
            finally
            {
                sqlcommand.Parameters.Clear();
                con.desconectar();
            }
        }
        public void Alterar_Valor(Cerimonia_Produto cerimonia)
        {
            try
            {
                sqlcommand.CommandText = "UPDATE Cerimonia_Produto SET cerimonia_produto_valor = @cerimonia_produto_valor" +
                                         " WHERE cerimonia__id = @cerimonia__id and cerimonia_produto_pacote_servicos_id = @cerimonia_produto_servicos_id";

                sqlcommand.Parameters.AddWithValue("@cerimonia_produto_valor", cerimonia.cerimonia_produto_valor);
                sqlcommand.Parameters.AddWithValue("@cerimonia__id", cerimonia.cerimonia__id);
                sqlcommand.Parameters.AddWithValue("@cerimonia_produto_servicos_id", cerimonia.cerimonia_produto_servicos_id);


                sqlcommand.CommandType = CommandType.Text;
                sqlcommand.Connection  = con.conectar();
                sqlcommand.ExecuteNonQuery();

                Statusmessagem = "Alteração feita com sucesso!";
            }
            catch (SqlException ex)
            {
                Statusmessagem = ex.Message;
            }
            finally
            {
                sqlcommand.Parameters.Clear();
                con.desconectar();
            }
        }
        private void bt_Remover_Produto_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Cerimonia_Produto obj = lv_pacote_servico.SelectedItem as Cerimonia_Produto;
                if (obj == null)
                {
                    MessageBox.Show("Selecione um Serviço!");
                }
                else
                {
                    string selectID = obj.pacote_servicos.pacote_servico_id.ToString();
                    //MessageBox.Show("The ID is: " + selectID);
                    if (lista_original_cerimonia_produtos.Exists(a => a.pacote_servicos.pacote_servico_id == obj.pacote_servicos.pacote_servico_id))
                    {
                        servicesDBCerimonia_Produto.Excluir(obj.pacote_servicos.pacote_servico_id, int.Parse(txt_cerimonia_id.Text));
                        lista_original_cerimonia_produtos.RemoveAt(lv_pacote_servico.SelectedIndex);
                    }
                    cerimonia_Produtos.RemoveAt(lv_pacote_servico.SelectedIndex);
                    lv_pacote_servico.ItemsSource = cerimonia_Produtos;
                    lv_pacote_servico.Items.Refresh();

                    Calcula_Total();
                }
            }
            catch (Exception exxx)
            {
                throw new Exception(exxx.Message);
            }
        }
        public List <Cerimonia_Produto> Buscar_Cerimonia_Produto_Por_Codigo(int codigo)
        {
            CultureInfo enUS = new CultureInfo("pt-BR");

            try
            {
                List <Cerimonia_Produto> lista_cerimonias = new List <Cerimonia_Produto>();
                sqlcommand.CommandText = "select * from cerimonia_produto cp " +
                                         "inner join Cerimonia ce on cp.cerimonia__id = ce.cerimonia_id " +
                                         "inner join Pacote_Servicos ps on cp.cerimonia_produto_pacote_servicos_id = ps.pacote_servico_id " +
                                         " where cp.cerimonia__id = " + codigo;
                sqlcommand.Connection = con.conectar();
                sqldataReader         = sqlcommand.ExecuteReader();

                while (sqldataReader.Read() == true)
                {
                    Cerimonia_Produto cerimonia_produto = new Cerimonia_Produto();
                    Cerimonia         cerimonia         = new Cerimonia();

                    cerimonia_produto.cerimonia_produto_servicos_id = int.Parse(sqldataReader["cerimonia_produto_pacote_servicos_id"].ToString());
                    cerimonia_produto.cerimonia_produto_valor       = double.Parse(sqldataReader["cerimonia_produto_valor"].ToString());

                    cerimonia.cerimonia_id      = int.Parse(sqldataReader["cerimonia_id"].ToString());
                    cerimonia_produto.cerimonia = cerimonia;



                    Pacote_Servicos pacote_servicos = new Pacote_Servicos();
                    pacote_servicos.pacote_servico_id    = int.Parse(sqldataReader["pacote_servico_id"].ToString());
                    pacote_servicos.pacote_servico_nome  = sqldataReader["pacote_servico_nome"].ToString();
                    pacote_servicos.pacote_servico_valor = double.Parse(sqldataReader["cerimonia_produto_valor"].ToString());
                    cerimonia_produto.pacote_servicos    = pacote_servicos;
                    lista_cerimonias.Add(cerimonia_produto);
                }

                return(lista_cerimonias);
            }
            catch (SqlException ex)
            {
                Statusmessagem = ex.Message;
                return(null);
            }
            finally
            {
                sqlcommand.Parameters.Clear();
                con.desconectar();
                sqldataReader.Close();
            }
        }
        private void bt_Adicionar_Produto_Click(object sender, RoutedEventArgs e)
        {
            Tela_Consulta_Pacote_Servicos tela = new Tela_Consulta_Pacote_Servicos();

            if (tela.ShowDialog() == true)
            {
                if (tela.dg_ConsultaPacote_Servico.SelectedItem == null)
                {
                    MessageBox.Show("Selecione um Serviço!");
                    return;
                }
                Pacote_Servicos pacote_Servicos = new Pacote_Servicos();

                ///Tentar Usar Este
                Pacote_Servicos pacote_Servicos1 = tela.dg_ConsultaPacote_Servico.SelectedItem as Pacote_Servicos;
                /// Tentar Usar Este

                var cellInfo = tela.dg_ConsultaPacote_Servico.SelectedCells[1];
                var nome     = (cellInfo.Column.GetCellContent(cellInfo.Item) as TextBlock).Text;
                pacote_Servicos.pacote_servico_nome = nome;

                var cellInfo2 = tela.dg_ConsultaPacote_Servico.SelectedCells[0];
                var codigo    = (cellInfo2.Column.GetCellContent(cellInfo2.Item) as TextBlock).Text;
                pacote_Servicos.pacote_servico_id = int.Parse(codigo);

                var cellInfo3 = tela.dg_ConsultaPacote_Servico.SelectedCells[2];
                var valor     = (cellInfo3.Column.GetCellContent(cellInfo3.Item) as TextBlock).Text;
                pacote_Servicos.pacote_servico_valor = Double.Parse(valor);



                Cerimonia_Produto cerimonia_Produto = new Cerimonia_Produto();
                cerimonia_Produto.pacote_servicos = pacote_Servicos;
                if (cerimonia_Produtos.Exists(a => a.pacote_servicos.pacote_servico_id == cerimonia_Produto.pacote_servicos.pacote_servico_id))
                {
                    MessageBox.Show("Esse serviço já foi adicionado!");
                    return;
                }
                cerimonia_Produtos.Add(cerimonia_Produto);
                lv_pacote_servico.ItemsSource = cerimonia_Produtos;
                lv_pacote_servico.Items.Refresh();

                Calcula_Total();
            }
            else
            {
                MessageBox.Show("Selecione um Serviço!");
            }
        }
        public Cerimonia_Produto Editar(int codigo)
        {
            try
            {
                Cerimonia_Produto cerimonia = new Cerimonia_Produto();
                sqlcommand.CommandText = "select * from Cerimonia_Produto where cerimonia_id =  @codigo";
                sqlcommand.Parameters.AddWithValue("@codigo", codigo);
                sqlcommand.Connection = con.conectar();
                sqldataReader         = sqlcommand.ExecuteReader();

                /*
                 * if (sqldataReader.Read())
                 * {
                 *  cerimonia.cerimonia_id = int.Parse(sqldataReader["cerimonia_id"].ToString());
                 *  cerimonia.cerimonia_cliente_id = int.Parse(sqldataReader["cerimonia_cliente_id"].ToString());
                 *  cerimonia.cerimonia_data_evento = DateTime.Parse(sqldataReader["cerimonia_data_evento"].ToString());
                 *  cerimonia.cerimonia_tipo_evento_id = int.Parse(sqldataReader["cerimonia_tipo_evento_id"].ToString());
                 *  cerimonia.cerimonia_pacote_id = int.Parse(sqldataReader["cerimonia_pacote_id"].ToString());
                 *  cerimonia.cerimonia_cidade_local = sqldataReader["cerimonia_cidade_local"].ToString();
                 *  cerimonia.cerimonia_total_convidados = int.Parse(sqldataReader["cerimonia_total_convidados"].ToString());
                 *  cerimonia.cerimonia_horario_cerimonia = sqldataReader["cerimonia_horario_cerimonia"].ToString();
                 *  cerimonia.cerimonia_num_parcelas = int.Parse(sqldataReader["cerimonia_num_parcelas"].ToString());
                 *  cerimonia.cerimonia_inicio_festa = sqldataReader["cerimonia_inicio_festa"].ToString();
                 *  cerimonia.cerimonia_valor_total = sqldataReader.GetDecimal(9);
                 *  cerimonia.cerimonia_desconto = sqldataReader.GetDecimal(14);
                 *  cerimonia.cerimonia_num_parcelas = int.Parse(sqldataReader["cerimonia_num_parcelas"].ToString());
                 *  cerimonia.cerimonia_valor_parcelas = sqldataReader.GetDecimal(7);
                 *  cerimonia.cerimonia_data_primeiro_vencimento = DateTime.Parse(sqldataReader["cerimonia_data_primeiro_vencimento"].ToString());
                 *  cerimonia.cerimonia_observacao = sqldataReader["cerimonia_observacao"].ToString();
                 * }
                 */
                return(cerimonia);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                sqlcommand.Parameters.Clear();
                con.desconectar();
                sqldataReader.Close();
            }
        }
        public void bt_salvar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Cerimonia cerimonia = new Cerimonia();



                if (string.IsNullOrEmpty(txt_cliente.Text))
                {
                    MessageBox.Show("Selecione um Cliente!");
                    return;
                }
                else
                {
                    //cerimonia.cerimonia_cliente_id = int.Parse(txt_cliente_id.Text);
                    cerimonia.cerimonia_cliente_id = codigo_cliente;
                }

                if (string.IsNullOrEmpty(txt_data.Text))
                {
                    MessageBox.Show("Selecione a Data do Evento!");
                    return;
                }
                else
                {
                    cerimonia.cerimonia_data_evento = DateTime.Parse(txt_data.Text);
                }

                if (string.IsNullOrEmpty(cb_evento.SelectedValue.ToString()))
                {
                    MessageBox.Show("Selecione um tipo de Evento!");
                    return;
                }
                else
                {
                    cerimonia.cerimonia_tipo_evento_id = Convert.ToInt32(cb_evento.SelectedValue);
                }

                if (string.IsNullOrEmpty(cb_pacote.SelectedValue.ToString()))
                {
                    MessageBox.Show("Selecione um Pacote!");
                    return;
                }
                else
                {
                    cerimonia.cerimonia_pacote_id = Convert.ToInt32(cb_pacote.SelectedValue);
                }

                cerimonia.cerimonia_cidade_local = txt_cidade_local.Text;

                if (!string.IsNullOrEmpty(txt_convidados.Text))
                {
                    cerimonia.cerimonia_total_convidados = int.Parse(txt_convidados.Text);
                }

                cerimonia.cerimonia_horario_cerimonia = txt_horario_cerimonia.Text;
                cerimonia.cerimonia_inicio_festa      = txt_horario_festa.Text;

                if (string.IsNullOrEmpty(txt_valor_das_parcelas.Text))
                {
                    MessageBox.Show("Informe um valor da Parcela!");
                    return;
                }
                else
                {
                    cerimonia.cerimonia_valor_parcelas = Decimal.Parse(txt_valor_das_parcelas.Text);
                }

                if (string.IsNullOrEmpty(txt_Desconto.Text))
                {
                    cerimonia.cerimonia_desconto = 0;
                }
                else
                {
                    cerimonia.cerimonia_desconto = Decimal.Parse(txt_Desconto.Text);
                }

                if (string.IsNullOrEmpty(txt_parcelas.Text))
                {
                    MessageBox.Show("Selecione o número de Parcelas!");
                    return;
                }
                else
                {
                    cerimonia.cerimonia_num_parcelas = int.Parse(txt_parcelas.Text);
                }

                if (string.IsNullOrEmpty(txt_data_primeiro_vencimento.Text))
                {
                    MessageBox.Show("Selecione a data do primeiro vencimento!");
                    return;
                }
                else
                {
                    cerimonia.cerimonia_data_primeiro_vencimento = DateTime.Parse(txt_data_primeiro_vencimento.Text);
                }

                cerimonia.cerimonia_observacao = txt_observacao.Text;

                if (string.IsNullOrEmpty(lb_total.Content.ToString()))
                {
                    MessageBox.Show("Valor Total zerado!");
                    return;
                }
                else
                {
                    cerimonia.cerimonia_valor_total = Decimal.Parse(lb_total.Content.ToString());
                }

                if (bt_salvar.Content.ToString() == "Salvar")
                {
                    servicesDBCerimonia.Salvar(cerimonia);

                    if (servicesDBCerimonia.Cerimonia_Ultimo_Registro() != 0)
                    {
                        int codigo_cerimonia = servicesDBCerimonia.Cerimonia_Ultimo_Registro();
                        foreach (var item in lv_pacote_servico.Items.OfType <Cerimonia_Produto>())
                        {
                            Cerimonia_Produto cerimonia_Produto = new Cerimonia_Produto();
                            cerimonia_Produto.cerimonia_produto_servicos_id = item.pacote_servicos.pacote_servico_id;
                            cerimonia_Produto.cerimonia_produto_valor       = item.pacote_servicos.pacote_servico_valor;
                            cerimonia_Produto.cerimonia__id = codigo_cerimonia;
                            servicesDBCerimonia_Produto.Salvar(cerimonia_Produto);
                        }
                    }
                }
                else
                {
                    cerimonia.cerimonia_id = int.Parse(txt_cerimonia_id.Text);
                    servicesDBCerimonia.Alterar(cerimonia);

                    var difList = cerimonia_Produtos.Where(a => !lista_original_cerimonia_produtos.Any(a1 => a1.pacote_servicos.pacote_servico_id == a.pacote_servicos.pacote_servico_id)).Union(lista_original_cerimonia_produtos.Where(a => !cerimonia_Produtos.Any(a1 => a1.pacote_servicos.pacote_servico_id == a.pacote_servicos.pacote_servico_id)));

                    //var difList2 = cerimonia_Produtos.Where(a => lista_original_cerimonia_produtos.Any(a1 => a1.pacote_servicos.pacote_servico_id != a.pacote_servicos.pacote_servico_id)).Union(lista_original_cerimonia_produtos.Where(a => !cerimonia_Produtos.Any(a1 => a1.pacote_servicos.pacote_servico_id == a.pacote_servicos.pacote_servico_id)));

                    if (servicesDBCerimonia.Cerimonia_Ultimo_Registro() != 0)
                    {
                        //int codigo_cerimonia = servicesDBCerimonia.Cerimonia_Ultimo_Registro();
                        foreach (var item in difList)
                        {
                            Cerimonia_Produto cerimonia_Produto = new Cerimonia_Produto();
                            cerimonia_Produto.cerimonia_produto_servicos_id = item.pacote_servicos.pacote_servico_id;
                            cerimonia_Produto.cerimonia_produto_valor       = item.pacote_servicos.pacote_servico_valor;
                            cerimonia_Produto.cerimonia__id = cerimonia.cerimonia_id;
                            servicesDBCerimonia_Produto.Salvar(cerimonia_Produto);
                        }
                        foreach (var item in lista_cerimonia_produtos_editados)
                        {
                            Cerimonia_Produto cerimonia_Produto = new Cerimonia_Produto();
                            cerimonia_Produto.cerimonia_produto_servicos_id = item.pacote_servicos.pacote_servico_id;
                            cerimonia_Produto.cerimonia_produto_valor       = item.pacote_servicos.pacote_servico_valor;
                            cerimonia_Produto.cerimonia__id = cerimonia.cerimonia_id;
                            servicesDBCerimonia_Produto.Alterar_Valor(cerimonia_Produto);
                        }
                    }
                    this.DialogResult = true;
                }
                MessageBox.Show(servicesDBCerimonia.Statusmessagem);
                this.Close();
            }
            catch (Exception exxx)
            {
                MessageBox.Show(exxx.Message);
            }
        }