public TituloModelo ObterModelo(int modeloId) { return(_busModelo.Obter(modeloId)); }
public void Salvar(Titulo titulo) { try { titulo.Autor = new Funcionario() { Id = User.FuncionarioId }; titulo.CredenciadoId = User.FuncionarioId; if (titulo.Id <= 0) { titulo.Situacao.Id = (int)eTituloSituacao.EmCadastro; titulo.DataCriacao.Data = DateTime.Now; } if (titulo.Modelo.Regra(eRegra.NumeracaoAutomatica)) { titulo.Numero.Inteiro = null; titulo.Numero.Ano = null; } //Carrega o Modelo e suas regras do modelo titulo.Modelo = _busModelo.Obter(titulo.Modelo.Id); IEspecificidadeBus busEsp = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.GetValueOrDefault()); string jsonEsp = (titulo.Especificidade != null) ? titulo.Especificidade.Json : null; titulo.Especificidade = (Especificidade)busEsp.Deserialize(jsonEsp); titulo.Especificidade = titulo.ToEspecificidade(); //Delega a validação de especificidade _validar.ValidarEspecificidade = () => { busEsp.Validar.Salvar(titulo.Especificidade); }; if (_validar.Salvar(titulo)) { #region Arquivos/Diretorio ArquivoBus _busArquivo = new ArquivoBus(eExecutorTipo.Interno); if (!titulo.Modelo.Regra(eRegra.PdfGeradoSistema) && titulo.ArquivoPdf.Id == 0) { titulo.ArquivoPdf = _busArquivo.Copiar(titulo.ArquivoPdf); } if (titulo.Anexos != null && titulo.Anexos.Count > 0) { foreach (Anexo anexo in titulo.Anexos) { if (anexo.Arquivo.Id == 0) { anexo.Arquivo = _busArquivo.Copiar(anexo.Arquivo); } } } #endregion using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia()) { GerenciadorTransacao.ObterIDAtual(); bancoDeDados.IniciarTransacao(); #region Arquivos/Banco ArquivoDa arquivoDa = new ArquivoDa(); if (!titulo.Modelo.Regra(eRegra.PdfGeradoSistema)) { arquivoDa.Salvar(titulo.ArquivoPdf, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados); } if (titulo.Anexos != null && titulo.Anexos.Count > 0) { foreach (Anexo anexo in titulo.Anexos) { if (anexo.Arquivo.Id == 0) { arquivoDa.Salvar(anexo.Arquivo, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados); } } } #endregion _da.Salvar(titulo, bancoDeDados); //Atualiza os Ids em Especificidade titulo.Especificidade = titulo.ToEspecificidade(); busEsp.Salvar(titulo.Especificidade, bancoDeDados); //Trata quando o catch do busEsp.Salvar silencia o erro. if (!Validacao.EhValido) { return; } bancoDeDados.Commit(); } Validacao.Add(Mensagem.Titulo.Salvar); } } catch (Exception exc) { Validacao.AddErro(exc); } }