Exemplo n.º 1
0
        public ActionResult ForgotPassword(ResetSenha model)
        {
            try
            {
                using (Context db = new Context())
                {
                    // instancia bll do usuario
                    UsuarioBLL usuarioBLL = new UsuarioBLL(db, 0);

                    // consulta usuario pelo email
                    Usuario usuario = usuarioBLL.FindSingle(u => u.dsEmail == model.email);

                    // se o usuario do formulario for diferente do usuario da sessao
                    if (usuario == null)
                    {
                        ModelState.AddModelError("email", "Não foi possível determinar o email informado, informe um email valido");
                    }

                    // se modelstate for valido
                    if (ModelState.IsValid)
                    {

                        // reseta a senha
                        using (var transaction = new RP.DataAccess.RPTransactionScope(db))
                        {
                            usuarioBLL.ResetarSenha(usuario);
                            usuarioBLL.SaveChanges();
                            transaction.Complete();
                        }

                        // redireciona para index
                        this.AddFlashMessage("Verifique seu email!", FlashMessage.ALERT);
                        return RedirectToAction("Index");
                    }
                }
            }
            catch (Exception ex)
            {
                // adiciona mensagem de erro
                this.AddFlashMessage(RP.Util.Exception.Message.Get(ex), FlashMessage.ERROR);

                // redireciona para login
                return RedirectToAction("ForgotPassword");
            }

            return View(model);
        }