public List <TituloAssinante> ObterAssinantes(TituloModelo modelo) { try { List <TituloAssinante> lstAssinantes = new List <TituloAssinante>(); foreach (Assinante assinante in modelo.Assinantes) { // Somente responsável pelo setor if (assinante.TipoId == 1) { FuncionarioLst func = _busFuncionario.ObterResponsavelSetor(assinante.SetorId); if (func != null && func.Id > 0 && !lstAssinantes.Exists(x => x.FuncionarioId == func.Id)) { lstAssinantes.Add(new TituloAssinante() { FuncionarioId = func.Id, FuncionarioNome = func.Texto }); } } // Qualquer funcionário do setor else if (assinante.TipoId == 2) { List <FuncionarioLst> funcLst = _busFuncionario.ObterFuncionariosSetor(assinante.SetorId); foreach (FuncionarioLst func in funcLst) { if (!lstAssinantes.Exists(x => x.FuncionarioId == func.Id)) { lstAssinantes.Add(new TituloAssinante() { FuncionarioId = func.Id, FuncionarioNome = func.Texto }); } } } } return(lstAssinantes); } catch (Exception exc) { Validacao.AddErro(exc); } return(null); }
private bool Assinantes(Titulo titulo) { if (titulo == null) { return(false); } //Obrigatoriedade de assinante conforme configuração if (titulo.Modelo.Assinantes != null && titulo.Modelo.Assinantes.Count > 0) { // valida se título deve ter ao menos um assinante Dominio if (titulo.Assinantes != null && titulo.Assinantes.Count() <= 0) { Validacao.Add(Mensagem.Titulo.AssinanteObrigatorio); return(false); } } else { // valida se título deve ter ao menos um assinante Dominio if (titulo.Assinantes != null && titulo.Assinantes.Count() > 0) { Validacao.Add(Mensagem.Titulo.AssinanteDesmarcar); return(false); } //Não há mais validações de assinantes return(true); } List <FuncionarioLst> lstCnfFuncRespSetor = new List <FuncionarioLst>(); FuncionarioLst respSetor = null; foreach (Assinante configAssinante in titulo.Modelo.Assinantes.Where(x => x.TipoId == 1)) { respSetor = _funcionarioBus.ObterResponsavelSetor(configAssinante.SetorId); if (respSetor != null) { lstCnfFuncRespSetor.Add(_funcionarioBus.ObterResponsavelSetor(configAssinante.SetorId)); } } //Validar configuração de regras do modelo. if (lstCnfFuncRespSetor.Count == 0 && titulo.Modelo.Assinantes.Exists(x => x.TipoId == 1)) { Validacao.Add(Mensagem.Titulo.AssinanteSetorSemResponsavel); return(false); } foreach (TituloAssinante assinante in titulo.Assinantes) { //Assinante configurado como Responsavel no modelo if (lstCnfFuncRespSetor.Any(x => x.Id == assinante.FuncionarioId)) { continue; } //Assinante configurado como qualquer funcionario do setor using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia()) { bool noSetor = false; foreach (Assinante configAssinante in titulo.Modelo.Assinantes.Where(x => x.TipoId == 2)) { if (_funcionarioBus.VerificarFuncionarioContidoSetor(assinante.FuncionarioId, configAssinante.SetorId, bancoDeDados)) { noSetor = true; break; } } if (noSetor) { continue; } } Validacao.Add(Mensagem.Titulo.AssinanteInvalidoDesmarcar(_funcionarioBus.Obter(assinante.FuncionarioId).Nome)); } if (titulo.Assinantes != null && titulo.Assinantes.Count > 0) { // valida se há algum assinante sem cargo escolhido foreach (TituloAssinante assinante in titulo.Assinantes) { if (assinante.FuncionarioCargoId <= 0) { Validacao.Add(Mensagem.Titulo.AssinanteCargoObrigatorio); } } } return(Validacao.EhValido); }