Example #1
0
        public bool ValidarAssociarResponsavelTecnicoHabilitado(HabilitarEmissaoCFOCFOC habilitacao, List <Cultivar> cultivares)
        {
            #region Configurar

            cultivares = cultivares ?? new List <Cultivar>();

            if (habilitacao.Pragas == null || habilitacao.Pragas.Count < 1)
            {
                habilitacao = _caracterizacaoBus.ObterHabilitacaoPorCredenciado(habilitacao.Responsavel.Id);
                if (Validacao.EhValido)
                {
                    habilitacao.Pragas.ForEach(x =>
                    {
                        x.Praga.Culturas = _caracterizacaoBus.ObterCulturas(x.Praga.Id);
                    });
                }
                else
                {
                    return(false);
                }
            }

            #endregion

            if (habilitacao.Situacao == (int)eHabilitacaoCFOCFOCSituacao.Inativo)
            {
                Validacao.Add(Mensagem.UnidadeConsolidacao.HabilitacaoInativa);
                return(false);
            }

            if (!habilitacao.Pragas.SelectMany(p => p.Praga.Culturas).ToList().Exists(c => cultivares.Exists(x => x.CulturaId == c.Id)))
            {
                Validacao.Add(Mensagem.UnidadeConsolidacao.ResponsavelTecnicoNaoHabilitadoParaCultura);
                return(false);
            }

            foreach (var habPraga in habilitacao.Pragas)
            {
                foreach (var cultivarItem in habPraga.Praga.Culturas.SelectMany(x => x.LstCultivar))
                {
                    foreach (var item in cultivares)
                    {
                        if (cultivarItem.Id == item.Id && DateTime.Parse(habPraga.DataFinalHabilitacao) < DateTime.Today)
                        {
                            Validacao.Add(Mensagem.UnidadeConsolidacao.ResponsavelTecnicoHabilitacaoPragaVencida);
                            return(false);
                        }
                    }
                }
            }

            return(Validacao.EhValido);
        }