예제 #1
0
        public List <ArquivoProjeto> ObterArquivosOrtofotoWebService(ProjetoGeografico projeto)
        {
            List <ArquivoProjeto> arquivosOrtofotos = new List <ArquivoProjeto>();

            try
            {
                RequestJson requestJson = new RequestJson();

                GerenciadorConfiguracao <ConfiguracaoSistema> _config = new GerenciadorConfiguracao <ConfiguracaoSistema>(new ConfiguracaoSistema());
                string urlGeoBasesWebService = _config.Obter <string>(ConfiguracaoSistema.KeyUrlGeoBasesWebServices);
                string geoBasesChave         = _config.Obter <string>(ConfiguracaoSistema.KeyGeoBasesWebServicesAutencicacaoChave);

                ResponseJsonData <dynamic> resp = requestJson.Executar <dynamic>(urlGeoBasesWebService + "/Autenticacao/LogOn", RequestJson.GET, new { chaveAutenticacao = geoBasesChave });

                if (resp.Erros != null && resp.Erros.Count > 0)
                {
                    Validacao.Erros.AddRange(resp.Erros);
                    return(null);
                }

                string mbrWkt = String.Format("POLYGON (({0} {1}, {2} {1}, {2} {3}, {0} {3}, {0} {1}))",
                                              projeto.MenorX.ToString(NumberFormatInfo.InvariantInfo),
                                              projeto.MenorY.ToString(NumberFormatInfo.InvariantInfo),
                                              projeto.MaiorX.ToString(NumberFormatInfo.InvariantInfo),
                                              projeto.MaiorY.ToString(NumberFormatInfo.InvariantInfo));

                resp = requestJson.Executar <dynamic>(urlGeoBasesWebService + "/Ortofoto/ObterOrtofoto", RequestJson.POST, new { wkt = mbrWkt });

                if (resp.Erros != null && resp.Erros.Count > 0)
                {
                    Validacao.Erros.AddRange(resp.Erros);
                    return(null);
                }

                foreach (var item in resp.Data)
                {
                    arquivosOrtofotos.Add(new ArquivoProjeto()
                    {
                        Nome = Path.GetFileName(item["ArquivoNome"]), Caminho = item["ArquivoNome"], Chave = item["ArquivoChave"], ChaveData = Convert.ToDateTime(item["ArquivoChaveData"])
                    });
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(arquivosOrtofotos);
        }
        public Mensagem VerificarLocalizacaoEmpreendimento(string easting, string northing, int estadoID, int municipioID)
        {
            RequestJson requestJson             = new RequestJson();
            ResponseJsonData <dynamic> resposta = new ResponseJsonData <dynamic>();
            Municipio municipioCoordenada       = new Municipio();

            resposta = requestJson.Executar <dynamic>(_configCoordenada.Obter <String>(ConfiguracaoCoordenada.KeyUrlObterMunicipioCoordenada) + "?easting=" + easting + "&northing=" + northing);

            if (estadoID != 8 && !Convert.ToBoolean(resposta.Data["EstaNoEstado"]))
            {
                return(new Mensagem());
            }

            if (Convert.ToBoolean(resposta.Data["EstaNoEstado"]))
            {
                municipioCoordenada = new ListaValoresDa().ObterMunicipio(Convert.ToInt32(resposta.Data["Municipio"]["IBGE"]));
            }

            if (municipioCoordenada.Id != municipioID)
            {
                return(Msg.MunicipioEmpreendimentoDiferenteResponsavel);
            }

            if (estadoID != 8 && Convert.ToBoolean(resposta.Data["EstaNoEstado"]))
            {
                return(Msg.MunicipioEmpreendimentoDiferenteResponsavel);
            }

            if (estadoID == 8 && !Convert.ToBoolean(resposta.Data["EstaNoEstado"]))
            {
                return(Msg.MunicipioEmpreendimentoDiferenteResponsavel);
            }

            return(new Mensagem());
        }
예제 #3
0
        public string ObterUrlDemonstrativo(int solicitacaoId, int schemaSolicitacao, bool isTitulo)
        {
            var urlGerar = _da.ObterUrlGeracaoDemonstrativo(solicitacaoId, schemaSolicitacao, isTitulo) ?? "";

            if (String.IsNullOrWhiteSpace(urlGerar))
            {
                return(null);
            }

            RequestJson requestJson = new RequestJson();

            urlGerar = "http://www.car.gov.br/pdf/demonstrativo/" + urlGerar + "/gerar";
            //urlGerar = "http://homolog-car.mma.gov.br/pdf/demonstrativo/" + urlGerar + "/gerar";

            var strResposta = requestJson.Executar(urlGerar);

            var resposta = requestJson.Deserializar <dynamic>(strResposta);

            if (resposta["status"] != "s")
            {
                return(string.Empty);
            }

            return(UrlSICAR + resposta["dados"]);             // PRODUCAO
            //return "http://homolog-car.mma.gov.br" + resposta["dados"]; // HOMOLOG
        }
        public ResponseJsonData <dynamic> ObterEstadosMunicipiosPorCoordenada(String easting, String northing)
        {
            //CrossDomain case
            RequestJson requestJson             = new RequestJson();
            ResponseJsonData <dynamic> resposta = new ResponseJsonData <dynamic>();

            try
            {
                resposta = requestJson.Executar <dynamic>(_configCoordenada.Obter <String>(ConfiguracaoCoordenada.KeyUrlObterMunicipioCoordenada) + "?easting=" + easting + "&northing=" + northing);

                if (resposta.Erros != null && resposta.Erros.Count > 0)
                {
                    Validacao.Erros.AddRange(resposta.Erros);
                }

                var objJson = resposta.Data;
                if (objJson["EstaNoEstado"] && (objJson["Municipio"] == null || Convert.ToInt32(objJson["Municipio"]["IBGE"] ?? 0) == 0))
                {
                    Validacao.Add(Mensagem.Mapas.MunicipioSemRetorno);
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(resposta);
        }
예제 #5
0
        public string ObterUrlRecibo(int solicitacaoId, int schemaSolicitacao)
        {
            var urlGerar = _da.ObterUrlGeracaoRecibo(solicitacaoId, schemaSolicitacao);

            RequestJson requestJson = new RequestJson();

            var strResposta = requestJson.Executar(urlGerar);

            var resposta = requestJson.Deserializar <dynamic>(strResposta);

            if (resposta["status"] != "s")
            {
                return(string.Empty);
            }

            return(UrlSICAR + resposta["dados"]);
        }
예제 #6
0
        public string ObterUrlRecibo(int solicitacaoId, int schemaSolicitacao)
        {
            var urlGerar = _da.ObterUrlGeracaoRecibo(solicitacaoId, schemaSolicitacao);

            RequestJson requestJson = new RequestJson();

            var strResposta = requestJson.Executar(urlGerar);

            var resposta = requestJson.Deserializar <dynamic>(strResposta);

            if (resposta["status"] != "s")
            {
                return(string.Empty);
            }

            return(UrlSICAR + resposta["dados"]);             // PRODUCAO
            //return "http://homolog-car.mma.gov.br" + resposta["dados"]; // HOMOLOG
        }
        public String GetGeoInfo(Coordenada coordenada)
        {
            RequestJson requestJson             = new RequestJson();
            ResponseJsonData <dynamic> resposta = new ResponseJsonData <dynamic>();

            String webServiceHost = _configCoord.Obter <String>(ConfiguracaoCoordenada.KeyUrlObterMunicipioCoordenada);
            String webServiceUri  = new StringBuilder()
                                    .Append(webServiceHost)
                                    .Append("?easting=")
                                    .Append(coordenada.EastingUtm)
                                    .Append("&northing=")
                                    .Append(coordenada.NorthingUtm)
                                    .ToString();

            resposta = requestJson.Executar <dynamic>(webServiceUri);

            return(resposta.Data);
        }
예제 #8
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);
        }
        public bool Salvar(UnidadeProducao caracterizacao)
        {
            try
            {
                if (!_validar.Salvar(caracterizacao))
                {
                    return(Validacao.EhValido);
                }

                #region Configurar Salvar

                Municipio municipio = _da.ObterMunicipioPropriedade(caracterizacao.Empreendimento.Id);

                if (!caracterizacao.PossuiCodigoPropriedade)
                {
                    if (caracterizacao.Id < 1)
                    {
                        int sequencial = _da.ObterSequenciaCodigoPropriedade();

                        caracterizacao.CodigoPropriedade = UnidadeProducaoGenerator.GerarCodigoPropriedade(municipio.Ibge, sequencial);
                    }
                    else
                    {
                        caracterizacao.CodigoPropriedade = ObterPorEmpreendimento(caracterizacao.Empreendimento.Id, true).CodigoPropriedade;
                    }
                }

                RequestJson requestJson                        = new RequestJson();
                ResponseJsonData <dynamic> resposta            = new ResponseJsonData <dynamic>();
                UnidadeProducao            caracterizacaoBanco = ObterPorEmpreendimento(caracterizacao.Empreendimento.Id);

                int ultimoCodigoUP = _da.ObterUltimoCodigoUP(caracterizacao.Empreendimento.Id);
                foreach (long item in caracterizacao.UnidadesProducao.Where(x => x.PossuiCodigoUP).Select(x => x.CodigoUP))
                {
                    int aux = Convert.ToInt32(item.ToString().Substring(14));
                    if (aux > ultimoCodigoUP)
                    {
                        ultimoCodigoUP = aux;
                    }
                }

                foreach (UnidadeProducaoItem item in caracterizacao.UnidadesProducao)
                {
                    int codigoIbge = 0;
                    resposta = requestJson.Executar <dynamic>(_configCoord.Obter <String>(ConfiguracaoCoordenada.KeyUrlObterMunicipioCoordenada) + "?easting=" + item.Coordenada.EastingUtm + "&northing=" + item.Coordenada.NorthingUtm);

                    if (resposta.Erros != null && resposta.Erros.Count > 0)
                    {
                        Validacao.Erros.AddRange(resposta.Erros);
                        return(Validacao.EhValido);
                    }

                    if (resposta.Data == null)
                    {
                        throw new Exception(Mensagem.Empreendimento.ErroConexaoMunicipioGeobases.ToString());
                    }

                    var objJson = resposta.Data;
                    if (objJson["EstaNoEstado"] && (objJson["Municipio"] == null || Convert.ToInt32(objJson["Municipio"]["IBGE"] ?? 0) == 0))
                    {
                        Validacao.Add(Mensagem.Mapas.MunicipioSemRetorno);
                    }

                    if (!Validacao.EhValido)
                    {
                        return(Validacao.EhValido);
                    }

                    if (objJson["Municipio"] != null)
                    {
                        codigoIbge = Convert.ToInt32(objJson["Municipio"]["IBGE"] ?? 0);
                    }

                    ListaValoresDa listaValoresDa = new ListaValoresDa();
                    item.Municipio = listaValoresDa.ObterMunicipio(codigoIbge);

                    if (!item.PossuiCodigoUP)
                    {
                        item.AnoAbertura = DateTime.Today.Year.ToString().Substring(2);

                        if (item.Id < 1)
                        {
                            ultimoCodigoUP++;

                            item.CodigoUP = UnidadeProducaoGenerator.GerarCodigoUnidadeProducao(
                                item.Municipio.Ibge
                                , caracterizacao.CodigoPropriedade
                                , item.AnoAbertura
                                , ultimoCodigoUP
                                );
                        }
                        else
                        {
                            item.CodigoUP = caracterizacaoBanco.UnidadesProducao.Single(x => x.Id == item.Id).CodigoUP;
                        }
                    }
                    else
                    {
                        item.AnoAbertura = item.CodigoUP.ToString().Substring(11, 2);
                    }

                    foreach (var aux in item.ResponsaveisTecnicos)
                    {
                        aux.CFONumero = aux.CFONumero.Split('-').GetValue(0).ToString();
                    }
                }

                #endregion

                if (caracterizacao.UnidadesProducao.Any(x => caracterizacao.UnidadesProducao.Count(y => y.CodigoUP == x.CodigoUP) > 1))
                {
                    Validacao.Add(Mensagem.UnidadeProducao.UnidadeProducaoItemIncorreto);
                    return(false);
                }

                foreach (var item in caracterizacao.UnidadesProducao)
                {
                    if (!UnidadeProducaoGenerator.CodigoUpHasCodigoPropriedade(caracterizacao.CodigoPropriedade, item.CodigoUP))
                    {
                        Validacao.Add(Mensagem.UnidadeProducao.CodigoUPNaoContemCodPropriedade(item.CodigoUP));
                        return(false);
                    }
                }

                GerenciadorTransacao.ObterIDAtual();

                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
                {
                    bancoDeDados.IniciarTransacao();

                    _da.Salvar(caracterizacao, bancoDeDados);

                    Validacao.Add(Mensagem.UnidadeProducao.SalvoSucesso);

                    bancoDeDados.Commit();
                }
            }
            catch (Exception e)
            {
                Validacao.AddErro(e);
            }

            return(Validacao.EhValido);
        }
예제 #10
0
        public JsonResult ObterEstadosMunicipiosPorCoordenada(String easting, String northing)
        {
            //CrossDomain case
            RequestJson requestJson             = new RequestJson();
            ResponseJsonData <dynamic> resposta = new ResponseJsonData <dynamic>();
            List <Estado>    lstEstados         = new List <Estado>();
            List <Municipio> lstMunicipios      = new List <Municipio>();
            Municipio        municipio          = null;

            try
            {
                resposta = requestJson.Executar <dynamic>(_configCoord.Obter <String>(ConfiguracaoCoordenada.KeyUrlObterMunicipioCoordenada) + "?easting=" + easting + "&northing=" + northing);

                if (resposta.Erros != null && resposta.Erros.Count > 0)
                {
                    Validacao.Erros.AddRange(resposta.Erros);
                    return(Json(new { Msg = Validacao.Erros }, JsonRequestBehavior.AllowGet));
                }

                var objJson = resposta.Data;
                if (objJson["EstaNoEstado"] && (objJson["Municipio"] == null || Convert.ToInt32(objJson["Municipio"]["IBGE"] ?? 0) == 0))
                {
                    Validacao.Add(Mensagem.Mapas.MunicipioSemRetorno);
                }

                if (!Validacao.EhValido)
                {
                    return(Json(new { Msg = Validacao.Erros }, JsonRequestBehavior.AllowGet));
                }

                int codigoIbge = 0;
                if (objJson["Municipio"] != null)
                {
                    codigoIbge = Convert.ToInt32(objJson["Municipio"]["IBGE"] ?? 0);
                }

                ListaValoresDa _da = new ListaValoresDa();
                municipio = _da.ObterMunicipio(codigoIbge);

                if (municipio.Estado.Sigla != EstadoDefault)
                {
                    lstEstados    = Estados.Where(x => x.Texto != EstadoDefault).ToList();
                    lstMunicipios = new List <Municipio>();
                }
                else
                {
                    lstEstados    = Estados;
                    lstMunicipios = _configEnd.Obter <Dictionary <int, List <Municipio> > >(ConfiguracaoEndereco.KeyMunicipios)[municipio.Estado.Id];
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(Json(new
            {
                @Msg = Validacao.Erros,
                @Estados = lstEstados,
                @Municipios = lstMunicipios,
                @Municipio = municipio
            }, JsonRequestBehavior.AllowGet));
        }