public bool possuiFaseMarcacao(int idPessoa) { SrvUnidadeExercicioFuncaoPessoa objSrvUEFP = new SrvUnidadeExercicioFuncaoPessoa(); List <string> listaSubUnidades = objSrvUEFP.listarSubUnidadesPessoa(idPessoa); DetachedCriteria dc = DetachedCriteria.For(typeof(FaseUnidadeExercicio)); dc.CreateAlias("Fase", "fas"); dc.CreateAlias("UnidadeExercicio", "uex"); dc.Add(Expression.In("uex.Descricao", listaSubUnidades)); dc.Add(Expression.Eq("fas.Descricao", "MARCAÇÃO")); dc.Add(Expression.Or(Expression.Eq("DataFim", Convert.ToDateTime("01/01/0001 00:00:00")), Expression.IsNull("DataFim"))); return(FaseUnidadeExercicio.FindFirst(dc) != null); }
public string executarFuncaoCorrigirPregoeirosProcesso(string di, string df) { SrvUnidadeExercicioFuncaoPessoa objSrvUEFP = new SrvUnidadeExercicioFuncaoPessoa(); SrvProcessoPapelPessoa objSrvPPP = new SrvProcessoPapelPessoa(); List <string> lista = this.listarProcessosComDataConclusao(di, df); string papel = this.getCodigoPapelPorDescricao("PREGOEIRO"); ProcessoPapelPessoa objPPP = null; string resultado = "Lista de SPU's: "; foreach (string cod in lista) { string select = @" SELECT uex.pk_cod_unidade_exercicio_uex as unidade, pan.fk_cod_processo_pro as processo FROM adm_licitar.tb_processo_andamento_pan pan INNER JOIN adm_licitar.tb_fluxo_andamento_fan fan ON fan.pk_cod_fluxo_andamento_fan = pan.fk_cod_fluxo_andamento_fan INNER JOIN adm_licitar.tb_atividade_ati ati ON ati.pk_cod_atividade_ati = fan.fk_cod_atividade_ati INNER JOIN adm_licitar.tb_unidade_exercicio_uex uex ON uex.pk_cod_unidade_exercicio_uex = pan.fk_cod_unidade_exercicio_uex WHERE pan.fk_cod_processo_pro = '@processo' AND ati.txt_descricao_ati = 'TRAMITAR' AND uex.txt_descricao_uex ILIKE 'PREGOEIRO%' ORDER BY pan.dat_cadastro_pan DESC LIMIT 1 " ; select = select.Replace("@processo", cod); DataTable dt = Consultar(select); bool existePregoeiroProcesso = false; using (TransactionScope scope = new TransactionScope()) { try { foreach (DataRow row in dt.Rows) { string unidade = row["unidade"].ToString(); int idUnidade = 0; if (int.TryParse(unidade, out idUnidade)) { UnidadeExercicioFuncaoPessoa[] listaPregoeiros = objSrvUEFP.ListarPregoeirosDaSubUnidade(idUnidade); if (listaPregoeiros.Length > 0) { ProcessoPapelPessoa[] listaPPP = objSrvPPP.listarPessoasPorProcessoPapelPrincipal(Convert.ToInt32(cod), Convert.ToInt32(papel)); if (listaPPP.Length > 0) { foreach (ProcessoPapelPessoa p in listaPPP) { if (p.Pessoa == listaPregoeiros[0].Pessoa) { if (!p.PregoeiroPrincipal) { p.PregoeiroPrincipal = true; p.Update(); resultado += Processo.numSPU(p.Processo.Id) + "; "; } existePregoeiroProcesso = true; } else { p.PregoeiroPrincipal = false; p.Update(); } } } if (!existePregoeiroProcesso) { objPPP = new ProcessoPapelPessoa(); objPPP.Papel = new Papel(Convert.ToInt32(papel)); objPPP.Pessoa = listaPregoeiros[0].Pessoa; objPPP.Processo = new Processo(Convert.ToInt32(cod)); objPPP.PregoeiroPrincipal = true; int idProcesso = objPPP.Processo.Id; resultado += Processo.numSPU(idProcesso) + "; "; objPPP.Save(); } } } } scope.VoteCommit(); } catch { scope.VoteRollBack(); resultado = "Ocorreu um erro!"; } } } resultado += "<br/> Processos Corrigidos com Sucesso!"; return(resultado); }