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);
        }
Beispiel #2
0
        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);
        }