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);
        }
Example #2
0
        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);
        }