public ActionResult TrocarSenha(FormCollection frm)
        {
            try
            {
                var _cripto = new Criptografia();
                var _utils = new Util();

                string senha_atual = _cripto.Executar(frm["txt_senha_atual"].Trim().ToString(), _utils.ChaveCripto, Criptografia.TipoNivel.Baixo, Criptografia.TipoAcao.Encriptar, Criptografia.TipoCripto.Números);
                string senha_nova =  _cripto.Executar(frm["txt_senha_nova"].Trim().ToString(), _utils.ChaveCripto, Criptografia.TipoNivel.Baixo, Criptografia.TipoAcao.Encriptar, Criptografia.TipoCripto.Números);

                var ret = new UsuarioRepository().AtualizarSenha(UsuarioAtual.ID, senha_atual, senha_nova);
                if (ret.CodigoRetorno >= 0)
                {
                    TempData["Msg"] = ret.Mensagem.ToString();
                    return RedirectToRoute("Principal");
                    //return View("TrocaSenha");
                }
                else
                {
                    throw new Exception(ret.Mensagem.ToString());
                }
            }
            catch (Exception ex)
            {
                //TempData["Error"] = ex.Message;
                TempData["Msg"] = ex.Message;
                //ViewBag.MsgError = ex.Message;
                return View("TrocaSenha");
            }
        }
        public ActionResult Autenticar(LoginViewModel model, string returnUrl)
        {
            var log = new LogRepository();

            AbandonarSessao();

            if (ModelState.IsValid)
            {
                try
                {
                    var _cripto = new Criptografia();
                    var _utils = new Util();
                    string _senha = _cripto.Executar(model.Senha.Trim().ToString(), _utils.ChaveCripto, Criptografia.TipoNivel.Baixo, Criptografia.TipoAcao.Encriptar, Criptografia.TipoCripto.Números);

                    bool valido = this._usuarioService.ValidarUsuario(model.NomeUsuario, _senha);

                    if (valido)
                    {
                        // TODO:14/04/2016
                        var ret = new UsuarioRepository().VerificaServicoPerfil(model.NomeUsuario, _senha);
                        if (ret.CodigoRetorno != 0)
                        {
                            //return RedirectToRoute("Logout", new { msg = ret.Mensagem });
                            return RedirectToAction("Index", new { msg = ret.Mensagem });
                        }

                        //TODO: Andre 27/04/2016 int _idUsuario = new UsuarioRepository().GetUsuario(model.NomeUsuario).ID;
                        Session["ClsUsuario"] = (Usuario)new UsuarioRepository().GetUsuarioSessao(model.NomeUsuario);

                        bool _autenticado = this._authenticatioService.AuthenticateUser(this.HttpContext, model.NomeUsuario, model.Senha, model.ManterConectado);
                        if (_autenticado)
                        {
                            Session["NomeUsuario"] = model.NomeUsuario;

                            //TODO: 07/03/2016 Verifica se foi selecionado o Relembre-me e cria um cokie para armazenar o nome do usuário.
                            if (Request.Cookies["Login"] == null)
                            {
                                if (model.ManterConectado)
                                {
                                    HttpCookie cokLogin = new HttpCookie("Login");
                                    cokLogin["username"] = model.NomeUsuario;
                                    cokLogin["lembrarnome"] = "sim";
                                    cokLogin.Expires = DateTime.Now.AddDays(1d);
                                    Response.Cookies.Add(cokLogin);
                                }
                            }
                            else
                            {
                                if (model.ManterConectado)
                                {
                                    HttpCookie cokLogin = new HttpCookie("Login");
                                    cokLogin["username"] = model.NomeUsuario;
                                    cokLogin["lembrarnome"] = "sim";
                                    Response.Cookies.Set(cokLogin);
                                }
                                if (model.ManterConectado == false)
                                {
                                    HttpCookie cokLogin = new HttpCookie("Login");
                                    cokLogin["username"] = "";
                                    cokLogin["lembrarnome"] = "nao";
                                    Response.Cookies.Set(cokLogin);
                                }
                            }

                            var cli = new ClienteRepository();
                            cli.PrimeiroClienteServicoPadrao(model.NomeUsuario, model.Senha);

                            if (cli.Servico == null)
                            {
                                return RedirectToAction("Index", new { msg = "Nenhum Cliente e Serviço Padrão selecionado. Por favor,  entre em contato com o administrador do sistema." });
                                //TempData["Error"] = "Nenhum Cliente e Serviço Padrão selecionado...";
                            }

                            Session["IdCliente"] = cli.TCliente.ID;
                            Session["NomeCliente"] = cli.TCliente.Descricao;
                            Session["NomeServico"] = cli.Servico;
                            Session["IdServico"] = cli.idServico;//aqui

                            //TODO: Andre 10/05/2016
                            var usu = new Usuario(){ ID=UsuarioAtual.ID, ServicoID=cli.idServico, ClienteID=cli.TCliente.ID};
                            var retorno = new LicensaRepository().CarregaLicensa(usu, 1);
                            if (retorno.CodigoRetorno < 0)
                            {
                                ViewBag.Atencao = retorno.Mensagem;
                                TempData["Msg"] = retorno.Mensagem;
                            }
                            else
                            {
                                // LOG: Login Autenticado -- Cesar
                                log.RegistrarLOG(cli.TCliente.ID, cli.idServico, 0, 0, 1, 1, 0, 0, model.NomeUsuario);
                                log.RegistrarLOGDetalhe(1, model.NomeUsuario);

                                return RedirectToRoute(new { action = "../Home", controller = "", area = "" });// Redirect (returnUrl ?? FormsAuthentication.DefaultUrl);

                            }

                        }

                        FormsAuthentication.SetAuthCookie(model.NomeUsuario, false);
                    }
                }
                catch (Exception ex) {
                    //ModelState.AddModelError("Error", ex.Message);
                    //LOG: Login Não Autenticado
                    log.RegistrarLOG(0, 0, 0, 0, 1, 2, 0, 0, model.NomeUsuario);
                    log.RegistrarLOGDetalhe(2, model.NomeUsuario);
                    ViewBag.Atencao = ex.Message;
                    TempData["Msg"] = ex.Message;
                }
            }
            return View("Index");
        }
        /// <summary>
        /// Retorna dados o serviço padrão
        /// </summary>
        /// <Autor>AndreSombra</Autor>
        /// <DataInicio>16/11/2015</DataInicio>
        /// <param name="nomeUsuario"></param>
        public void PrimeiroClienteServicoPadrao(string nomeUsuario, string senha)
        {
            var _cripto = new Criptografia();
            var _utils = new Util();

            string _senha = _cripto.Executar(senha, _utils.ChaveCripto, Criptografia.TipoNivel.Baixo, Criptografia.TipoAcao.Encriptar, Criptografia.TipoCripto.Números);

            string cmd = string.Format("exec Proc_GET_ServicoDefault '{0}','{1}'", nomeUsuario, _senha);
            var lista = new DbConn().RetornaDados(cmd);
            foreach (DataRow item in lista.Rows)
            {
                TCliente.ID = int.Parse(item["IdCliente"].ToString());
                TCliente.Descricao = item["CLiente"].ToString();
                this.idServico = int.Parse(item["IdServico"].ToString());
                this.Servico = item["Servico"].ToString();
            }
        }