public SobreposicoesVM(Sobreposicoes sobreposicoes, bool mostrarVerificar)
 {
     UltimaVerificacao    = sobreposicoes.DataVerificacaoBanco;
     SobreposicaoIDAF     = sobreposicoes.Itens.Where(x => x.Base == (int)eSobreposicaoBase.IDAF).ToList();
     SobreposicaoGeoBases = sobreposicoes.Itens.Where(x => x.Base == (int)eSobreposicaoBase.GeoBase).ToList();
     MostrarVerificar     = mostrarVerificar;
 }
        public ActionResult VerificarSobreposicao(int projetoId, int tipo)
        {
            Sobreposicoes sobreposicoes = _bus.ObterGeoSobreposiacao(projetoId, (eCaracterizacao)tipo);

            _bus.SalvarSobreposicoes(new ProjetoGeografico()
            {
                Id = projetoId, Sobreposicoes = sobreposicoes
            });

            return(Json(new { @EhValido = Validacao.EhValido, Msg = Validacao.Erros, Sobreposicoes = sobreposicoes }));
        }
        private bool ValidarDataVerificacao(Sobreposicoes sobreposicoes)
        {
            if (string.IsNullOrEmpty(sobreposicoes.DataVerificacao))
            {
                return(false);
            }

            DateTime dataVerificacao = DateTime.ParseExact(sobreposicoes.DataVerificacao, "dd/MM/yyyy - HH:mm", CultureInfo.CurrentCulture.DateTimeFormat);

            if (dataVerificacao < DateTime.Now.AddMinutes(-30d))
            {
                return(false);
            }
            return(true);
        }
示例#4
0
        public Sobreposicoes ObterGeoSobreposiacao(int id, eCaracterizacao tipo)
        {
            Sobreposicoes sobreposicoes = new Sobreposicoes();

            try
            {
                sobreposicoes.DataVerificacao = DateTime.Now.ToString("dd/MM/yyyy - HH:mm", CultureInfo.CurrentCulture.DateTimeFormat);
                #region Empreendimento
                Sobreposicao sobreposicaoEmp = _da.ObterGeoSobreposicaoIdaf(id, tipo);

                if (sobreposicaoEmp == null)
                {
                    sobreposicaoEmp = CriarObjSobreposicao(string.Empty);
                    sobreposicaoEmp.Identificacao = " - ";
                }
                else
                {
                    sobreposicaoEmp.TipoTexto = SobreposicaoTipo.Single(y => y.Id == (int)sobreposicaoEmp.Tipo).Texto;
                }

                sobreposicoes.Itens.Add(sobreposicaoEmp);
                #endregion

                #region Feicoes Geobases
                string ATPWkt = _da.ObterWktATP(id, tipo);
                string urlGeoBasesWebService = _config.Obter <string>(ConfiguracaoSistema.KeyUrlGeoBasesWebServices);
                urlGeoBasesWebService = urlGeoBasesWebService + "/Topologia/Relacao";

                if (String.IsNullOrEmpty(ATPWkt))
                {
                    Validacao.Add(Mensagem.ProjetoGeografico.ATPNaoEncontrada);
                    return(null);
                }

                //teste
                //urlGeoBasesWebService = "http://localhost:33716/Topologia/Relacao";

                List <string> feicoes = new List <string>()
                {
                    "HID_BACIA_HIDROGRAFICA", "LIM_TERRA_INDIGENA", "LIM_UNIDADE_PROTECAO_INTEGRAL", "LIM_UNIDADE_CONSERV_NAO_SNUC", "LIM_OUTRAS_UNID_PROTEGIDAS", "LIM_UNIDADE_USO_SUSTENTAVEL"
                };

                RequestJson request = new RequestJson();
                ResponseJsonData <List <FeicaoJson> > responseData = request.Executar <List <FeicaoJson> >(urlGeoBasesWebService, RequestJson.POST, new { feicoes = feicoes, wkt = ATPWkt });

                if (responseData.Erros != null && responseData.Erros.Count > 0)
                {
                    responseData.Erros.Insert(0, new Mensagem()
                    {
                        Tipo = eTipoMensagem.Erro, Texto = "Erro no WebService GeoBases"
                    });
                    Validacao.Erros.AddRange(responseData.Erros);
                    return(null);
                }

                Sobreposicao sobreposicao = null;

                foreach (var key in feicoes)
                {
                    sobreposicao = CriarObjSobreposicao(key);

                    if (!responseData.Data.Exists(x => x.Nome == key))
                    {
                        sobreposicao.Identificacao = " - ";
                        sobreposicoes.Itens.Add(sobreposicao);
                        continue;
                    }

                    FeicaoJson    feicaoJson = responseData.Data.First(x => x.Nome == key);
                    List <string> lst        = null;

                    if (!feicaoJson.Geometrias.SelectMany(x => x.Atributos).Any(x => x.Nome == "ADMINISTRACAO"))
                    {
                        sobreposicao.Identificacao = String.Join("; ", feicaoJson.Geometrias.SelectMany(x => x.Atributos).Select(x => x.Valor).ToArray());
                    }
                    else
                    {
                        lst = feicaoJson.Geometrias
                              .Select(x => String.Format("{0} - {1}",
                                                         x.Atributos.Single(y => y.Nome == "Nome").Valor,
                                                         x.Atributos.Single(y => y.Nome == "ADMINISTRACAO").Valor)).ToList();
                        sobreposicao.Identificacao = String.Join("; ", lst.ToArray());
                    }

                    sobreposicoes.Itens.Add(sobreposicao);
                }
                #endregion
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }
            return(sobreposicoes);
        }