internal AnaliseItem ObterAnaliseTitulo(int tituloId, BancoDeDados banco = null) { AnaliseItem analise = new AnaliseItem(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco)) { Comando comando = bancoDeDados.CriarComando(@"select n.analise_id, n.analise_tid from {0}esp_oficio_notificacao n, {0}tab_protocolo p where p.id = n.protocolo and n.titulo = :tituloId" , EsquemaBanco); comando.AdicionarParametroEntrada("tituloId", tituloId); using (IDataReader reader = bancoDeDados.ExecutarReader(comando)) { if (reader.Read()) { analise.Id = Convert.ToInt32(reader["analise_id"]); analise.Tid = reader["analise_tid"].ToString(); } reader.Close(); } } return(analise); }
internal void AlterarSituacao(AnaliseItem analise, BancoDeDados banco = null) { using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco)) { #region Análise de itens de processo/documento bancoDeDados.IniciarTransacao(); Comando comando = bancoDeDados.CriarComando(@"update {0}tab_analise a set a.situacao = :situacao, a.tid = :tid where a.id = :id", EsquemaBanco); comando.AdicionarParametroEntrada("id", analise.Id, DbType.Int32); comando.AdicionarParametroEntrada("situacao", analise.Situacao, DbType.Int32); comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual()); bancoDeDados.ExecutarNonQuery(comando); #endregion #region Histórico Historico.Gerar(analise.Id, eHistoricoArtefato.analiseitens, eHistoricoAcao.alterarsituacao, bancoDeDados); #endregion bancoDeDados.Commit(); } }
public void Salvar(AnaliseItem analise, bool atualizarRoteiro = false) { try { //Validação proposta pela analista if (!atualizarRoteiro) { VerificarProtocolo(analise.ProtocoloPai); } if (Validacao.EhValido && _validar.Salvar(analise, atualizarRoteiro)) { int setorId = _daProtocolo.ObterSetor(analise.Protocolo.Id ?? 0); Funcionario func = _busFuncionario.Obter(_busFuncionario.User.FuncionarioId); // para cada item que foi alterado da análise, atualiza sua DataAnalise para NOW foreach (Item item in analise.Itens) { if (item.Editado || item.IsAtualizado) { item.Analista = func.Nome; item.DataAnalise = DateTime.Now.ToString(); item.SetorId = setorId; } if (item.Situacao != (int)eAnaliseItemSituacao.Reprovado && item.Situacao != (int)eAnaliseItemSituacao.Dispensado) { item.Motivo = String.Empty; } if (!item.Avulso && item.Tipo != (int)eRoteiroItemTipo.ProjetoDigital && (item.IdRelacionamento < 1 || item.IsAtualizado)) { item.Motivo = "Atualização de versão do roteiro orientativo."; } item.IsAtualizado = false; item.Editado = false; } GerenciadorTransacao.ObterIDAtual(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia()) { bancoDeDados.IniciarTransacao(); _da.Salvar(analise, bancoDeDados); bancoDeDados.Commit(); } } } catch (Exception exc) { Validacao.AddErro(exc); } }
public void CriarAnalise(AnaliseItem analise) { try { List <Roteiro> roteirosChecagem = _busChecagem.ObterRoteirosChecagem(analise.Checagem.Id); analise.Roteiros = roteirosChecagem; List <Situacao> situacoes = _busLista.SituacoesItemAnalise; int setorId = _daProtocolo.ObterSetor(analise.Protocolo.Id ?? 0); foreach (Roteiro roteiroAtual in roteirosChecagem) { foreach (Item itemAtual in roteiroAtual.Itens) { switch ((eChecagemItemSituacao)itemAtual.Situacao) { case eChecagemItemSituacao.Pendente: itemAtual.Situacao = (int)eAnaliseItemSituacao.Pendente; break; case eChecagemItemSituacao.Conferido: itemAtual.Situacao = (int)eAnaliseItemSituacao.Recebido; break; case eChecagemItemSituacao.Dispensado: itemAtual.Situacao = (int)eAnaliseItemSituacao.Dispensado; break; } if (itemAtual.Situacao != (int)eAnaliseItemSituacao.Reprovado && itemAtual.Situacao != (int)eAnaliseItemSituacao.Dispensado) { itemAtual.Motivo = String.Empty; } itemAtual.SetorId = setorId; itemAtual.Recebido = itemAtual.Situacao == (int)eAnaliseItemSituacao.Recebido; itemAtual.SituacaoTexto = situacoes.SingleOrDefault(x => x.Id == itemAtual.Situacao).Texto; analise.Itens.Add(itemAtual); } } using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia()) { GerenciadorTransacao.ObterIDAtual(); bancoDeDados.IniciarTransacao(); _da.Salvar(analise, bancoDeDados); bancoDeDados.Commit(); } } catch (Exception exc) { Validacao.AddErro(exc); } }
public ActionResult Analisar(int protocoloId = 0, int requerimentoId = 0) { AnaliseItemVM vm = new AnaliseItemVM(); if (protocoloId == 0 || requerimentoId == 0) { return(View(vm)); } IProtocolo protocolo = _protocoloBus.Obter(protocoloId); AnaliseItem analise = _bus.VerificarProtocolo(protocolo.Numero); if (!Validacao.EhValido) { return(RedirectToAction("Analisar", "AnaliseItens", Validacao.QueryParamSerializer())); } vm.Requerimentos = analise.Requerimentos; vm.RequerimentoSelecionado = requerimentoId; vm.ProjetoDigitalId = _busProjetoDigitalCredenciado.ObterProjetoDigitalId(requerimentoId); vm.ProtocoloId = protocoloId; vm.ProtocoloNumero = protocolo.Numero; Requerimento req = vm.Requerimentos.FirstOrDefault(x => x.Id == requerimentoId); AnaliseItem analiseAux = _bus.ObterPorChecagem(req.Checagem); if (analiseAux != null && analiseAux.Id > 0) { analise.Id = analiseAux.Id; analise.Situacao = analiseAux.Situacao; } if (_validar.ValidarProtocoloAnalisar(req.Checagem, req.Id, protocolo.IsProcesso)) { if (_validar.Analise(analise)) { // Caso não exista a analise na entrada no metodo abaixo a mesma vai ser criada analise = _bus.ObterAnaliseProtocolo(req, protocolo.Id.GetValueOrDefault(), false); vm.AnaliseId = analise.Id; vm.CheckListId = req.Checagem; vm.Atualizado = false; vm.Roteiros = analise.Roteiros; analise.Itens.ForEach(x => x.Analista = string.Empty); vm.ListarItens = analise.Itens; } } vm.Situacao = analise.Situacao; vm.UrlsCaracterizacoes = ObterUrlsCaracterizacoes(_busCaracterizacao.ObterCaracterizacoes(vm.ProjetoDigitalId)); return(View(vm)); }
public List <Roteiro> ObterRoteirosAtuais(AnaliseItem analise) { List <Roteiro> roteirosAtuais = new List <Roteiro>(); for (int i = 0; i < analise.Roteiros.Count; i++) { Roteiro roteiro = ObterSimplificado(analise.Roteiros[i].Id); roteirosAtuais.Add(roteiro); } return(roteirosAtuais); }
public bool ImportarProjetoDigital(int analiseId, int projetoDigitalId) { try { GerenciadorTransacao.ObterIDAtual(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia()) { bancoDeDados.IniciarTransacao(); using (BancoDeDados bancoCredenciado = BancoDeDados.ObterInstancia(EsquemaBancoCredenciado)) { bancoCredenciado.IniciarTransacao(); AnaliseItem analise = Obter(analiseId); analise.Situacao = (int)eAnaliseSituacao.Finalizado; if (_validar.Analise(analise)) { CaracterizacaoBus caracterizacaoBus = new CaracterizacaoBus(); caracterizacaoBus.CopiarDadosCredenciado(projetoDigitalId, bancoDeDados, bancoCredenciado); _da.AlterarSituacao(analise, bancoDeDados); ProjetoDigitalCredenciadoBus projetoDigitalCredenciadoBus = new ProjetoDigitalCredenciadoBus(); projetoDigitalCredenciadoBus.AlterarEtapaTemporario(projetoDigitalId, eProjetoDigitalEtapaImportacao.Finalizado, bancoDeDados); if (!Validacao.EhValido) { bancoDeDados.Rollback(); bancoCredenciado.Rollback(); return(false); } } bancoCredenciado.Commit(); } bancoDeDados.Commit(); } return(true); } catch (Exception e) { Validacao.AddErro(e); } return(false); }
public virtual void AtualizarEspecificacaoItem(int especificacaoItemId, string descricao, AnaliseItem analiseItem, AnaliseTipo analiseTipo, bool teorAtivo, bool teorNaCl, decimal analiseInicialIhara, decimal analiseFinalIhara, decimal analiseInicialAbnt, decimal analiseFinalAbnt) { Descricao = descricao; AnaliseItem = analiseItem; AnaliseTipo = analiseTipo; TeorAtivo = teorAtivo; TeorNaCl = teorNaCl; AnaliseInicialIhara = analiseInicialIhara; AnaliseFinalIhara = analiseFinalIhara; AnaliseInicialAbnt = analiseInicialAbnt; AnaliseFinalAbnt = analiseFinalAbnt; }
public ActionResult ObterAnalisePartial(RequerimentoAnaliseVME objeto) { AnaliseItemVM vm = new AnaliseItemVM(); AnaliseItem analise = new AnaliseItem(); if (_validar.ValidarProtocoloAnalisar(objeto.ChecagemId, objeto.NumeroRequerimento, objeto.IsProcesso)) { analise = _bus.ObterPorChecagem(objeto.ChecagemId) ?? new AnaliseItem(); analise.Protocolo.Id = objeto.ProtocoloId; if (_validar.Analise(analise)) { Requerimento req = _busRequerimento.Obter(objeto.NumeroRequerimento); req.Checagem = objeto.ChecagemId; vm.RequerimentoSelecionado = req.Id; vm.Requerimentos.Add(req); // Caso não exista a analise na entrada no metodo abaixo a mesma vai ser criada analise = _bus.ObterAnaliseProtocolo(req, objeto.ProtocoloId, objeto.Atualizar); analise.Requerimentos = vm.Requerimentos; vm.CheckListId = objeto.ChecagemId; vm.Atualizado = objeto.Atualizar; vm.Roteiros = analise.Roteiros; analise.Itens.ForEach(x => x.Analista = string.Empty); vm.ListarItens = analise.Itens; vm.Situacao = analise.Situacao; vm.ProjetoDigitalId = _busProjetoDigitalCredenciado.ObterProjetoDigitalId(req.Id); vm.ProtocoloId = objeto.ProtocoloId; } else { vm.Situacao = analise.Situacao; } } if (vm.ProjetoDigitalId > 0) { vm.UrlsCaracterizacoes = ObterUrlsCaracterizacoes(_busCaracterizacao.ObterCaracterizacoes(vm.ProjetoDigitalId)); } List <Mensagem> info = Validacao.Erros.FindAll(x => x.Tipo == eTipoMensagem.Informacao); List <Mensagem> erro = Validacao.Erros.FindAll(x => x.Tipo != eTipoMensagem.Informacao); return(Json(new { @Msg = erro, @MsgInfo = info, @Html = ((Validacao.EhValido) ? ViewModelHelper.RenderPartialViewToString(ControllerContext, "AnalisarPartial", vm) : ""), analiseId = analise.Id, projetoDigitalId = vm.ProjetoDigitalId }, JsonRequestBehavior.AllowGet)); }
public AnaliseItem ObterSimplificado(Protocolo protocolo) { AnaliseItem resultado = null; try { resultado = _da.Obter(protocolo, true); } catch (Exception exc) { Validacao.AddErro(exc); } return(resultado); }
public AnaliseItem Obter(Protocolo protocolo) { AnaliseItem analise = null; try { analise = _da.Obter(protocolo); } catch (Exception exc) { Validacao.AddErro(exc); } return(analise); }
public AnaliseItem ObterPorChecagem(int checagem, bool simplificado = false, BancoDeDados banco = null) { AnaliseItem analise = null; try { analise = _da.ObterPorChecagem(checagem, simplificado: simplificado, banco: banco); } catch (Exception exc) { Validacao.AddErro(exc); } return(analise); }
public AnaliseItem Obter(int id, BancoDeDados banco = null) { AnaliseItem analise = null; try { analise = _da.Obter(id, banco: banco); } catch (Exception exc) { Validacao.AddErro(exc); } return(analise); }
public EspecificacaoItem(string descricao, AnaliseItem analiseItem, AnaliseTipo analiseTipo, bool teorAtivo, bool teorNaCl, decimal analiseInicialIhara, decimal analiseFinalIhara, decimal analiseInicialAbnt, decimal analiseFinalAbnt, Especificacao especificacao) { Descricao = descricao; AnaliseItem = analiseItem; AnaliseTipo = analiseTipo; TeorAtivo = teorAtivo; TeorNaCl = teorNaCl; AnaliseInicialIhara = analiseInicialIhara; AnaliseFinalIhara = analiseFinalIhara; AnaliseInicialAbnt = analiseInicialAbnt; AnaliseFinalAbnt = analiseFinalAbnt; Especificacao = especificacao; }
public AnaliseItem ObterHistorico(int id, string tid = null, bool simplificado = false, BancoDeDados banco = null) { AnaliseItem analise = null; try { analise = _da.ObterHistorico(id, tid, simplificado, banco); } catch (Exception exc) { Validacao.AddErro(exc); } return(analise); }
public bool Analise(AnaliseItem analise) { if (analise != null && analise.Situacao == (int)eAnaliseItemSituacao.Pendente) { Validacao.Add(Mensagem.AnaliseItem.AnaliseSituacaoComPendencia); } if (!_busProtocolo.EmPosse(analise.Protocolo.Id.GetValueOrDefault())) { Validacao.Add(Mensagem.AnaliseItem.ProtocoloSemPosse); return(false); } return(Validacao.EhValido); }
public AnaliseItem ObterAnaliseProtocolo(Requerimento req, int protocoloId, bool atualizar) { AnaliseItem analise = null; try { int analiseId = _da.ExisteAnalise(req.Checagem); if (analiseId != 0) { analise = _da.Obter(analiseId); if (atualizar) { analise.Atualizado = atualizar; AtualizarAnalise(analise); } } else { analise = new AnaliseItem(); analise.Checagem.Id = req.Checagem; analise.Protocolo.Id = protocoloId; CriarAnalise(analise); } if (req.IsRequerimentoDigital && !analise.Itens.Exists(x => x.Tipo == (int)eRoteiroItemTipo.ProjetoDigital)) { analise.Itens.AddRange(ObterItensRequerimentoDigital(req)); } int projetoDigitalId = new ProjetoDigitalCredenciadoBus().ObterProjetoDigitalId(req.Id); List <Caracterizacao> caracterizacoes = _busCaracterizacaoCredenciado.ObterCaracterizacoesAssociadasProjetoDigital(projetoDigitalId); analise.Itens.Where(x => x.Tipo == (int)eRoteiroItemTipo.ProjetoDigital).ToList().ForEach(x => { caracterizacoes.Where(c => c.Tipo == (eCaracterizacao)x.CaracterizacaoTipoId).ToList().ForEach(c => { x.TemProjetoGeografico = c.ProjetoId > 0; }); }); ValidarSituacaoRoteiros(analise); } catch (Exception exc) { Validacao.AddErro(exc); } return(analise); }
public void AtualizarAnalise(AnaliseItem analise) { try { List <Roteiro> roteirosAtuais = _busRoteiro.ObterRoteirosAtuais(analise); //Atualiza o TID do roteiro da análise com o TID do roteiro atual roteirosAtuais.ForEach(atual => { analise.Roteiros.SingleOrDefault(rot => rot.Id == atual.Id).Tid = atual.Tid; }); //Atualiza o TID do item da análise com o TID do item atual List <Item> itens = roteirosAtuais.SelectMany(item => item.Itens).ToList(); Item aux = null; itens.ForEach(atual => { aux = analise.Itens.SingleOrDefault(x => x.Id == atual.Id); if (aux != null) { if (aux.Tid != atual.Tid && aux.Situacao != (int)eAnaliseItemSituacao.Dispensado) { aux.Editado = true; aux.Situacao = (int)eAnaliseItemSituacao.Recebido; aux.Recebido = true; aux.SituacaoTexto = _busLista.SituacoesItemAnalise.Find(x => x.Id == (int)eAnaliseItemSituacao.Recebido).Texto; aux.Motivo = String.Empty; } aux.Nome = atual.Nome; aux.Condicionante = atual.Condicionante; aux.Tid = atual.Tid; } else { atual.Motivo = string.Empty; atual.Editado = true; atual.Situacao = (int)eAnaliseItemSituacao.Pendente; atual.SituacaoTexto = _busLista.SituacoesItemAnalise.Find(x => x.Id == (int)eAnaliseItemSituacao.Pendente).Texto; analise.Itens.Add(atual); } }); } catch (Exception exc) { Validacao.AddErro(exc); } }
public ActionResult ObterRequerimentos(string numero) { AnaliseItemVM vm = new AnaliseItemVM(); AnaliseItem analise = _bus.VerificarProtocolo(numero); vm.Requerimentos = analise.Requerimentos; return(Json(new { @IsProcesso = analise.IsProcesso, @ProtocoloId = analise.Protocolo.Id, @Html = ViewModelHelper.RenderPartialViewToString(ControllerContext, "Requerimentos", vm), Msg = Validacao.Erros }, JsonRequestBehavior.AllowGet)); }
public void Salvar(AnaliseItem analise, BancoDeDados banco = null) { if (analise == null) { throw new Exception("Análise de itens é nula."); } if (analise.Id == 0) { Criar(analise, banco); } else { Editar(analise, banco); } }
public ActionResult GerarPdf(int id) { try { AnaliseItem analise = _bus.Obter(id); if (!_validar.Salvar(analise)) { return(RedirectToAction("Analisar", "AnaliseItens", Validacao.QueryParamSerializer())); } return(ViewModelHelper.GerarArquivoPdf(new PdfAnalise().GerarPDFAnalise(id), "Analise de Itens")); } catch (Exception exc) { Validacao.AddErro(exc); return(RedirectToAction("Index", Validacao.QueryParamSerializer())); } }
public void ValidarVersaoRoteiro(int checagemId) { int analiseId = _daAnalise.ExisteAnalise(checagemId); if (analiseId <= 0) { return; } AnaliseItem analise = _daAnalise.Obter(analiseId); for (int i = 0; i < analise.Roteiros.Count; i++) { if (analise.Roteiros[i].Versao != analise.Roteiros[i].VersaoAtual) { Validacao.Add(Mensagem.AnaliseItem.VersaoAtualizada(analise.Roteiros[i].Numero, analise.Roteiros[i].VersaoAtual, analise.Roteiros[i].Versao, analise.Roteiros[i].DataAtualizacao)); } } }
public void AlterarSituacao(AnaliseItem analise, BancoDeDados banco = null) { try { GerenciadorTransacao.ObterIDAtual(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco)) { bancoDeDados.IniciarTransacao(); _da.AlterarSituacao(analise, bancoDeDados); bancoDeDados.Commit(); } } catch (Exception exc) { Validacao.AddErro(exc); } }
internal AnaliseItem Obter(Protocolo protocolo, bool simplificado = false) { AnaliseItem analise = null; using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia()) { #region Análise de itens de processo/documento Comando comando = bancoDeDados.CriarComando(@"select c.id from {0}tab_analise c where c.protocolo = :id", EsquemaBanco); comando.AdicionarParametroEntrada("id", protocolo.Id, DbType.Int32); object valor = bancoDeDados.ExecutarScalar(comando); if (!Convert.IsDBNull(valor) && Convert.ToInt32(valor) > 0) { analise = Obter(Convert.ToInt32(valor), simplificado); } #endregion } return(analise); }
public AnaliseItem VerificarProtocolo(string numero) { AnaliseItem analiseItem = new AnaliseItem(); ProtocoloNumero protocolo = _daProtocolo.ObterProtocolo(numero); analiseItem.IsProcesso = protocolo.IsProcesso; try { if (_validar.VerificarProtocolo(protocolo)) { analiseItem.Requerimentos = _daProtocolo.ObterProtocoloRequerimentos(protocolo.Id); analiseItem.Protocolo.Id = protocolo.Id; } } catch (Exception exc) { Validacao.AddErro(exc); } return(analiseItem); }
public ActionResult Salvar(AnaliseVM vm, bool atualizarRoteiro = false) { AnaliseItem analise = new AnaliseItem(); analise.Id = vm.Id; analise.Checagem.Id = vm.ChecagemId; if (vm.ProtocoloId > 0) { analise.Protocolo.Id = vm.ProtocoloId; } analise.Itens = vm.Itens; analise.Roteiros = vm.Roteiros; analise.ProtocoloPai = vm.ProtocoloPai; _bus.Salvar(analise, atualizarRoteiro); analise.Itens.ForEach(x => x.Analista = string.Empty); return(Json(new { @Itens = analise.Itens, @Msg = Validacao.Erros, AnaliseId = analise.Id }, JsonRequestBehavior.AllowGet)); }
public void AlterarSituacao(Titulo titulo, int acao, BancoDeDados banco, bool gerouPdf = true) { Titulo atualTitulo = _da.ObterSimplificado(titulo.Id); if (titulo.Modelo.Regras == null || titulo.Modelo.Regras.Count == 0) { titulo.Modelo = _busModelo.Obter(titulo.Modelo.Id); } titulo.Situacao = ObterNovaSituacao(titulo, acao); bool isLimparPdfENumero = false; bool isGerarNumero = false; bool isGerarPdf = false; int novaSituacaoCondicionante = 0; if (titulo.Modelo.Codigo == (int)eTituloModeloCodigo.CertificadoRegistroAtividadeFlorestal) { if (titulo.Atividades.Any(x => x.Codigo == (int)eAtividadeCodigo.FabricanteMotosserra) || titulo.Atividades.Any(x => x.Codigo == (int)eAtividadeCodigo.ComercianteMotosserra)) { titulo.Prazo = 365; } else { titulo.Prazo = new DateTime(DateTime.Now.Year, 12, 31).DayOfYear - titulo.DataEmissao.Data.Value.DayOfYear; } } if (!_validar.AlterarSituacao(titulo, acao, gerouPdf)) { return; } #region Configurar Nova Situacao //Situação Nova switch ((eTituloSituacao)titulo.Situacao.Id) { #region 1 - Cadastrado case eTituloSituacao.Cadastrado: if (atualTitulo.Situacao.Id == (int)eTituloSituacao.Emitido) { if (titulo.Modelo.Regra(eRegra.NumeracaoAutomatica)) { titulo.Numero.Inteiro = null; titulo.Numero.Ano = null; } } titulo.DataEmissao.Data = null; titulo.DataInicioPrazo.Data = null; titulo.DataAssinatura.Data = null; titulo.DataVencimento.Data = null; titulo.DataEncerramento.Data = null; titulo.Prazo = null; isLimparPdfENumero = true; break; #endregion #region 2 - Emitido case eTituloSituacao.Emitido: isGerarNumero = true; isGerarPdf = true; //titulo.DataEmissao info na tela if (titulo.Modelo.Regra(eRegra.Prazo)) { int prazoId = Convert.ToInt32(titulo.Modelo.Resposta(eRegra.Prazo, eResposta.TipoPrazo).Valor); titulo.PrazoUnidade = _busLista.TituloModeloTiposPrazos.Single(x => x.Id == prazoId).Texto; } break; #endregion #region 3 - Concluído case eTituloSituacao.Concluido: if (titulo.Modelo.Regra(eRegra.Condicionantes)) { novaSituacaoCondicionante = 2; } if (atualTitulo.Situacao.Id == (int)eTituloSituacao.Cadastrado) { isGerarNumero = true; isGerarPdf = true; } //titulo.DataAssinatura info na tela if (titulo.Modelo.Regra(eRegra.Prazo)) { int prazoId = Convert.ToInt32(titulo.Modelo.Resposta(eRegra.Prazo, eResposta.TipoPrazo).Valor); titulo.PrazoUnidade = _busLista.TituloModeloTiposPrazos.Single(x => x.Id == prazoId).Texto; switch ((eAlterarSituacaoAcao)acao) { case eAlterarSituacaoAcao.EmitirParaAssinatura: titulo.DataInicioPrazo.Data = titulo.DataEmissao.Data.GetValueOrDefault(); break; case eAlterarSituacaoAcao.Assinar: titulo.DataInicioPrazo.Data = titulo.DataAssinatura.Data.GetValueOrDefault(); break; case eAlterarSituacaoAcao.Entregar: case eAlterarSituacaoAcao.Concluir: if (titulo.Modelo.Resposta(eRegra.Prazo, eResposta.InicioPrazo).Valor.ToString() == "2") //data da assinatura { titulo.DataInicioPrazo.Data = titulo.DataAssinatura.Data.GetValueOrDefault(); } else { titulo.DataInicioPrazo.Data = titulo.DataEmissao.Data.GetValueOrDefault(); } break; default: titulo.DataInicioPrazo.Data = DateTime.Now; break; } if (prazoId == 1) //Dias { titulo.DataVencimento.Data = titulo.DataInicioPrazo.Data.Value.AddDays(titulo.Prazo.GetValueOrDefault()); } else { titulo.DataVencimento.Data = titulo.DataInicioPrazo.Data.Value.AddYears(titulo.Prazo.GetValueOrDefault()); } } break; #endregion #region 4 - Assinado case eTituloSituacao.Assinado: //titulo.DataAssinatura info na tela break; #endregion #region 5 - Encerrado case eTituloSituacao.Encerrado: if (titulo.Modelo.Regra(eRegra.Condicionantes)) { novaSituacaoCondicionante = 5; } break; #endregion #region 6 - Prorrogado case eTituloSituacao.Prorrogado: if (titulo.Modelo.Regra(eRegra.Prazo)) { titulo.DataVencimento.Data = titulo.DataVencimento.Data.Value.AddDays(titulo.DiasProrrogados.GetValueOrDefault()); } break; #endregion } #endregion #region Numero de Titulo if (isGerarNumero) { titulo.Numero.ReiniciaPorAno = titulo.Modelo.Regra(eRegra.NumeracaoReiniciada); if (titulo.Modelo.Regra(eRegra.NumeracaoAutomatica)) { titulo.Numero.Automatico = true; TituloModeloResposta iniciarEm = titulo.Modelo.Resposta(eRegra.NumeracaoAutomatica, eResposta.InicioNumeracao); titulo.Numero.IniciaEm = null; titulo.Numero.IniciaEmAno = null; if (iniciarEm != null) { if (iniciarEm.Valor == null || !ValidacoesGenericasBus.ValidarMaskNumeroBarraAno(iniciarEm.Valor.ToString())) { Validacao.Add(Mensagem.Titulo.IniciarEmInvalido); return; } string[] iniciar = iniciarEm.Valor.ToString().Split('/'); titulo.Numero.IniciaEm = Convert.ToInt32(iniciar[0]); titulo.Numero.IniciaEmAno = Convert.ToInt32(iniciar[1]); if (titulo.Numero.IniciaEmAno.GetValueOrDefault() != DateTime.Now.Year) { titulo.Numero.IniciaEm = null; titulo.Numero.IniciaEmAno = null; } } } if (titulo.DataEmissao.IsValido) { titulo.Numero.Ano = titulo.DataEmissao.Data.Value.Year; } } //Limpar numero if (isLimparPdfENumero) { if (titulo.Modelo.Regra(eRegra.NumeracaoAutomatica)) { titulo.Numero = null; } } #endregion if (isLimparPdfENumero) { titulo.ArquivoPdf.Id = null; } GerenciadorTransacao.ObterIDAtual(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco)) { bancoDeDados.IniciarTransacao(); #region Condicionante if (novaSituacaoCondicionante > 0) { foreach (var item in titulo.Condicionantes) { TituloCondicionante condicionanteAtual = _daCondicionante.Obter(item.Id, bancoDeDados); //Filtro para não alterar as 4 - atendida if (novaSituacaoCondicionante == 5 && condicionanteAtual.Situacao.Id == 4) //5 - encerrada | 4 - atendida { continue; } //Ativa a condicionante if (novaSituacaoCondicionante == 2 && condicionanteAtual.Situacao.Id != 2) { if (condicionanteAtual.PossuiPrazo) { //Regras do Modelo Sem Prazo em Condicionantes com Prazo if (!titulo.Modelo.Regra(eRegra.Prazo)) { condicionanteAtual.DataInicioPrazo.Data = titulo.DataEmissao.Data; condicionanteAtual.DataVencimento.Data = titulo.DataEmissao.Data.Value.AddDays(condicionanteAtual.Prazo.GetValueOrDefault()); } else { condicionanteAtual.DataInicioPrazo = titulo.DataInicioPrazo; condicionanteAtual.DataVencimento.Data = titulo.DataInicioPrazo.Data.Value.AddDays(condicionanteAtual.Prazo.GetValueOrDefault()); } } //Periodicidade if (!item.PossuiPeriodicidade && item.Periodicidades != null) { item.Periodicidades.Clear(); } TituloCondicionantePeriodicidade periodicidade = null; if (item.PossuiPeriodicidade) { int diasTotais = item.PeriodicidadeValor.GetValueOrDefault(); switch (item.PeriodicidadeTipo.Id) { case 1: //dia break; case 2: //Mes diasTotais *= 30; break; case 3: //Ano diasTotais *= 365; break; default: break; } if (item.Prazo.GetValueOrDefault() > 0 && item.Prazo.GetValueOrDefault() <= diasTotais) { int qtdPeriodo = Math.Abs((diasTotais / (item.Prazo.GetValueOrDefault()))); for (int i = 0; i < qtdPeriodo; i++) { periodicidade = new TituloCondicionantePeriodicidade(); periodicidade.Situacao.Id = 2; //Ativa //Regras do Modelo Sem Prazo em Condicionantes com Prazo if (!titulo.Modelo.Regra(eRegra.Prazo)) { periodicidade.DataInicioPrazo.Data = titulo.DataEmissao.Data.Value.AddDays(i * item.Prazo.GetValueOrDefault()); periodicidade.DataVencimento.Data = titulo.DataEmissao.Data.Value.AddDays((i + 1) * item.Prazo.GetValueOrDefault()); } else { periodicidade.DataInicioPrazo.Data = titulo.DataInicioPrazo.Data.Value.AddDays(i * item.Prazo.GetValueOrDefault()); periodicidade.DataVencimento.Data = titulo.DataInicioPrazo.Data.Value.AddDays((i + 1) * item.Prazo.GetValueOrDefault()); } item.Periodicidades.Add(periodicidade); } } } condicionanteAtual.Periodicidades = item.Periodicidades; condicionanteAtual.Situacao.Id = novaSituacaoCondicionante; _daCondicionante.Ativar(condicionanteAtual, bancoDeDados); } else { condicionanteAtual.Situacao.Id = novaSituacaoCondicionante; _daCondicionante.AlterarSituacao(condicionanteAtual, banco: bancoDeDados); } } } #endregion _da.AlterarSituacao(titulo, bancoDeDados); #region Atividades TituloBus tituloBus = new TituloBus(); AtividadeBus atividadeBus = new AtividadeBus(); List <Atividade> lstTituloAtividades = null; #region Título Concluido if (titulo.Situacao.Id == (int)eTituloSituacao.Concluido) //3 - Concluido { lstTituloAtividades = tituloBus.ObterAtividades(titulo.Id); if (lstTituloAtividades != null && lstTituloAtividades.Count > 0) { int?situacao = null; if (EspecificiadadeBusFactory.Possui(titulo.Modelo.Codigo.GetValueOrDefault())) { IEspecificidadeBus busEsp = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.GetValueOrDefault()); situacao = busEsp.ObterSituacaoAtividade(titulo.Id); } if (situacao != null || LstModeloCodigoPendencia.Any(x => x == titulo.Modelo.Codigo.GetValueOrDefault()) || LstModeloCodigoIndeferido.Any(x => x == titulo.Modelo.Codigo.GetValueOrDefault())) { eAtividadeSituacao atividadeSituacao = (LstModeloCodigoPendencia.Any(x => x == titulo.Modelo.Codigo.GetValueOrDefault())) ? eAtividadeSituacao.ComPendencia : eAtividadeSituacao.Indeferida; if (situacao != null) { atividadeSituacao = (eAtividadeSituacao)situacao; } atividadeBus.AlterarSituacao(lstTituloAtividades, atividadeSituacao, bancoDeDados); } else { foreach (Atividade atividade in lstTituloAtividades) { if (atividadeBus.VerificarDeferir(atividade, bancoDeDados)) { atividade.SituacaoId = (int)eAtividadeSituacao.Deferida; atividadeBus.AlterarSituacao(atividade, bancoDeDados); } } } } } #endregion #region Título Encerrado if (titulo.Situacao.Id == (int)eTituloSituacao.Encerrado) //Encerrado { lstTituloAtividades = tituloBus.ObterAtividades(titulo.Id); eAtividadeSituacao situacaoAtual = eAtividadeSituacao.EmAndamento; if (lstTituloAtividades != null && lstTituloAtividades.Count > 0) { foreach (Atividade atividade in lstTituloAtividades) { situacaoAtual = (eAtividadeSituacao)atividadeBus.ObterAtividadeSituacao(atividade, bancoDeDados).SituacaoId; if (situacaoAtual == eAtividadeSituacao.Indeferida || situacaoAtual == eAtividadeSituacao.ComPendencia) { atividade.SituacaoId = (int)eAtividadeSituacao.EmAndamento; atividadeBus.AlterarSituacao(atividade, bancoDeDados); } else { if (titulo.MotivoEncerramentoId == 1 || titulo.MotivoEncerramentoId == 4) { atividade.SituacaoId = (int)eAtividadeSituacao.EmAndamento; atividadeBus.AlterarSituacao(atividade, bancoDeDados); } else if (atividadeBus.VerificarEncerrar(atividade, bancoDeDados)) { atividade.SituacaoId = (int)eAtividadeSituacao.Encerrada; atividadeBus.AlterarSituacao(atividade, bancoDeDados); } } } } } #endregion #region Título Prorrogado if (titulo.Situacao.Id == (int)eTituloSituacao.Prorrogado) //6 - Prorrogar { lstTituloAtividades = tituloBus.ObterAtividades(titulo.Id); if (lstTituloAtividades != null && lstTituloAtividades.Count > 0) { if (LstModeloCodigoPendencia.Any(x => x == titulo.Modelo.Codigo) || LstModeloCodigoIndeferido.Any(x => x == titulo.Modelo.Codigo)) { eAtividadeSituacao atividadeSituacao = (LstModeloCodigoPendencia.Any(x => x == titulo.Modelo.Codigo)) ? eAtividadeSituacao.ComPendencia : eAtividadeSituacao.Indeferida; atividadeBus.AlterarSituacao(lstTituloAtividades, atividadeSituacao, bancoDeDados); } else { int finalidade = _da.VerificarEhTituloAnterior(titulo); if (finalidade > 0) { eAtividadeSituacao atividadeSituacao = (finalidade == 1) ? eAtividadeSituacao.NovaFase : eAtividadeSituacao.EmRenovacao; atividadeBus.AlterarSituacao(lstTituloAtividades, atividadeSituacao, bancoDeDados); } else { foreach (Atividade atividade in lstTituloAtividades) { if (atividadeBus.VerificarDeferir(atividade, bancoDeDados)) { atividade.SituacaoId = (int)eAtividadeSituacao.Deferida; atividadeBus.AlterarSituacao(atividade, bancoDeDados); continue; } //Voltar a situação default de andamento atividade.SituacaoId = (int)eAtividadeSituacao.EmAndamento; atividadeBus.AlterarSituacao(atividade, bancoDeDados); } } } } } #endregion #endregion #region Gerar Pdf de Titulo ArquivoBus arqBus = new ArquivoBus(eExecutorTipo.Interno); if (isGerarPdf && titulo.Modelo.Regra(eRegra.PdfGeradoSistema)) { TituloBus bus = new TituloBus(); titulo.ArquivoPdf.Nome = "Titulo.pdf"; titulo.ArquivoPdf.Extensao = ".pdf"; titulo.ArquivoPdf.ContentType = "application/pdf"; titulo.ArquivoPdf.Buffer = bus.GerarPdf(titulo, bancoDeDados); if (titulo.ArquivoPdf.Buffer != null) { arqBus.Salvar(titulo.ArquivoPdf); ArquivoDa _arquivoDa = new ArquivoDa(); _arquivoDa.Salvar(titulo.ArquivoPdf, User.EtramiteIdentity.FuncionarioId, User.EtramiteIdentity.Name, User.EtramiteIdentity.Login, (int)eExecutorTipo.Interno, User.EtramiteIdentity.FuncionarioTid, bancoDeDados); _da.SalvarPdfTitulo(titulo, bancoDeDados); } } #endregion #region Análise de Item //Trava a Análise de item de processo/documento caso o titulo que está sendo alterado seja um de pendência if (titulo.Atividades != null && titulo.Atividades.Count > 0) { Protocolo protocolo = titulo.Atividades.First().Protocolo; AnaliseItem analise = _busAnalise.Obter(protocolo); if (analise != null && analise.Id > 0) { if (_busTitulo.ExisteTituloPendencia(protocolo, bancoDeDados)) { if (analise.Situacao == 1) // 1 - Em andamento { analise.Situacao = 2; // 2 - Com Pendência _busAnalise.AlterarSituacao(analise, bancoDeDados); } } else if (analise.Situacao == 2) { analise.Situacao = 1; _busAnalise.AlterarSituacao(analise, bancoDeDados); } } } #endregion #region Gerar/Enviar Email #region Gerar Email Email email = null; if (titulo.Situacao.Id == (int)eTituloSituacao.Concluido && titulo.Modelo.Regra(eRegra.EnviarEmail)) //3 - Concluido { if (titulo.Modelo.Resposta(eRegra.EnviarEmail, eResposta.TextoEmail).Valor != null) { string textoEmail = titulo.Modelo.Resposta(eRegra.EnviarEmail, eResposta.TextoEmail).Valor.ToString(); if (!String.IsNullOrWhiteSpace(textoEmail)) { Dictionary <String, String> emailKeys = new Dictionary <string, string>(); emailKeys.Add("[orgão sigla]", _configSys.Obter <String>(ConfiguracaoSistema.KeyOrgaoSigla)); emailKeys.Add("[data da conclusão]", titulo.Modelo.Regra(eRegra.Prazo) ? titulo.DataInicioPrazo.DataTexto : titulo.DataEmissao.DataTexto); emailKeys.Add("[nome do modelo]", titulo.Modelo.Nome); emailKeys.Add("[nome do subtipo]", titulo.Modelo.SubTipo); emailKeys.Add("[nº do título]", titulo.Numero.Texto); emailKeys.Add("[nº processo/documento do título]", titulo.Protocolo.Numero); emailKeys.Add("[nome do empreendimento]", titulo.EmpreendimentoTexto); foreach (string key in emailKeys.Keys) { textoEmail = textoEmail.Replace(key, emailKeys[key]); } email = new Email(); email.Assunto = _configSys.Obter <String>(ConfiguracaoSistema.KeyOrgaoSigla); email.Texto = textoEmail; email.Tipo = eEmailTipo.TituloConcluir; email.Codigo = titulo.Id; } } } #endregion if (email != null) { List <String> lstEmail = _da.ObterEmails(titulo.Id, bancoDeDados); if (lstEmail != null && lstEmail.Count > 0) { email.Destinatario = String.Join(", ", lstEmail.ToArray()); if (titulo.Modelo.Regra(eRegra.AnexarPDFTitulo)) { email.Anexos.Add(titulo.ArquivoPdf); } EmailBus emailBus = new EmailBus(); emailBus.Enviar(email, bancoDeDados); } } #endregion #region [ Solicitação CAR ] if (LstCadastroAmbientalRuralTituloCodigo.Any(x => x == titulo.Modelo.Codigo)) { if (titulo.Situacao.Id == (int)eTituloSituacao.Concluido) { //Interno List <int> situacoes = new List <int>() { (int)eCARSolicitacaoSituacao.EmCadastro, (int)eCARSolicitacaoSituacao.Pendente, (int)eCARSolicitacaoSituacao.Valido, (int)eCARSolicitacaoSituacao.Suspenso }; CARSolicitacao solicitacao = _busCARSolicitacao.ObterPorEmpreendimento(titulo.EmpreendimentoId.GetValueOrDefault(0), situacoes, false, bancoDeDados) ?? new CARSolicitacao(); if (solicitacao != null && solicitacao.Id > 0) { solicitacao.SituacaoId = (int)eCARSolicitacaoSituacao.SubstituidoPeloTituloCAR; solicitacao.DataSituacao.Data = DateTime.Now; _busCARSolicitacao.AlterarSituacao(solicitacao, bancoDeDados, mostrarMsg: false); } else { //Credenciado _busCARSolicitacao.SubstituirPorTituloCARCredenciado(titulo.EmpreendimentoId.GetValueOrDefault(0), bancoDeDados); } } if (titulo.Situacao.Id == (int)eTituloSituacao.Encerrado) { List <int> situacoes = new List <int>() { (int)eCARSolicitacaoSituacao.SubstituidoPeloTituloCAR }; CARSolicitacao solicitacao = _busCARSolicitacao.ObterPorEmpreendimento(titulo.EmpreendimentoId.GetValueOrDefault(0), situacoes, false, bancoDeDados) ?? new CARSolicitacao(); if (solicitacao != null && solicitacao.Id > 0) { solicitacao.SituacaoAnteriorId = solicitacao.SituacaoId; solicitacao.DataSituacaoAnterior = solicitacao.DataSituacao; solicitacao.SituacaoId = (int)eCARSolicitacaoSituacao.Valido; solicitacao.DataSituacao.Data = DateTime.Now; _busCARSolicitacao.AlterarSituacao(solicitacao, bancoDeDados, mostrarMsg: false); } else { //Credenciado Empreendimento empreendimento = new EmpreendimentoBus().ObterSimplificado(titulo.EmpreendimentoId.GetValueOrDefault(0)); CARSolicitacaoCredenciadoBus carSolicitacaoCredBus = new CARSolicitacaoCredenciadoBus(); CARSolicitacao carSolicitacaoCred = new CARSolicitacao(); carSolicitacaoCred.Empreendimento.Codigo = empreendimento.Codigo; carSolicitacaoCredBus.AlterarSituacao(carSolicitacaoCred, new CARSolicitacao() { SituacaoId = (int)eCARSolicitacaoSituacao.Valido }); } } //SE situacao == Encerrado //TODO:Mudar Situação para Válido } #endregion if (!Validacao.EhValido) { bancoDeDados.Rollback(); return; } #region Salvar A especificidade if (EspecificiadadeBusFactory.Possui(titulo.Modelo.Codigo.GetValueOrDefault())) { IEspecificidadeBus busEsp = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.GetValueOrDefault()); titulo.Especificidade = busEsp.Obter(titulo.Id) as Especificidade; titulo.Especificidade = titulo.ToEspecificidade(); busEsp.Salvar(titulo.Especificidade, bancoDeDados); List <DependenciaLst> lstDependencias = busEsp.ObterDependencias(titulo.Especificidade); if (isGerarPdf && lstDependencias != null && lstDependencias.Count > 0) { if (!lstDependencias.Exists(x => x.TipoId == (int)eTituloDependenciaTipo.Caracterizacao && x.DependenciaTipo == (int)eCaracterizacao.Dominialidade)) { lstDependencias.Add(new DependenciaLst() { TipoId = (int)eTituloDependenciaTipo.Caracterizacao, DependenciaTipo = (int)eCaracterizacao.Dominialidade }); } _da.Dependencias(titulo.Id, titulo.Modelo.Id, titulo.EmpreendimentoId.GetValueOrDefault(), lstDependencias); } } #endregion #region Histórico eHistoricoAcao eAcao; switch ((eAlterarSituacaoAcao)acao) { case eAlterarSituacaoAcao.EmitirParaAssinatura: eAcao = eHistoricoAcao.emitir; break; case eAlterarSituacaoAcao.CancelarEmissao: eAcao = eHistoricoAcao.cancelaremissao; break; case eAlterarSituacaoAcao.Assinar: eAcao = eHistoricoAcao.assinar; break; case eAlterarSituacaoAcao.Prorrogar: eAcao = eHistoricoAcao.prorrogar; break; case eAlterarSituacaoAcao.Encerrar: eAcao = eHistoricoAcao.encerrar; break; case eAlterarSituacaoAcao.Entregar: eAcao = eHistoricoAcao.entregar; break; default: eAcao = eHistoricoAcao.emitir; break; } _da.Historico.Gerar(titulo.Id, eHistoricoArtefato.titulo, eAcao, bancoDeDados); _da.Consulta.Gerar(titulo.Id, eHistoricoArtefato.titulo, bancoDeDados); #region Solicitacao CAR if (LstCadastroAmbientalRuralTituloCodigo.Any(x => x == titulo.Modelo.Codigo.GetValueOrDefault())) { if (titulo.Situacao.Id != (int)eTituloSituacao.Concluido) { _da.Consulta.Deletar(titulo.Id, eHistoricoArtefato.carsolicitacaotitulo, bancoDeDados); } else { _da.Consulta.Gerar(titulo.Id, eHistoricoArtefato.carsolicitacaotitulo, bancoDeDados); } } #endregion #endregion bancoDeDados.Commit(); Validacao.Add(Mensagem.TituloAlterarSituacao.TituloAltSituacaoSucesso); } }
public bool Salvar(Documento documento) { try { documento.Emposse.Id = User.FuncionarioId; if (documento.Arquivo == null) { documento.Arquivo = new Arquivo(); } bool isEdicao = (documento.Id > 0); if (_validar.Salvar(documento)) { #region Arquivos/Diretorio if (documento.Arquivo.Id != null && documento.Arquivo.Id == 0) { ArquivoBus _busArquivo = new ArquivoBus(eExecutorTipo.Interno); documento.Arquivo = _busArquivo.Copiar(documento.Arquivo); } #endregion #region Setar Valores ListaBus listaBus = new ListaBus(); ProtocoloTipo configuracao = listaBus.TiposDocumento.FirstOrDefault(x => x.Id == documento.Tipo.Id); documento.ProtocoloAssociado = (configuracao.PossuiProcesso || configuracao.ProcessoObrigatorio) ? documento.ProtocoloAssociado : new Protocolo(); documento.ChecagemPendencia = (configuracao.PossuiChecagemPendencia || configuracao.ChecagemPendenciaObrigatorio) ? documento.ChecagemPendencia : new ChecagemPendencia(); documento.ChecagemRoteiro = (configuracao.PossuiChecagemRoteiro || configuracao.ChecagemRoteiroObrigatorio) ? documento.ChecagemRoteiro : new ChecagemRoteiro(); documento.Requerimento = (configuracao.PossuiRequerimento || configuracao.RequerimentoObrigatorio) ? documento.Requerimento : new Requerimento(); #endregion GerenciadorTransacao.ObterIDAtual(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia()) { bancoDeDados.IniciarTransacao(); #region Arquivos/Banco if (documento.Arquivo.Id == 0) { ArquivoDa _arquivoDa = new ArquivoDa(); _arquivoDa.Salvar(documento.Arquivo, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados); } #endregion ChecagemPendenciaBus _checagemPendenciaBus = new ChecagemPendenciaBus(); using (BancoDeDados bancoDeDadosCredenciado = BancoDeDados.ObterInstancia(UsuarioCredenciado)) { bancoDeDadosCredenciado.IniciarTransacao(); #region Alterar Situacao Requerimento if (documento.Id.HasValue) { Documento docOriginal = _da.ObterSimplificado(documento.Id.Value) as Documento; docOriginal.Requerimento = _busRequerimento.ObterSimplificado(docOriginal.Requerimento.Id); if (docOriginal.Requerimento.Id != documento.Requerimento.Id) { AlterarRequerimentoSituacao(docOriginal, banco: bancoDeDados); if (docOriginal.Requerimento.IsRequerimentoDigital) { CARSolicitacaoBus carSolicitacaoCredenciadoBus = new CARSolicitacaoBus(); carSolicitacaoCredenciadoBus.DesassociarProtocolo(new CARSolicitacao() { Requerimento = docOriginal.Requerimento }, bancoDeDadosCredenciado); if (!_busProjetoDigital.AlterarSituacao(docOriginal.Requerimento.Id, eProjetoDigitalSituacao.AguardandoProtocolo, bancoDeDadosCredenciado)) { bancoDeDados.Rollback(); return(false); } } } } #endregion Documento documentoOriginal = new Documento(); if (documento.Id != null && documento.Id.GetValueOrDefault() > 0) { documentoOriginal = ObterSimplificado(documento.Id.Value); } #region Titulo if (documento.ChecagemPendencia.Id > 0 && documento.Id.GetValueOrDefault() == 0) { documento.ChecagemPendencia = _checagemPendenciaBus.Obter(documento.ChecagemPendencia.Id); TituloBus tituloBus = new TituloBus(); Titulo titulo = tituloBus.Obter(documento.ChecagemPendencia.TituloId); if (titulo.Situacao.Id != 5) //5 - Encerrado { titulo.DataEncerramento.Data = DateTime.Now; titulo.MotivoEncerramentoId = 7; //Encerrado TituloSituacaoBus tituloSituacaoBus = new TituloSituacaoBus(); tituloSituacaoBus.AlterarSituacao(titulo, (int)eAlterarSituacaoAcao.Encerrar, bancoDeDados); if (Validacao.EhValido) { Validacao.Erros.Clear(); } } #region Itens da Analise AnaliseItensBus busAnalise = new AnaliseItensBus(new AnaliseItensValidar()); AnaliseItem analiseItem = busAnalise.ObterAnaliseTitulo(documento.ChecagemPendencia.TituloId); analiseItem = busAnalise.Obter(analiseItem.Id, bancoDeDados); //int setorId = _busProc.ObterSetor(analiseItem.Protocolo.Id); foreach (Item item in analiseItem.Itens) { if (documento.ChecagemPendencia.Itens.Exists(x => x.Id == item.Id)) { item.Analista = User.Name; item.Situacao = (int)eAnaliseItemSituacao.Recebido; item.Motivo = String.Empty; item.Recebido = true; item.Editado = true; //item.SetorId = setorId; item.DataAnalise = DateTime.Now.ToString(); } } AnaliseItensDa _daAnalise = new AnaliseItensDa(); _daAnalise.Salvar(analiseItem, bancoDeDados); #endregion } #endregion #region Atividade List <Atividade> lstAtividadesAtual = null; if ((documento.Id ?? 0) > 0) { lstAtividadesAtual = _da.ObterAtividades(documento.Id.GetValueOrDefault(), bancoDeDados).Atividades; } if (documento.Atividades != null && documento.Atividades.Count > 0) { documento.Atividades.ForEach(x => { x.Protocolo.Id = documento.Id.GetValueOrDefault(); x.Protocolo.IsProcesso = false; }); AtividadeBus atividadeBus = new AtividadeBus(); atividadeBus.AlterarSituacaoProcDoc(documento.Atividades, lstAtividadesAtual, bancoDeDados); atividadeBus.TituloAnteriores(documento.Atividades, lstAtividadesAtual, bancoDeDados); } #endregion _da.Salvar(documento, bancoDeDados); #region Checagens // cadastrando, seta situação da checagem de itens de roteiro/pendencia como protocolada if (documentoOriginal.Id.GetValueOrDefault() <= 0) { _busCheckList.AlterarSituacao(documento.ChecagemRoteiro.Id, 2, bancoDeDados); //protocolada documento.ChecagemPendencia.SituacaoId = 2; //protocolada _checagemPendenciaBus.AlterarSituacao(documento.ChecagemPendencia, bancoDeDados); } else // editando documento { // se checagem de itens de roteiro foi alterada, setar o status da antiga como finalizada e setar o status da nova como protocolada if (documento.ChecagemRoteiro.Id != documentoOriginal.ChecagemRoteiro.Id) { _busCheckList.AlterarSituacao(documentoOriginal.ChecagemRoteiro.Id, 1, bancoDeDados); //finalizada _busCheckList.AlterarSituacao(documento.ChecagemRoteiro.Id, 2, bancoDeDados); //protocolada } } #endregion documento.Requerimento = _busRequerimento.ObterSimplificado(documento.Requerimento.Id); if (documento.Requerimento.IsRequerimentoDigital) { CARSolicitacaoBus carSolicitacaoCredenciadoBus = new CARSolicitacaoBus(); carSolicitacaoCredenciadoBus.AssociarProtocolo(new CARSolicitacao() { Requerimento = documento.Requerimento }, bancoDeDadosCredenciado); if (documentoOriginal.Requerimento.Id != documento.Requerimento.Id) { if (!_busProjetoDigital.AlterarSituacao(documento.Requerimento.Id, eProjetoDigitalSituacao.AguardandoAnalise, bancoDeDadosCredenciado)) { bancoDeDados.Rollback(); return(false); } } } AlterarRequerimentoSituacao(documento, 3, bancoDeDados); // Protocolado #region Fiscalizacao if (isEdicao && documento.Fiscalizacao.Id != documentoOriginal.Fiscalizacao.Id && documentoOriginal.Fiscalizacao.Id > 0) { documentoOriginal.Fiscalizacao.SituacaoNovaTipo = (int)eFiscalizacaoSituacao.CadastroConcluido; documentoOriginal.Fiscalizacao.SituacaoNovaData.Data = DateTime.Now; documentoOriginal.Fiscalizacao.SituacaoAtualTipo = documento.Fiscalizacao.SituacaoId; _busFiscalizacao.AlterarSituacaoProcDoc(documentoOriginal.Fiscalizacao, bancoDeDados); } if (documento.Fiscalizacao.Id != documentoOriginal.Fiscalizacao.Id) { documento.Fiscalizacao.SituacaoNovaTipo = (int)eFiscalizacaoSituacao.Protocolado; documento.Fiscalizacao.SituacaoNovaData.Data = DateTime.Now; documento.Fiscalizacao.SituacaoAtualTipo = documento.Fiscalizacao.SituacaoId; _busFiscalizacao.AlterarSituacaoProcDoc(documento.Fiscalizacao, bancoDeDados); } #endregion //sempre no final esse if if (!Validacao.EhValido) { bancoDeDadosCredenciado.Rollback(); bancoDeDados.Rollback(); return(false); } bancoDeDadosCredenciado.Commit(); } bancoDeDados.Commit(); } Mensagem msgSucesso = Mensagem.Documento.Salvar(documento.Numero); if (isEdicao) { msgSucesso = Mensagem.Documento.Editar; } Validacao.Add(msgSucesso); } } catch (Exception exc) { Validacao.AddErro(exc); } return(Validacao.EhValido); }
public virtual void AdicionarEspecificacaoItem(int especificacaoItemId, string descricao, AnaliseItem analiseItem, AnaliseTipo analiseTipo, bool teorAtivo, bool teorNaCl, decimal analiseInicialIhara, decimal analiseFinalIhara, decimal analiseInicialAbnt, decimal analiseFinalAbnt, Especificacao especificacao) { if (PossuiEspecificacaoItem(especificacaoItemId)) { throw new InvalidOperationException("O item de especificação informado já encontra-se na lista de Itens de Especificação"); } var especificacaoItem = new EspecificacaoItem(descricao, analiseItem, analiseTipo, teorAtivo, teorNaCl, analiseInicialIhara, analiseFinalIhara, analiseInicialAbnt, analiseFinalAbnt, especificacao); EspecificacaoItens.Add(especificacaoItem); }
public bool Salvar(AnaliseItem analise, bool atualizarRoteiro = false) { bool finalizar = true; //Validação proposta pela analista if (atualizarRoteiro) { foreach (var item in analise.Itens) { if (item.Situacao == (int)eAnaliseItemSituacao.Recebido || item.Situacao == (int)eAnaliseItemSituacao.Pendente || item.Situacao == (int)eAnaliseItemSituacao.Reprovado) { finalizar = false; break; } } analise.Situacao = finalizar ? (int)eAnaliseSituacao.Finalizado : (int)eAnaliseSituacao.EmAndamento; return(true); } bool isAnalisado = false; AnaliseItem analiseBanco = _daAnalise.ObterSimplificado(analise.Id); if (analiseBanco.Situacao == (int)eAnaliseItemSituacao.Pendente) { Validacao.Add(Mensagem.AnaliseItem.ExistePendencia(analise.Protocolo.Id.HasValue)); } if (!ValidarSituacaoAtividadeProtocolo(analise)) { return(Validacao.EhValido); } if (!_busProtocolo.EmPosse(analise.Protocolo.Id.GetValueOrDefault())) { Validacao.Add(Mensagem.AnaliseItem.ProtocoloSemPosse); return(false); } foreach (var item in analise.Itens) { if (item.Tipo <= 0) { Validacao.Add(Mensagem.AnaliseItem.AnaliseItemTipoObrigatorio); } if (string.IsNullOrWhiteSpace(item.Nome)) { Validacao.Add(Mensagem.AnaliseItem.AnaliseItemNomeObrigatorio); } if (item.Situacao <= (int)eAnaliseItemSituacao.Nulo) { Validacao.Add(Mensagem.AnaliseItem.AnaliseItemSituacaoObrigatorio(item.Nome)); } switch (item.Situacao) { case (int)eAnaliseItemSituacao.Reprovado: case (int)eAnaliseItemSituacao.Dispensado: MotivoItem(item); break; } if (item.Situacao != (int)eAnaliseItemSituacao.Recebido) { isAnalisado = true; } if (item.Situacao == (int)eAnaliseItemSituacao.Recebido || item.Situacao == (int)eAnaliseItemSituacao.Pendente || item.Situacao == (int)eAnaliseItemSituacao.Reprovado) { finalizar = false; } } analise.Situacao = finalizar ? (int)eAnaliseSituacao.Finalizado : (int)eAnaliseSituacao.EmAndamento; if (!isAnalisado) { Validacao.Add(Mensagem.AnaliseItem.ItemAnalisadoObrigatorio); } return(Validacao.EhValido); }