public int popularTabelaTramitacaoUnidade() { List <string> listaProcessos = getProcessosComAndamentoTramitar(); int registros = 0; using (TransactionScope scopo = new TransactionScope()) { try { inserirProcessosSemAndamentoTramitar(); foreach (string id in listaProcessos) { List <structTUEAndamento> listaAndamentosProcesso = getAndamentosTramitarProcesso(id); registros += listaAndamentosProcesso.Count; TramitacaoUnidadeExercicio objTUE; foreach (structTUEAndamento obj in listaAndamentosProcesso) { objTUE = new TramitacaoUnidadeExercicio(); objTUE.UnidadeExercicio = UnidadeExercicio.Find(Convert.ToInt32(obj.unidade)); objTUE.Processo = Processo.Find(Convert.ToInt32(obj.processo)); objTUE.DataEntradaUnidade = Convert.ToDateTime(obj.datatramitacao); objTUE.Save(); } } scopo.VoteCommit(); } catch { scopo.VoteRollBack(); } } return(registros); }
public bool inserirProcessosSemAndamentoTramitar() { string select = @" SELECT pan.fk_cod_processo_pro, pan.dat_cadastro_pan, ( SELECT uef.fk_cod_unidade_exercicio_uex FROM adm_licitar.tb_unidade_exercicio_funcao_pessoa_efp efp INNER JOIN adm_licitar.tb_unidade_exercicio_funcao_uef uef ON uef.pk_cod_unidade_exercicio_funcao_uef = efp.fk_cod_unidade_exercicio_funcao_uef WHERE efp.fk_cod_pessoa_pes = pan.fk_cod_pessoa_cadastrante_pes AND (dat_fim_efp = '-infinity' OR dat_fim_efp is null) ORDER BY dat_inicio_efp DESC LIMIT 1 ) as unidade_cadastrante FROM adm_licitar.tb_processo_andamento_pan pan WHERE pan.fk_cod_processo_pro not in ( SELECT DISTINCT pan.fk_cod_processo_pro 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 WHERE ati.txt_descricao_ati = 'TRAMITAR' ORDER BY pan.fk_cod_processo_pro ) AND pan.pk_cod_processo_andamento_pan = ( SELECT pan2.pk_cod_processo_andamento_pan FROM adm_licitar.tb_processo_andamento_pan pan2 WHERE pan2.fk_cod_processo_pro = pan.fk_cod_processo_pro ORDER BY pan2.dat_cadastro_pan DESC, pan2.pk_cod_processo_andamento_pan DESC LIMIT 1 ) AND (pan.dat_cadastro_pan is not null AND pan.dat_cadastro_pan <> '-infinity') " ; DataTable dt = Consultar(select); TramitacaoUnidadeExercicio objTUE; foreach (DataRow row in dt.Rows) { int unidade = Convert.ToInt32(row["unidade_cadastrante"].ToString()); int processo = Convert.ToInt32(row["fk_cod_processo_pro"].ToString()); string data = row["dat_cadastro_pan"].ToString(); objTUE = new TramitacaoUnidadeExercicio(); objTUE.DataEntradaUnidade = Convert.ToDateTime(data); objTUE.UnidadeExercicio = UnidadeExercicio.Find(unidade); objTUE.Processo = Processo.Find(processo); objTUE.Save(); } return(true); }