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

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

            if (habilitacao.Pragas == null || habilitacao.Pragas.Count < 1)
            {
                habilitacao = new HabilitarEmissaoCFOCFOCBus().ObterPorCredenciado(habilitacao.Responsavel.Id);
                if (Validacao.EhValido)
                {
                    PragaInternoBus pragaBus = new PragaInternoBus();
                    habilitacao.Pragas.ForEach(x =>
                    {
                        x.Praga.Culturas = pragaBus.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);
        }
Пример #2
0
        public bool ValidarAssociarResponsavelTecnicoHabilitado(EmissaoCFOC entidade)
        {
            #region Configurar

            List <Cultivar> cultivares = new List <Cultivar>();
            foreach (var item in entidade.Produtos)
            {
                cultivares.Add(new Cultivar()
                {
                    CulturaId = item.CulturaId, Id = item.CultivarId
                });
            }

            if (cultivares.Count <= 0)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ProdutoObrigatorio);
                return(false);
            }

            HabilitarEmissaoCFOCFOCBus habilitarEmissaoCFOCFOCBus = new HabilitarEmissaoCFOCFOCBus();
            HabilitarEmissaoCFOCFOC    habilitacao = new HabilitarEmissaoCFOCFOCBus().ObterPorCredenciado(User.FuncionarioId);
            if (Validacao.EhValido)
            {
                PragaInternoBus pragaBus = new PragaInternoBus();
                habilitacao.Pragas.ForEach(x =>
                {
                    x.Praga.Culturas = pragaBus.ObterCulturas(x.Praga.Id);
                });
            }
            else
            {
                return(false);
            }

            #endregion

            if (habilitacao.Id <= 0 || habilitacao.Situacao == (int)eHabilitacaoCFOCFOCSituacao.Inativo)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ResponsavelTecnicoNaoHabilitado);
                return(false);
            }

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

            if (DateTime.Parse(habilitacao.ValidadeRegistro) < DateTime.Today)
            {
                Validacao.Add(Mensagem.EmissaoCFOC.ValidadeRegistroMenorAtual);
                return(false);
            }

            foreach (var item in entidade.Pragas)
            {
                if (!habilitacao.Pragas.Exists(y => y.Praga.Id == item.Id))
                {
                    Validacao.Add(Mensagem.EmissaoCFOC.PragaNaoAssociadaHabilitacao(item.NomeCientifico, item.NomeComum));
                    return(false);
                }
            }

            List <string> aux = new List <string>();
            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)
                        {
                            if (!aux.Any(a => a == cultivarItem.Nome))
                            {
                                aux.Add(cultivarItem.Nome);
                            }
                        }
                    }
                }
            }

            if (aux.Count > 0)
            {
                if ((eDocumentoFitossanitarioTipoNumero)entidade.TipoNumero == eDocumentoFitossanitarioTipoNumero.Bloco)
                {
                    Validacao.Add(Mensagem.EmissaoCFOC.ResponsavelTecnicoHabilitacaoPragaVencidaBloco(Mensagem.Concatenar(aux)));
                }
                else
                {
                    Validacao.Add(Mensagem.EmissaoCFOC.ResponsavelTecnicoHabilitacaoPragaVencidaDigital(Mensagem.Concatenar(aux)));
                }
            }

            return(Validacao.EhValido);
        }