public ProtocoloLocalizacao ObterLocalizacao(Documento doc, ProtocoloLocalizacao localizacao = null) { ProtocoloLocalizacao loc = localizacao == null ? new ProtocoloLocalizacao() : localizacao; if (loc.ProcessoPaiId <= 0) { ProtocoloNumero processoPai = ProtocoloAssociado(doc.Id.GetValueOrDefault()) ?? new ProtocoloNumero(); if (processoPai.Id > 0) { loc.ProcessoPaiId = processoPai.Id; loc.ProcessoPaiNumero = processoPai.NumeroTexto; ProcessoBus _busProcesso = new ProcessoBus(); return(_busProcesso.ObterLocalizacao(loc.ProcessoPaiId, loc)); } } TramitacaoBus _busTramitacao = new TramitacaoBus(new TramitacaoValidar()); loc.Tramitacao.Id = _busTramitacao.ObterTramitacaoProtocolo(doc.Id.GetValueOrDefault()); if (loc.Tramitacao.Id > 0) { loc.Tramitacao = _busTramitacao.Obter(loc.Tramitacao.Id); if (loc.Tramitacao.SituacaoId == (int)eTramitacaoSituacao.Arquivado) { loc.Localizacao = eLocalizacaoProtocolo.Arquivado; ArquivarBus _arquivarBus = new ArquivarBus(); Arquivar arquivamento = _arquivarBus.ObterArquivamento(loc.Tramitacao.Id); loc.ArquivoNome = arquivamento.ArquivoNome; } else if (loc.Tramitacao.SituacaoId == (int)eTramitacaoSituacao.ParaOrgaoExterno) { loc.Localizacao = eLocalizacaoProtocolo.OrgaoExterno; loc.OrgaoExternoNome = loc.Tramitacao.OrgaoExterno.Texto; } else if (loc.Tramitacao.SituacaoId == (int)eTramitacaoSituacao.Tramitando) { if (loc.Tramitacao.Destinatario.Id == 0) { loc.Localizacao = eLocalizacaoProtocolo.EnviadoParaSetor; } else { loc.Localizacao = eLocalizacaoProtocolo.EnviadoParaFuncionario; loc.FuncionarioDestinatarioNome = loc.Tramitacao.Destinatario.Nome; } } } else // se não existir tramitação, ele está na posse de algum funcionário { loc.Localizacao = eLocalizacaoProtocolo.PosseFuncionario; TramitacaoPosse posse = _busTramitacao.ObterProtocoloPosse(doc.Id.GetValueOrDefault()); loc.FuncionarioDestinatarioNome = posse.FuncionarioNome; loc.SetorDestinatarioNome = posse.SetorNome; } return(loc); }
// orgao externo // OU setor x // OU arquivo y // OU tramitando para setor j // OU tramitando para funcionario k no setor i // OU em posse do funcionario w no setor z // OU apensado/juntado a um processo public ProtocoloLocalizacao ObterLocalizacao(int processoId, ProtocoloLocalizacao localizacao = null) { ProtocoloLocalizacao loc = localizacao == null ? new ProtocoloLocalizacao() : localizacao; Processo proc = ObterSimplificado(processoId); if (loc.ProcessoPaiId <= 0) { int ApensadoEmProcessoId = ProcessoApensado(processoId); if (ApensadoEmProcessoId > 0) { loc.ProcessoPaiId = ApensadoEmProcessoId; loc.ProcessoPaiNumero = ObterSimplificado(loc.ProcessoPaiId).Numero; return(ObterLocalizacao(loc.ProcessoPaiId, loc)); } } TramitacaoBus _busTramitacao = new TramitacaoBus(); loc.Tramitacao.Id = _busTramitacao.ObterTramitacaoProtocolo(processoId); if (loc.Tramitacao.Id > 0) { loc.Tramitacao = _busTramitacao.Obter(loc.Tramitacao.Id); if (loc.Tramitacao.SituacaoId == (int)eTramitacaoSituacao.Arquivado) { loc.Localizacao = eLocalizacaoProtocolo.Arquivado; ArquivarBus _arquivarBus = new ArquivarBus(); Arquivar arquivamento = _arquivarBus.ObterArquivamento(loc.Tramitacao.Id); loc.ArquivoNome = arquivamento.ArquivoNome; } else if (loc.Tramitacao.SituacaoId == (int)eTramitacaoSituacao.ParaOrgaoExterno) { loc.Localizacao = eLocalizacaoProtocolo.OrgaoExterno; loc.OrgaoExternoNome = loc.Tramitacao.OrgaoExterno.Texto; } else if (loc.Tramitacao.SituacaoId == (int)eTramitacaoSituacao.Tramitando) { if (loc.Tramitacao.Destinatario.Id == 0) { loc.Localizacao = eLocalizacaoProtocolo.EnviadoParaSetor; } else { loc.Localizacao = eLocalizacaoProtocolo.EnviadoParaFuncionario; loc.FuncionarioDestinatarioNome = loc.Tramitacao.Destinatario.Nome; } } } else // se não existir tramitação, ele está na posse de algum funcionário { loc.Localizacao = eLocalizacaoProtocolo.PosseFuncionario; TramitacaoPosse posse = _busTramitacao.ObterProtocoloPosse(processoId); loc.FuncionarioDestinatarioNome = posse.FuncionarioNome; loc.SetorDestinatarioNome = posse.SetorNome; } return(loc); }