public ActionResult EnviarLinkSenha([FromForm] string email)
        {
            string   codigo;
            DateTime agora = Globalization.HoraAtualBR();

            email.ToLower();

            var vEmail = _db.Int_DP_Usuarios.Where(a => a.Email == email && a.Ativo == 1).FirstOrDefault();

            if (vEmail != null)
            {
                codigo = vEmail.Id.ToString() + agora.Minute.ToString() + agora.Month.ToString() + agora.Day.ToString() +
                         agora.Year.ToString() + agora.Second.ToString() + agora.Hour.ToString();

                ValidacaoSenha valid = new ValidacaoSenha
                {
                    Id            = long.Parse(codigo),
                    Data          = agora,
                    DataExpiracao = agora.AddHours(5),
                    Utilizado     = 0,
                    Usuario       = vEmail.Id
                };

                _db.Int_DP_ValidSenhas.Add(valid);
                _db.SaveChanges();

                Log log = new Log();

                try
                {
                    string nome = Shared.PegarPrimeiroNome(vEmail.Nome);

                    Library.Mail.EnviarLinkSenha.EnviarLinkTrocarSenha(email, codigo, nome, vEmail.Login);

                    log.EsqueciMinhaSenha_Envio(vEmail.Id, codigo);

                    TempData["TrocaSenhaOK"] = "Um link foi enviado ao seu e-mail com instruções para trocar a senha";

                    return(RedirectToAction("Index"));
                }
                catch (Exception exp)
                {
                    log.EsqueciMinhaSenha_Envio_Erro(vEmail.Id, codigo, exp);

                    TempData["TrocaSenhaNotOK"] = "Ocorreu um erro ao tentar enviar o link, por favor tente novamente";

                    return(RedirectToAction("Index"));
                }
                finally
                {
                    _db.Int_DP_Logs.Add(log);
                    _db.SaveChanges();
                }
            }
            else
            {
                TempData["TrocaSenhaNotOK"] = "Esta email não está cadastrado no sistema";
                return(RedirectToAction("Index"));
            }
        }
        private void textBoxSenha_KeyDown(object sender, KeyEventArgs e)
        {
            ValidacaoSenha validarSenha = new ValidacaoSenha();

            ForcaSenha forca = validarSenha.GetForcaDaSenha(textBoxSenha.Text);

            labelSenha.Text = forca.ToString();

            if (labelSenha.Text == "Inaceitavel" || labelSenha.Text == "Fraca")
            {
                labelSenha.ForeColor = Color.Red;
            }
            else if (labelSenha.Text == "Aceitavel")
            {
                labelSenha.ForeColor = Color.Blue;
            }
            else
            {
                labelSenha.ForeColor = Color.Green;
            }
        }
        private void buttonEntrar_Click(object sender, EventArgs e)
        {
            ValidacaoSenha validacao = new ValidacaoSenha();

            var usuario = textBoxUsuario.Text;
            var senha   = textBoxSenha.Text;

            if (!string.IsNullOrEmpty(usuario) && !string.IsNullOrEmpty(senha))
            {
                if (validacao.ValidaSenhaLogin(usuario, senha))
                {
                    DialogResult = DialogResult.OK;
                    this.Close();
                }
                else
                {
                    MessageBox.Show("Usuário ou Senha incorretos!", "Mensagem de Validação", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("Gentileza informar Usuário e Senha!", "Mensagem de Validação", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        public ActionResult EnviarLinkSenha(string cpf)
        {

            string codigo;
            DateTime agora = Globalization.HoraAtualBR();
            
            cpf = Shared.RetirarCaracteres(cpf);

            Usuario user = _db.Int_RH_Usuarios.Where(a => a.CPF.Equals(cpf)).FirstOrDefault();

            if (user != null)
            {
                if (user.Email != null && user.Email != "")
                {
                    codigo = "99" + user.Id.ToString() + agora.Minute.ToString() + agora.Month.ToString() + agora.Day.ToString() +
                         agora.Year.ToString().Substring(2, 2) + user.CPF.Substring(3, 3) + agora.Hour.ToString();

                    ValidacaoSenha valid = new ValidacaoSenha
                    {
                        Id = long.Parse(codigo),
                        Data = agora,
                        DataExpiracao = agora.AddHours(5),
                        Utilizado = 0,
                        Usuario = user.Id
                    };

                    _db.Int_DP_ValidSenhas.Add(valid);
                    _db.SaveChanges();

                    Log log = new Log();

                    try
                    {
                        string nome = Shared.PegarPrimeiroNome(user.Nome);

                        Library.Mail.EnviarLinkSenha.EnviarLinkTrocarSenha(user.Email, codigo, nome);

                        //log.EsqueciMinhaSenha_Envio(vEmail.Id, codigo);

                        log.EsqueciMinhaSenha_Envio(user.Id, codigo);
                        
                        TempData["MensagemSucessoIndex"] = "Um link foi enviado ao seu e-mail com instruções para trocar a senha";

                        return RedirectToAction("Index");
                    }
                    catch (Exception exp)
                    {
                        //log.EsqueciMinhaSenha_Envio_Erro(vEmail.Id, codigo, exp);

                        TempData["MensagemErroIndex"] = "Ocorreu um erro ao tentar enviar o link, por favor tente novamente";

                        log.EsqueciMinhaSenha_Envio_Erro(user.Id, codigo, exp);

                        return RedirectToAction("Index");
                    }
                    finally
                    {
                        _db.Int_RH_Logs.Add(log);
                        _db.SaveChanges();
                    }
                
                }
                else
                {
                    TempData["MensagemErroIndex"] = "Não há e-mail cadastrado para esse CPF, entre em contato com o TI!";
                }
            }
            else
            {
                TempData["MensagemErroIndex"] = "CPF não encontrado!";
            }

            return RedirectToAction("Index");
        }