public override string Executar(object entidade) { if (entidade is CopiaDeAutorizacao) { CopiaDeAutorizacao copia = entidade as CopiaDeAutorizacao; string msg = this.Executar(copia.AutorizacaoOrigem); if (msg == null) { msg = this.Executar(copia.AutorizacaoDestino); } return(msg); } Autorizacao auth = entidade as Autorizacao; IFachada <Profissional> fachada = new FachadaAdmWeb <Profissional>(); fachada.SalvaConexaoAtiva(this.conexao); // Manter conexão anterior fachada.SalvaTransacaoAtiva(this.transacao); // Manter transação anterior fachada.DefineTemQueFecharConexao(false); // Não fechar ao finalizar Orgao aux = auth.Usuario.OrgaoAtual; auth.Usuario.OrgaoAtual = null; IList <Profissional> retorno = fachada.Consultar(auth.Usuario); auth.Usuario.OrgaoAtual = aux; if (retorno == null) { return("O Usuário informado não existe!"); } return(null); }
public override void Salvar(object entidade) { CopiaDeAutorizacao copia = entidade as CopiaDeAutorizacao; copia.AutorizacaoDestino.Aplicativo = copia.AutorizacaoOrigem.Aplicativo; copia.AutorizacaoDestino.OrgaoAutorizado = copia.AutorizacaoOrigem.OrgaoAutorizado; IContextoDAO dao = new ContextoAutorizacao(); dao.CompartilhaConexao(this.RetornaConexao()); dao.CompartilharTransacao(this.RetornaTransacao()); dao.Salvar(copia.AutorizacaoDestino); }
public override string Executar(object entidade) { CopiaDeAutorizacao copia = entidade as CopiaDeAutorizacao; if (copia.AutorizacaoOrigem == null || copia.AutorizacaoOrigem.Usuario == null || copia.AutorizacaoOrigem.Usuario.Codigo == null || copia.AutorizacaoOrigem.Usuario.Codigo.Trim() == "") { return("O usuário de Origem (usuário a copiar) é origatório! Favor informá-lo"); } if (copia.AutorizacaoDestino == null || copia.AutorizacaoDestino.Usuario == null || copia.AutorizacaoDestino.Usuario.Codigo == null || copia.AutorizacaoDestino.Usuario.Codigo.Trim() == "") { return("O usuário de destino (usuário que terá as permissões copiadas) " + "é origatório! Favor informá-lo"); } return(null); }
public override IList <object> Consultar(object entidade) { CopiaDeAutorizacao copia = entidade as CopiaDeAutorizacao; string sql; IContextoDAO dao = new ContextoAutorizacao(); dao.CompartilhaConexao(this.RetornaConexao()); // para manter a mesma conexão dao.CompartilharTransacao(this.RetornaTransacao()); // para manter a mesma transação IList <Autorizacao> retornoAutorizacoes; var auxiliar = dao.Consultar(copia.AutorizacaoOrigem); if (auxiliar != null) { retornoAutorizacoes = auxiliar.OfType <Autorizacao>().ToList(); } else { return(null); } IList <object> ListaDeCopias = new List <object>(); IList <string> siglasOrgaos = new List <string>(); // Selecionar o órgão padrão: sql = "select sig_orgao, " + // 0 "o.cod_orgao " + // 1 "from orgao o, " + "usuario u " + "where o.cod_orgao = u.cod_orgao_padrao and " + "u.cod_usuari = ? "; comando = new SqlCommand(sql, conexao, transacao); comando.Parameters.Add(new SqlParameter("cod_usuari", copia.AutorizacaoDestino.Usuario.Codigo)); dataReader = comando.ExecuteReader(); if (dataReader.Read()) { Profissional usuarioAuxiliar = copia.AutorizacaoDestino.Usuario; usuarioAuxiliar.OrgaosDoUsuario = new List <Orgao>(); siglasOrgaos.Add(dataReader.GetString(0)); // sig_orgao usuarioAuxiliar.OrgaosDoUsuario.Add(new Orgao { Sigla = siglasOrgaos.Last(), // sig_orgao Codigo = dataReader.GetString(1), // cod_orgao }); } dataReader.Close(); // selecionar os outros órgãos: sql = "select sig_orgao " + // 0 "from orgao o, " + "rel_usuario_orgao r " + "where o.cod_orgao = r.cod_orgao and " + "r.cod_usuari = ? and " + "o.cod_orgao <> ? "; comando = new SqlCommand(sql, conexao, transacao); comando.Parameters.Add(new SqlParameter("cod_usuari", // cod_usuari copia.AutorizacaoDestino.Usuario.Codigo)); comando.Parameters.Add(new SqlParameter("cod_orgao", copia.AutorizacaoDestino.Usuario.OrgaosDoUsuario[0].Codigo)); dataReader = comando.ExecuteReader(); while (dataReader.Read()) { Profissional usuarioAuxiliar = copia.AutorizacaoDestino.Usuario; siglasOrgaos.Add(dataReader.GetString(0)); // sig_orgao usuarioAuxiliar.OrgaosDoUsuario.Add(new Orgao { Sigla = siglasOrgaos.Last(), // sig_orgao }); } // while dataReader.Close(); retornoAutorizacoes = (from Autorizacao a in retornoAutorizacoes where siglasOrgaos.Contains(a.OrgaoAutorizado.Sigla) select a).ToList(); foreach (Autorizacao a in retornoAutorizacoes) { CopiaDeAutorizacao retornoFinal = new CopiaDeAutorizacao(); retornoFinal.AutorizacaoOrigem = new Autorizacao { Usuario = copia.AutorizacaoOrigem.Usuario, UsuarioAutorizando = copia.AutorizacaoOrigem.UsuarioAutorizando, OrgaoAutorizado = a.OrgaoAutorizado, Aplicativo = a.Aplicativo, }; retornoFinal.AutorizacaoDestino = new Autorizacao { Usuario = copia.AutorizacaoDestino.Usuario, UsuarioAutorizando = copia.AutorizacaoDestino.UsuarioAutorizando, }; ListaDeCopias.Add(retornoFinal); // salvando cópia na lista } if (ListaDeCopias.Count == 0) { return(null); } return(ListaDeCopias); }
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