/// <summary>
        /// Método responsável por cumprir o requisito de Autorizar Usuários Cadastrados em Aplicativos
        /// previamente cadastrados.
        ///     Quando chamado em GET - Retorna a tela de Autorizar Usuário
        ///     Quando chamado em POST - Retorna a tela de Cadastrar
        /// </summary>
        /// <returns>A tela de Cadastrar Aplicativo (GET) ou A tela de Index
        ///          podendo ou não conter uma mensamge de erro (Post)</returns>
        public ActionResult AutorizarUsuario(AutorizarUsuarioViewModel dados)
        {
            #region Decidir se deve proseguir com a requisição
            AutorizarUsuarioViewModel model = new AutorizarUsuarioViewModel();


            ActionResult urlRetorno = DecideUrlFormulários("/Autorizacao/AutorizarUsuario", model);
            if (urlRetorno != null)
            {
                if (usuario != null) // Usuario preenchido com os dados da seção na superclasse
                {
                    model = PreencheModel(model);
                }
                return(urlRetorno); // ação que deve ser retornada para o browser
            }
            #endregion


            IList <Autorizacao> autorizacoes = new List <Autorizacao>();
            dados.UsuarioLiberacao = usuario;
            autorizacoes           = dados.CriarModelo();

            IFachada <Autorizacao> fachada = new FachadaAdmWeb <Autorizacao>();
            string retorno;

            if (Request["Salvar"] != null)
            {
                retorno = fachada.SalvarTodos(autorizacoes);
            }
            else if (Request["Alterar"] != null)
            {
                retorno = fachada.AlterarTodos(autorizacoes);
            }
            else if (Request["Inativar"] != null)
            {
                Autorizacao auxiliar = new Autorizacao();
                auxiliar.OrgaoAutorizado = autorizacoes[0].OrgaoAutorizado;
                auxiliar.Usuario         = autorizacoes[0].Usuario;

                retorno = fachada.Excluir(autorizacoes[0]);
            }
            else
            {
                retorno = "Opção Inválida";
            }

            if (retorno != null) // se retornar null, é porque ocorreu tudo bem
            {
                ViewBag.Mensagem = retorno;
                model            = PreencheModel(autorizacoes, model);
                return(View(model));
            }

            ViewBag.Mensagem = "Autorizado com sucesso!";
            return(View("../Home/Index"));
        } // AutorizarUsuario
        public ActionResult CopiarAutorizacao(CopiarAutorizacaoViewModel model, AutorizarUsuarioViewModel modelRetorno)
        {
            #region Decidir se deve proseguir com a requisição

            ActionResult urlRetorno = DecideUrlFormulários("/Autorizacao/AutorizarUsuario", modelRetorno);
            if (urlRetorno != null)
            {
                if (usuario != null) // Usuario preenchido com os dados da seção na superclasse
                {
                    modelRetorno = PreencheModel(modelRetorno);
                }
                return(urlRetorno); // ação que deve ser retornada para o browser
            }
            #endregion

            modelRetorno.UsuarioLiberacao = model.UsuarioLiberacao = usuario;

            IList <Autorizacao> autorizacoes = modelRetorno.CriarModelo();

            CopiaDeAutorizacao copia = model.CriarModelo();

            IList <CopiaDeAutorizacao>    retorno = new List <CopiaDeAutorizacao>();
            IFachada <CopiaDeAutorizacao> fachada = new FachadaAdmWeb <CopiaDeAutorizacao>();
            fachada.DefineTemQueFecharConexao(false); // manter transação e conexão aberta

            string msgValidacao = fachada.ConsultarComValidacao(copia, retorno);


            if (msgValidacao != null)
            {
                ViewBag.Mensagem = msgValidacao;

                fachadaVM = new FachadaAdmWeb <AutorizarUsuarioViewModel>();
                fachadaVM.SalvaConexaoAtiva(fachada.RetornaConexaoAtiva());     // mantém conexão anterior
                fachadaVM.SalvaTransacaoAtiva(fachada.RetornaTransacaoAtiva()); // mantém transação anterior


                return(View("AutorizarUsuario", PreencheModel(autorizacoes, modelRetorno)));
            }
            else if (retorno == null || retorno.Count == 0)
            {
                fachadaVM = new FachadaAdmWeb <AutorizarUsuarioViewModel>();    // Por padrão fecha a conexão
                fachadaVM.SalvaConexaoAtiva(fachada.RetornaConexaoAtiva());     // mantém conexão anterior
                fachadaVM.SalvaTransacaoAtiva(fachada.RetornaTransacaoAtiva()); // mantém transação anterior

                ViewBag.Mensagem = "Não há validações para copiar";


                return(View("AutorizarUsuario", PreencheModel(autorizacoes, modelRetorno)));
            }



            fachada.DefineTemQueFecharConexao(true); // a próxima operação é a última
            msgValidacao = fachada.SalvarTodos(retorno);

            if (msgValidacao != null)
            {
                ViewBag.Mensagem = msgValidacao;
            }
            else
            {
                ViewBag.Mensagem = "Autorizações copiadas com sucesso.";
            }

            //return View("AutorizarUsuario", PreencheModel(autorizacoes, modelRetorno));
            return(View("../Home/Index"));
        } // CopiarAutorizações