private void bt_remvCarro_Click(object sender, EventArgs e)
        {
            Cliente clienteSelecionado = LIST_clientes.SelectedItem as Cliente;

            CarroOficina carroSelecionado = LIST_carrosOficina.SelectedItem as CarroOficina;

            DialogResult excluir = MessageBox.Show("Tem a certeza que pretende excluir o carro selecionado??", "EXCLUIR", MessageBoxButtons.YesNo);

            if (excluir == DialogResult.Yes)
            {
                if (LIST_servicos.SelectedItem == null)
                {
                    MdGesStand.Carros.Remove(carroSelecionado);
                    MdGesStand.SaveChanges();

                    MessageBox.Show("Carro removido com sucesso!", "REMOVER", MessageBoxButtons.OK);

                    atualizarCarros();
                }
                else
                {
                    MessageBox.Show("[ATENÇÃO]-Não pode excluir um carro com serviços associadas!", "ALERTA", MessageBoxButtons.OK);
                }
            }
        }
        private void bt_addServico_Click(object sender, EventArgs e)
        {
            CarroOficina CarroOficinaSelecionado = LIST_carrosOficina.SelectedItem as CarroOficina;
            Servico      s = new Servico();

            DialogResult guardar = MessageBox.Show("Tem a certeza que pertende inserir este serviço ? ", "SALVAR", MessageBoxButtons.YesNo);

            if (guardar == DialogResult.Yes)
            {
                if (!ValidarTextBox(tb_s_servicoTipo))
                {
                    return;
                }


                s.DataEntrada = Convert.ToDateTime(dateTimePickerDataInicio.Text);
                s.DataSaida   = Convert.ToDateTime(dateTimePickerDataFim.Text);
                s.Tipo        = tb_s_servicoTipo.Text;

                CarroOficinaSelecionado.Servico.Add(s);

                MdGesStand.SaveChanges();

                limparTextBoxsServicos();
                atualizarServicos();
            }
            else
            {
                limparTextBoxsServicos();
            }
        }
        private void bt_addCarro_Click(object sender, EventArgs e)
        {
            Cliente clienteSelecionado = LIST_clientes.SelectedItem as Cliente;

            CarroOficina carroOficina = new CarroOficina();

            DialogResult guardar = MessageBox.Show("Tem a certeza que pertende inserir este carro ? ", "SALVAR", MessageBoxButtons.YesNo);

            if (guardar == DialogResult.Yes)
            {
                if (!ValidarTextBox(tb_c_nChassis, tb_c_matricula, tb_c_kms, tb_c_marca, tb_c_modelo, tb_c_combustivel, tb_c_kms))
                {
                    return;
                }

                carroOficina.NumeroChassis = tb_c_nChassis.Text;
                carroOficina.Marca         = tb_c_marca.Text;
                carroOficina.Modelo        = tb_c_modelo.Text;
                carroOficina.Combustivel   = tb_c_combustivel.Text;
                carroOficina.Matricula     = tb_c_matricula.Text;
                carroOficina.Kms           = Convert.ToInt32(tb_c_kms.Text);

                clienteSelecionado.CarroOficina.Add(carroOficina);
                MdGesStand.SaveChanges();

                limparTextBoxsCarros();

                atualizarCarros();
            }
            else
            {
                limparTextBoxsCarros();
            }
        }
        public void atualizarServicos()
        {
            CarroOficina carroOficinaSelecionado = LIST_carrosOficina.SelectedItem as CarroOficina;

            if (carroOficinaSelecionado != null)
            {
                LIST_servicos.DataSource = null;
                LIST_servicos.DataSource = carroOficinaSelecionado.Servico.ToList <Servico>();
            }
        }
        private void LB_carros_SelectedIndexChanged(object sender, EventArgs e)
        {
            CarroOficina carroOficinaSelecionado = LIST_carrosOficina.SelectedItem as CarroOficina;

            LIST_servicos.DataSource = null;

            if (carroOficinaSelecionado != null)
            {
                LIST_servicos.DataSource = carroOficinaSelecionado.Servico.ToList <Servico>();

                TB_inf_nchassi.Text     = carroOficinaSelecionado.NumeroChassis;
                TB_inf_kms.Text         = Convert.ToString(carroOficinaSelecionado.Kms);
                TB_inf_marca.Text       = carroOficinaSelecionado.Marca;
                TB_inf_combustivel.Text = carroOficinaSelecionado.Combustivel;
            }
            else
            {
                TB_inf_nchassi.Text     = "";
                TB_inf_kms.Text         = "0";
                TB_inf_marca.Text       = "";
                TB_inf_combustivel.Text = "";
            }
        }
        private void BT_exportar_Click(object sender, EventArgs e)
        {
            DialogResult exportar = MessageBox.Show("Tem a certeza que pertende exportar os dados selecionados ? ", "EXPORTAR", MessageBoxButtons.YesNo);

            if (exportar == DialogResult.Yes)
            {
                if (LIST_clientes.SelectedIndex == -1 || LIST_carrosOficina.SelectedIndex == -1 || LIST_servicos.SelectedIndex == -1)
                {
                    MessageBox.Show("Para Exporta será necssario selecionar um cliente, carro e serviço");

                    return;
                }
                else
                {
                    Cliente      clienteSelecionado = LIST_clientes.SelectedItem as Cliente;
                    CarroOficina carroSelecionado   = LIST_carrosOficina.SelectedItem as CarroOficina;
                    Servico      servicoSelecionado = LIST_servicos.SelectedItem as Servico;

                    string linha = "**************************************************";


                    saveFileDialogFicheiroTexto.Filter   = "Arquivo de Texto (.txt)|.txt";
                    saveFileDialogFicheiroTexto.FileName = "(OFICINA)" + clienteSelecionado.Nome + "" + carroSelecionado.Matricula + "" + servicoSelecionado.Tipo + ".txt";

                    if (saveFileDialogFicheiroTexto.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }



                    StreamWriter ficheiro = new StreamWriter(saveFileDialogFicheiroTexto.FileName, false);

                    ficheiro.WriteLine(string.Empty);
                    ficheiro.WriteLine(linha);
                    ficheiro.WriteLine("          <<  FATURA OFICINA  >>");
                    ficheiro.WriteLine(linha);

                    ficheiro.WriteLine("# CLIENTE #");
                    ficheiro.WriteLine("Cliente: " + clienteSelecionado.Nome);
                    ficheiro.WriteLine("Nif: " + clienteSelecionado.NIF);
                    ficheiro.WriteLine("Contacto: " + clienteSelecionado.Contacto);
                    ficheiro.WriteLine(string.Empty);
                    ficheiro.WriteLine(linha);
                    ficheiro.WriteLine(string.Empty);

                    ficheiro.WriteLine("# CARRO #");
                    ficheiro.WriteLine("---> Marca: " + carroSelecionado.Marca);
                    ficheiro.WriteLine("---> Modelo: " + carroSelecionado.Modelo);
                    ficheiro.WriteLine("---> Matrícula: " + carroSelecionado.Matricula);
                    ficheiro.WriteLine(string.Empty);
                    ficheiro.WriteLine(linha);
                    ficheiro.WriteLine(string.Empty);

                    ficheiro.WriteLine("# SERVIÇOS #");
                    ficheiro.WriteLine("---> Serviço: " + servicoSelecionado.Tipo);
                    ficheiro.WriteLine("---> Entrada: " + servicoSelecionado.DataEntrada.ToString("MM/dd/yyyy"));
                    ficheiro.WriteLine("---> Saída: " + servicoSelecionado.DataSaida.ToString("MM/dd/yyyy"));
                    ficheiro.WriteLine(string.Empty);
                    ficheiro.WriteLine(linha);
                    ficheiro.WriteLine(string.Empty);

                    ficheiro.WriteLine("# PARCELAS #");
                    ficheiro.WriteLine("     Parcelas: ");
                    foreach (Parcela parcela in servicoSelecionado.Parcela)
                    {
                        ficheiro.WriteLine(parcela.Valor + "€" + " - " + parcela.Descricao);
                    }

                    ficheiro.WriteLine(linha);
                    ficheiro.WriteLine(" [ Data de Emissão: " + DateTime.Now.ToString() + " ]");
                    ficheiro.WriteLine(linha);

                    ficheiro.Close();
                    MessageBox.Show("Dados exportados com Sucesso !", "SUCESSO");
                }
            }
        }