private void Btm_Imprimir_Click(object sender, EventArgs e)
        {
            Model.Ordem_de_Servico.OrdemServico OSBase = new Model.Ordem_de_Servico.OrdemServico();
            ControllerOrdemServico controllerOS = new ControllerOrdemServico();

            //checkBox1.Checked = Verifica se a ordem já foi finalizada, se for = true é que já foi finalizada  se for = false não.
            if (checkBox1.Checked == false)
            {
                //Verificado se a ordem de serviço que foi procurada existe e se existir retornar a Ordem de serviço base.
                if (controllerOS.Verificar(Txt_Pesquisa.Text) == true)
                {
                    OSBase = controllerOS.Load(Txt_Pesquisa.Text);
                    controllerOS.CreatPDF(OSBase.Identificador, OSBase.Referencia, OSBase.Situacao, OSBase.Defeito, OSBase.Descricao, OSBase.Observacao, OSBase.NumeroSerie, OSBase.Equipamento, OSBase.DataEntradaServico, OSBase.Cliente);
                }
                else
                {
                    MessageBox.Show("Numero da ordem de serviço não encontrado em nossa base de dados!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
            else
            {
                //TODO:Fazer sistema de verificar OS finalizada refazer esse código!

                OSBase = controllerOS.LoadOSFinalizada(Txt_Pesquisa.Text);
                controllerOS.CreatPDF(OSBase.Identificador, OSBase.Referencia, OSBase.Situacao, OSBase.Defeito, OSBase.Descricao, OSBase.Observacao, OSBase.NumeroSerie, OSBase.Equipamento, OSBase.DataEntradaServico, OSBase.Cliente);
            }
        }
        private void Frm_ListarServico_Load(object sender, EventArgs e)
        {
            ControllerOrdemServico controllerOS = new ControllerOrdemServico();
            ControllerServico controllerServico = new ControllerServico();

            List<String> ListaDeInformações = new List<string>();
            bool TemInformacao = false; //Verifica se achou algo.

            foreach (var itemOS in controllerOS.LoadListFinalizadas()) //Carregando informações da Os
            {
                ListaDeInformações.Add(controllerOS.LoadOSFinalizada(itemOS).Identificador);
                ListaDeInformações.Add(controllerOS.LoadOSFinalizada(itemOS).Cliente);

                if (!string.IsNullOrWhiteSpace(controllerOS.LoadOSFinalizada(itemOS).Identificador))
                {
                    TemInformacao = true;
                }

                foreach (var item in controllerServico.LoadList()) //Carregando informações do serviço
                {
                    ListaDeInformações.Add(controllerServico.Load(item).Descricao);
                    ListaDeInformações.Add(controllerServico.Load(item).Valor.ToString());
                }

                if (TemInformacao)
                {
                    Data_Os.Rows.Add(ListaDeInformações[0], ListaDeInformações[1], ListaDeInformações[2], ListaDeInformações[3]);
                }
            }
        }
        private void Btm_Pesquisa_Click(object sender, EventArgs e)
        {
            Model.Ordem_de_Servico.OrdemServico OrdemDeServico = new Model.Ordem_de_Servico.OrdemServico();
            ControllerOrdemServico controllerOS = new ControllerOrdemServico();

            //Verificado se a ordem de serviço que foi procurada existe e se existir retornar a Ordem de serviço base.
            if (controllerOS.Verificar(Txt_Pesquisa.Text) == true)
            {
                OrdemDeServico = controllerOS.Load(Txt_Pesquisa.Text);

                Txt_Nordem.Text = OrdemDeServico.Identificador;
                Txt_Referencia.Text = OrdemDeServico.Referencia;
                Txt_Situacao.Text = OrdemDeServico.Situacao;
                Txt_Defeito.Text = OrdemDeServico.Defeito;
                Txt_Descricao.Text = OrdemDeServico.Descricao;
                Txt_Observacoes.Text = OrdemDeServico.Observacao;
                Txt_Nserie.Text = OrdemDeServico.NumeroSerie;
                Txt_Equipamento.Text = OrdemDeServico.Equipamento;
                Txt_DataEntrada.Text = OrdemDeServico.DataEntradaServico;
                Txt_Descricao.Text = OrdemDeServico.Descricao;
                Txt_Cliente.Text = OrdemDeServico.Cliente;

            }
            else
            {
                MessageBox.Show("Ordem de serviço não encontrada!","Informações",MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
        }
        /// <summary>
        /// Finalizando Ordem de serviço (Botão).
        /// </summary>
        private void finalizarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(Txt_OS.Text))
            {
                OrdemServico OSbase = new OrdemServico();
                Servico ServicoBase = new Servico();

                ControllerOrdemServico controllerOS = new ControllerOrdemServico();
                ControllerServico controllerServico = new ControllerServico();
                ControllerEmail controllerEmail = new ControllerEmail();

                bool Resultado = false;

                if (controllerOS.Verificar(Txt_OS.Text))//Verifica se a OS existe ou não
                {
                    Resultado = controllerOS.FinalizarOS(Txt_OS.Text);

                    if (Resultado)
                    {
                        MessageBox.Show("Ordem de serviço Finalizada com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBox.Show("Ocorreu um problema ao finalizar sua Ordem de serviço, informações foram salvas no arquivo log no diretorio do sue software", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }

                    //Gerando o serviço
                    controllerServico.Save(Txt_Descricao.Text, double.Parse(Txt_Valor.Text), Txt_OS.Text);

                    if (MessageBox.Show("Enviar E-mail para o cliente informando sobre o término do serviço?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        Model.Email EmailBase = new Model.Email();

                        //Decodificando Email Base para enviar!
                        String EmailDecoficado = controllerEmail.DecodificarEmailBase(RecuperandoEmailBase(), NomeEmpresa(), InformacaoCliente()[0]);

                        string ResultadoEnvio = controllerEmail.Enviar(InformacaoCliente()[0], InformacaoCliente()[1], NomeEmpresa(), EmailDecoficado);

                        MessageBox.Show(ResultadoEnvio, "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
            else
            {
                MessageBox.Show("Informe o numero da ordem de serviço!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        /// <summary>
        /// Recuperando informações do cliente.
        /// </summary>
        /// <returns>Nome e E-mail do cliente</returns>
        private string[] InformacaoCliente()
        {
            OrdemServico OSBase = new OrdemServico();
            Fisica PessoaFisicaBase = new Fisica();
            Juridica PessoaJuridicaBase = new Juridica();

            ControllerOrdemServico controllerOS = new ControllerOrdemServico();
            ControllerFisica controllerPF = new ControllerFisica();
            ControllerJuridica controllerPJ = new ControllerJuridica();

            string NomeDoCliente = "Não Econtrado";
            string EmailCliente = "Não encontrado";
            string[] Informacoes = new string[2];

            NomeDoCliente = controllerOS.LoadOSFinalizada(Txt_OS.Text).Cliente;

            //TODO:Arrumar para verificar o tipo de pessoa

            //Verificando o tipo e o Email do usuario

            if (true) //Verifica se é PessoaFisica
            {
                EmailCliente = controllerPF.Load(NomeDoCliente).Email;
                NomeDoCliente = controllerPF.Load(NomeDoCliente).Nome;

                Informacoes[0] = NomeDoCliente;
                Informacoes[1] = EmailCliente;
            }
            else if (controllerPJ.Verificar(NomeDoCliente)) //Verifica se é pessoa Juridica
            {
                PessoaJuridicaBase = controllerPJ.Load(NomeDoCliente);
                EmailCliente = PessoaFisicaBase.Email;
                NomeDoCliente = PessoaFisicaBase.Nome;

                Informacoes[0] = NomeDoCliente;
                Informacoes[1] = EmailCliente;
            }

            return Informacoes;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            ControllerOrdemServico controllerOS = new ControllerOrdemServico();

            string Retorno = controllerOS.Save(Txt_Nordem.Text, Txt_Referencia.Text, Txt_Situacao.Text, Txt_Defeito.Text, Txt_Descricao.Text, Txt_Observacoes.Text, Txt_Nserie.Text, Txt_Equipamento.Text, Txt_DataEntrada.Text, Txt_Cliente.Text);

            MessageBox.Show(String.Format("{0}", Retorno), "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);

            if (MessageBox.Show("Deseja imprimir o arquivo?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                controllerOS.CreatPDF(Txt_Nordem.Text, Txt_Referencia.Text, Txt_Situacao.Text, Txt_Defeito.Text, Txt_Descricao.Text, Txt_Observacoes.Text, Txt_Nserie.Text, Txt_Equipamento.Text, Txt_DataEntrada.Text, Txt_Cliente.Text);
            }

            Txt_Cliente.Clear();
            Txt_DataEntrada.Clear();
            Txt_Defeito.Clear();
            Txt_Descricao.Clear();
            Txt_Equipamento.Clear();
            Txt_Nordem.Clear();
            Txt_Nserie.Clear();
            Txt_Observacoes.Clear();
            Txt_Referencia.Clear();
        }