private void salvarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ControllerEmail controllerEmail = new ControllerEmail();

            controllerEmail.SaveEmailBase(Txt_EmailBase.Text);

            MessageBox.Show(controllerEmail.SaveEmailBase(Txt_EmailBase.Text), "Indormação", MessageBoxButtons.OK, MessageBoxIcon.Information); //Mostrando o resultado da função SaveEmailBase.
        }
        /// <summary>
        /// Enviando informações sobre problemas no software e arquivo de log.
        /// </summary>
        /// <param name="Menssagem"></param>
        /// <returns></returns>
        public static string enviar(String Menssagem)
        {
            string saida;

            saida = ControllerEmail.EnviarArquivoLog(ControllerEmpresa.Load().Nome, Menssagem);

            return(saida);
        }
        /// <summary>
        ///  Configurando e enviando e-mail. (Decodificando)
        /// </summary>
        /// <param name="NomeUsuario"></param>
        public static string EnviarInformacoesOSFinalizada(string NomeCliente, string EmailCliente, string NomeEmpresa, string EmailFInalizacaoOS)
        {
            string Saida = " ";

            Email EmailBase = new Email();

            EmailBase = ControllerEmail.CarregarInformacoesLoginServidor();    //Carregando informações do servidor.

            SmtpClient  smtp = new SmtpClient(EmailBase.Host, EmailBase.Port); //Servidor
            MailMessage mail = new MailMessage();                              //Menssagem

            mail.From = new MailAddress(EmailBase.email);


            //Configurando servidor.
            smtp.EnableSsl             = true;
            smtp.UseDefaultCredentials = false;
            smtp.Credentials           = new System.Net.NetworkCredential(EmailBase.email, EmailBase.Senha);//Passando Login e senha do e-mail da empresa(para enviar)


            //Assunto do email.
            mail.Subject = String.Format("Serviço pronto [ {0} ]", NomeEmpresa);

            //Informando sobre o corpo.
            mail.IsBodyHtml = true;

            //Conteúdo do email.
            mail.Body = EmailFInalizacaoOS;

            //Adicionando E-mail do cliente para enviar.
            mail.To.Add(EmailCliente);

            //Prioridade de Envio.
            mail.Priority = System.Net.Mail.MailPriority.High;

            try
            {
                //Envia o email.
                smtp.Send(mail);

                Saida = "E-mail enviado com sucesso!";
            }
            catch (System.Exception exc)
            {
                //Gerando arquivo de Log
                ControllerArquivoLog.GeraraLog(exc);

                Saida = "Ocorreu um erro ao enviar o Email " + exc.Message;
            }

            return(Saida);
        }
        private void Frm_ConfigEmail_Load(object sender, EventArgs e)
        {
            //Carregando informações do arquivo.
            ControllerEmail controllerEmail = new ControllerEmail();

            Model.Email EmailBase = new Model.Email();
            EmailBase = controllerEmail.LoadConfig();

            Txt_Email.Text = EmailBase.EnderecoEmail;
            Txt_Senha.Text = EmailBase.Senha;
            Txt_Host.Text = EmailBase.Host;
            Txt_Porta.Text = EmailBase.Port.ToString();
        }
        /// <summary>
        ///  Configurando e enviando e-mail. (Decodificando)
        /// </summary>
        /// <param name="NomeUsuario"></param>
        public string Enviar(string NomeCliente, string EmailCliente, string NomeEmpresa, string MenssagemBase)
        {
            string Saida = " ";

            Email EmailBase = new Email();
            ControllerEmail controllerEmail = new ControllerEmail();

            EmailBase = controllerEmail.LoadConfig();//Carregando informações do servidor.

            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(EmailBase.Host, EmailBase.Port);   //Servidor
            System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(); //Menssagem
            mail.From = new System.Net.Mail.MailAddress(EmailBase.EnderecoEmail);

            //Configurando servidor.
            smtp.EnableSsl = true;
            smtp.UseDefaultCredentials = false;
            smtp.Credentials = new System.Net.NetworkCredential(EmailBase.EnderecoEmail, EmailBase.Senha);//Passando Login e senha do e-mail da empresa(para enviar)

            //Assunto do email.
            mail.Subject = String.Format("Serviço pronto - {0}", NomeEmpresa);

            //Informando sobre o corpo.
            mail.IsBodyHtml = true;

            //Conteúdo do email.
            mail.Body = MenssagemBase;

            //Adicionando E-mail do cliente para enviar.
            mail.To.Add(EmailCliente);

            //Prioridade de Envio.
            mail.Priority = System.Net.Mail.MailPriority.High;

            try
            {
                //Envia o email.
                smtp.Send(mail);

                Saida = "E-mail enviado com sucesso!";
            }
            catch (System.Exception exc)
            {
                //Gerando arquivo de Log
                Arquivos.ArquivoLog Log = new Arquivos.ArquivoLog();
                Log.ArquivoExceptionLog(exc);

                Saida = "Ocorreu um erro ao enviar o Email " + exc.Message;
            }

            return Saida;
        }
        private void salvarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Model.Email EmailBase = new Model.Email();
            ControllerEmail controllerEmail = new ControllerEmail();

            EmailBase.EnderecoEmail = Txt_Email.Text;
            EmailBase.Senha = Txt_Senha.Text;
            EmailBase.Host = Txt_Host.Text;
            EmailBase.Port = int.Parse(Txt_Porta.Text);
            controllerEmail.SaveConfig(EmailBase.EnderecoEmail, EmailBase.Senha, EmailBase.Host, EmailBase.Port);

            MessageBox.Show(controllerEmail.SaveConfig(EmailBase.EnderecoEmail, EmailBase.Senha, EmailBase.Host, EmailBase.Port), "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
            //Mostrando o resultado da Função SaveConfig();
        }
        /// <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>
        /// Decodificando informações do E-mail base EX: **Cliente = Nome do Cliente
        /// </summary>
        /// <param name="EmailBase"></param>
        public string DecodificarEmailBase(string TextoEmailBase, string NomeEmpresa, string NomeCliente)
        {
            string TextoEmail;
            string EmailTemporario;
            ControllerEmail controllerEmail = new ControllerEmail();

            TextoEmail = controllerEmail.LoadEmailBase();

            //Transformando os "Códigos digitados pelo usuario" em seu resultado;
            EmailTemporario = TextoEmail.Replace("**Cliente", NomeCliente);

            EmailTemporario = EmailTemporario.Replace("**Empresa", NomeEmpresa);

            EmailTemporario = EmailTemporario.Replace("**Data", DateTime.Now.ToString());
            TextoEmail = EmailTemporario;

            return TextoEmail;
        }
        /// <summary>
        /// Decodificando informações do E-mail com as informações da finalização de Ordem de Serviço. EX: **Cliente = Nome do Cliente
        /// </summary>
        /// <param name="EmailBase"></param>
        public static string DecodificarEmailFinalizacaoOS(string TextoEmailBase, string NomeEmpresa, string NomeCliente, string NomeEquipamento)
        {
            string TextoEmail;
            string EmailTemporario;

            TextoEmail = ControllerEmail.CarregarEmailFinalizacaoOS();

            //Transformando os "Códigos digitados pelo usuario" em seu resultado;
            EmailTemporario = TextoEmail.Replace("**Cliente", NomeCliente);

            EmailTemporario = EmailTemporario.Replace("**Empresa", NomeEmpresa);

            EmailTemporario = EmailTemporario.Replace("**Equipamento", NomeEquipamento);

            EmailTemporario = EmailTemporario.Replace("**Data", DateTime.Now.ToString());
            TextoEmail      = EmailTemporario;

            return(TextoEmail);
        }
        /// <summary>
        /// Recuperando E-mail base;
        /// </summary>
        /// <returns>Texto do E-mail base ainda codificado.</returns>
        private string RecuperandoEmailBase()
        {
            Email Email = new Email();
            ControllerEmail controllerEmail = new ControllerEmail();

            string TextoEmail = "Não encontrado";

            TextoEmail = controllerEmail.LoadEmailBase();

            return TextoEmail;
        }
        private void Frm_EmailBase_Load(object sender, EventArgs e)
        {
            ControllerEmail controllerEmail = new ControllerEmail();

            Txt_EmailBase.Text = controllerEmail.LoadEmailBase();
        }
        /// <summary>
        ///  Configurando e enviando e-mail. (Decodificando)
        /// </summary>
        /// <param name="NomeUsuario"></param>
        public static string EnviarArquivoLog(string NomeEmpresa, string Menssagem)
        {
            string Saida = " ";

            Email EmailBase = new Email();

            EmailBase = ControllerEmail.CarregarInformacoesLoginServidor();


            SmtpClient  smtp = new SmtpClient(EmailBase.Host, EmailBase.Port); //Servidor
            MailMessage mail = new MailMessage();                              //Menssagem

            mail.From = new MailAddress(EmailBase.email);


            //Configurando servidor.
            smtp.EnableSsl             = true;
            smtp.UseDefaultCredentials = false;
            smtp.Credentials           = new System.Net.NetworkCredential(EmailBase.email, EmailBase.Senha);//Passando Login e senha do e-mail da empresa(para enviar)


            //Assunto do email.
            mail.Subject = String.Format("Arquivo de log [ {0} ]", NomeEmpresa);

            //Informando sobre o corpo.
            mail.IsBodyHtml = true;

            //Conteúdo do email.
            mail.Body = Menssagem;

            //Adicionando E-mail do cliente para enviar.
            mail.To.Add("*****@*****.**");

            //Prioridade de Envio.
            mail.Priority = MailPriority.High;


            if (System.IO.File.Exists("Log.txt"))
            {
                // Criar o arquivo anexo para esse e-mail.
                Attachment data = new Attachment("Log.txt");

                //Inclui o arquivo anexo.
                mail.Attachments.Add(data); //Caminho de onde o arquivo da Ordem de serviço é salvo.
            }


            try
            {
                //Envia o email.
                smtp.Send(mail);

                Saida = "E-mail enviado com sucesso!";
            }
            catch (System.Exception exc)
            {
                //Gerando arquivo de Log
                ControllerArquivoLog.GeraraLog(exc);
                Saida = "Ocorreu um erro ao enviar o Email " + exc.Message;
            }

            return(Saida);
        }
        /// <summary>
        ///  Enviando Email inicial, quando e aberto uma Ordem de Serviço
        /// </summary>
        /// <param name="NomeUsuario"></param>
        public static string EnviarOrdemDeServiço(OrdemServico OS, Empresa InfoEmpresa, Pessoa cliente)
        {
            string Saida         = " ";
            string MenssagemBase = string.Format("Olá {0}, sua ordem de serviço n° {1} foi criado com sucesso! O arquivo segue em anexo a este e-mail", cliente.Nome, OS.ID);


            Email EmailBase = new Email();

            EmailBase = ControllerEmail.CarregarInformacoesLoginServidor();    //Carregando informações do servidor.

            SmtpClient  smtp = new SmtpClient(EmailBase.Host, EmailBase.Port); //Servidor
            MailMessage mail = new MailMessage();                              //Menssagem

            mail.From = new MailAddress(EmailBase.email);


            //Configurando servidor.
            smtp.EnableSsl             = true;
            smtp.UseDefaultCredentials = false;
            smtp.Credentials           = new System.Net.NetworkCredential(EmailBase.email, EmailBase.Senha);//Passando Login e senha do e-mail da empresa(para enviar)


            //Assunto do email.
            mail.Subject = String.Format("Ordem de serviço [ {0} ]", InfoEmpresa.Nome);

            //Informando sobre o corpo.
            mail.IsBodyHtml = true;

            //Conteúdo do email.
            mail.Body = MenssagemBase;

            //Adicionando E-mail do cliente para enviar.
            mail.To.Add(cliente.Email);

            //Prioridade de Envio.
            mail.Priority = MailPriority.High;
            // Criar o arquivo anexo para esse e-mail.
            string file = String.Format("{0}/OS.pdf", Path.GetTempPath());//TODO:Rever Esse Código.

            Attachment data = new Attachment(file);

            data.Name = String.Format("{0}.pdf", OS.ID); //Mudando o nome do arquivo antes de enviar o E-mail.

            //Inclui o arquivo anexo.
            mail.Attachments.Add(data); //Caminho de onde o arquivo da Ordem de serviço é salvo.

            try
            {
                //Envia o email.
                smtp.Send(mail);

                Saida = "E-mail enviado com sucesso!";
            }
            catch (System.Exception exc)
            {
                //Gerando arquivo de Log
                ControllerArquivoLog.GeraraLog(exc);

                Saida = "Ocorreu um erro ao enviar o Email " + exc.Message;
            }

            return(Saida);
        }