public bool VerificarPermissaoPorSubUnidade(int idPessoa, List <int> SubUnidade, string descricaoPermissao, string pagina) { Atividade oAtividade = Atividade.FindFirst(Expression.InsensitiveLike("Url", "%" + pagina + "%")); //Primeiro verifica se a sub-unidade de exercicio tem a permissão desejada DetachedCriteria dc = DetachedCriteria.For(typeof(AtividadeUnidadeExercicioPermissao)); dc.Add(Expression.In("UnidadeExercicio.Id", SubUnidade)); dc.Add(Expression.Eq("Atividade.Id", oAtividade.Id)); dc.CreateAlias("Permissao", "per"); dc.Add(Expression.Eq("per.Descricao", descricaoPermissao)); if (AtividadeFuncaoPermissao.Exists(dc)) { return(true); } else { //Se a sub-unidade não tem permissão, verifica se o usuário tem. DetachedCriteria dc2 = DetachedCriteria.For(typeof(AtividadePessoaPermissao)); dc2.Add(Expression.Eq("Pessoa.Id", idPessoa)); dc2.Add(Expression.Eq("Atividade.Id", oAtividade.Id)); dc2.CreateAlias("Permissao", "per"); dc2.Add(Expression.Eq("per.Descricao", descricaoPermissao)); dc2.Add(Expression.Eq("AcessoPermitido", true)); if (AtividadePessoaPermissao.Exists(dc2)) { return(true); } } return(false); }
public FluxoAndamento RetornaFluxoAndamento(string modalidade, string tipoAndamento, string fase) { DetachedCriteria pesqAtividade = DetachedCriteria.For(typeof(Atividade)); pesqAtividade.Add(Expression.Eq("Descricao", tipoAndamento).IgnoreCase()); DetachedCriteria pesqFase = DetachedCriteria.For(typeof(Fase)); pesqFase.Add(Expression.Eq("Descricao", fase.ToUpper()).IgnoreCase()); DetachedCriteria pesqWorkFlow = DetachedCriteria.For(typeof(Workflow)); pesqWorkFlow.Add(Expression.Sql(@" this_.pk_cod_workflow_wor = (select fk_cod_workflow_wor from adm_licitar.tb_workflow_modalidade_unidade_exercicio_wmu wmu inner join adm_licitar.tb_modalidade_mod mod on mod.pk_cod_modalidade_mod = wmu.fk_cod_modalidade_mod where txt_descricao_mod ilike '" + modalidade + @"')")); Atividade.FindFirst(pesqAtividade); Workflow.FindFirst(pesqWorkFlow); Fase.FindFirst(pesqFase); DetachedCriteria pesqFluxoAndamento = DetachedCriteria.For(typeof(FluxoAndamento)); pesqFluxoAndamento.CreateAlias("Atividade", "ati").CreateAlias("Fase", "fas").CreateAlias("Workflow", "work"); pesqFluxoAndamento.Add(Expression.Eq("ati.Id", Atividade.FindFirst(pesqAtividade).Id)); pesqFluxoAndamento.Add(Expression.Eq("fas.Id", Fase.FindFirst(pesqFase).Id)); pesqFluxoAndamento.Add(Expression.Eq("work.Id", Workflow.FindFirst(pesqWorkFlow).Id)); pesqFluxoAndamento.Add(Expression.Eq("CombinacaoAtiva", true)); return(FluxoAndamento.FindFirst(pesqFluxoAndamento)); }
public int getAtividadePorUrl(string url) { DetachedCriteria dc = DetachedCriteria.For(typeof(Atividade)); dc.Add(Expression.InsensitiveLike("Url", "%" + url + "%")); Atividade obj = Atividade.FindFirst(dc); return(obj == null ? 0 : obj.Id); }