Exemplo n.º 1
0
        public LocalOcorrenciaViewModel AdicionarEnderecoProduto(AdicionarEnderecoProdutoViewModel model)
        {
            var    retorno = new LocalOcorrenciaViewModel();
            var    segmentos = _servicoCampoDinamicoOpcao.ObterPor("CTRPRODUT", "Padrão", "DL", "Segmento");
            long?  segmentoId = null;
            string cidade = "", estado = "";
            //double latitude, longitude;
            var locaisLista = new List <LocalListaViewModel>();

            var chaveGoogleApi = Chave();

            if (!chaveGoogleApi)
            {
                retorno.ValidationResult.Add(new ValidationError(_chaveGoogleApi));
                return(retorno);
            }

            if (model.ContratoID != null)
            {
                var valorPreenchido = _servicoCampodDinamicoPreenchido.ObterCampoDinamicoPreenchido("CTRPRODUT",
                                                                                                    "Padrão", "Segmento", (long)model.ContratoID);
                if (valorPreenchido != null)
                {
                    segmentoId = valorPreenchido.CamposDinamicosOpcoesId;
                }
            }

            if (model.CidadeId != null)
            {
                var Cidade = _servicoCidade.ObterPorId((long)model.CidadeId);
                if (Cidade != null)
                {
                    cidade = Cidade.Nome;
                    estado = Cidade.Uf;
                }
            }

            var retornoEnderecoGoogleApi = GoogleAPI.ObterLatitudeLongitudePorEndereco(_chaveGoogleApi, model.Cep,
                                                                                       model.Logradouro,
                                                                                       model.Numero, model.Bairro, cidade, estado);

            //latitude = GoogleAPI.ObterLatitudeLongitudePorEndereco(_chaveGoogleApi, model.Cep, model.Logradouro,
            //    model.Numero, model.Bairro, cidade, estado, out longitude);


            if (retornoEnderecoGoogleApi.ValidationResult.IsValid && retornoEnderecoGoogleApi.Enderecos.Any())
            {
                if (segmentoId != null)
                {
                    var segmento = _servicoCampoDinamicoOpcao.ObterPorId((long)segmentoId);

                    if (segmento != null)
                    {
                        var locais = _servicoLocal.Pesquisar(segmento.Nome,
                                                             retornoEnderecoGoogleApi.Enderecos.FirstOrDefault().Latidude.Value,
                                                             retornoEnderecoGoogleApi.Enderecos.FirstOrDefault().Latidude.Value);

                        if (locais != null)
                        {
                            foreach (var local in locais)
                            {
                                locaisLista.Add(new LocalListaViewModel(local));
                            }
                        }
                    }
                }

                retorno.EnderecoProdutoViewModel = new EnderecoProdutoViewModel(model, cidade, estado, segmentos,
                                                                                segmentoId,
                                                                                retornoEnderecoGoogleApi.Enderecos.FirstOrDefault().Latidude.Value,
                                                                                retornoEnderecoGoogleApi.Enderecos.FirstOrDefault().Longitude.Value, locaisLista);

                retorno.ListaSegmentos = new SelectList(segmentos, "id", "nome");
                retorno.SegmentoId     = segmentoId;
            }
            else
            {
                retorno.ValidationResult = retornoEnderecoGoogleApi.ValidationResult;
            }

            return(retorno);
        }
Exemplo n.º 2
0
        public LocalOcorrenciaViewModel ObterEnderecoEntidadeSelecionada(EnderecoProdutoViewModel model)
        {
            var retorno = new LocalOcorrenciaViewModel();

            if (model.EnderecoID != null)
            {
                long entidadeId;
                var  tipoEntidade = model.EnderecoID.Substring(0, 2);
                long.TryParse(model.EnderecoID.Substring(3, (model.EnderecoID.Length - 3)), out entidadeId);
                var    segmentos = _servicoCampoDinamicoOpcao.ObterPor("CTRPRODUT", "Padrão", "DL", "Segmento");
                long?  segmentoId = null;
                string cidade = "", estado = "";
                //double latitude, longitude;

                if (model.ContratoID != null)
                {
                    var valorPreenchido = _servicoCampodDinamicoPreenchido.ObterCampoDinamicoPreenchido("CTRPRODUT",
                                                                                                        "Padrão", "Segmento", (long)model.ContratoID);
                    if (valorPreenchido != null)
                    {
                        segmentoId = valorPreenchido.CamposDinamicosOpcoesId;
                    }
                }

                retorno.SegmentoId     = segmentoId;
                retorno.ListaSegmentos = new SelectList(segmentos, "id", "nome");

                var chaveGoogleApi = Chave();
                if (!chaveGoogleApi)
                {
                    retorno.ValidationResult.Add(new ValidationError(_chaveGoogleApi));
                    return(retorno);
                }

                DadosEnderecoGoogle retornoEnderecoGoogleApi;
                switch (tipoEntidade.ToLower())
                {
                case "pf":
                    var pessoaFisica = _servicoPessoaFisica.ObterPorId(entidadeId);
                    if (pessoaFisica.CidadeId != null)
                    {
                        var Cidade = _servicoCidade.ObterPorId((long)pessoaFisica.CidadeId);
                        if (Cidade != null)
                        {
                            cidade = Cidade.Nome;
                            estado = Cidade.Uf;
                        }
                    }

                    retornoEnderecoGoogleApi = GoogleAPI.ObterLatitudeLongitudePorEndereco(_chaveGoogleApi,
                                                                                           pessoaFisica.CodigoPostal, pessoaFisica.Logradouro, pessoaFisica.Numero, pessoaFisica.Bairro,
                                                                                           cidade, estado);

                    //latitude = GoogleAPI.ObterLatitudeLongitudePorEndereco(_chaveGoogleApi,
                    //    pessoaFisica.CodigoPostal, pessoaFisica.Logradouro, pessoaFisica.Numero, pessoaFisica.Bairro,
                    //    cidade, estado, out longitude);

                    if (retornoEnderecoGoogleApi.ValidationResult.IsValid &&
                        retornoEnderecoGoogleApi.Enderecos.Any())
                    {
                        retorno.EnderecoProdutoViewModel = new EnderecoProdutoViewModel(model, pessoaFisica, cidade,
                                                                                        estado, segmentos, segmentoId,
                                                                                        retornoEnderecoGoogleApi.Enderecos.FirstOrDefault().Latidude.Value,
                                                                                        retornoEnderecoGoogleApi.Enderecos.FirstOrDefault().Longitude.Value);
                    }
                    else
                    {
                        retorno.ValidationResult = retornoEnderecoGoogleApi.ValidationResult;
                    }

                    break;

                case "pj":
                    var pessoaJuridica = _servicoPessoaJuridica.ObterPorId(entidadeId);
                    if (pessoaJuridica.CidadeId != null)
                    {
                        var Cidade = _servicoCidade.ObterPorId((long)pessoaJuridica.CidadeId);
                        if (Cidade != null)
                        {
                            cidade = Cidade.Nome;
                            estado = Cidade.Uf;
                        }
                    }

                    retornoEnderecoGoogleApi = GoogleAPI.ObterLatitudeLongitudePorEndereco(_chaveGoogleApi,
                                                                                           pessoaJuridica.CodigoPostal, pessoaJuridica.Logradouro, pessoaJuridica.Numero,
                                                                                           pessoaJuridica.Bairro, cidade, estado);

                    //latitude = GoogleAPI.ObterLatitudeLongitudePorEndereco(_chaveGoogleApi,
                    //    pessoaJuridica.CodigoPostal, pessoaJuridica.Logradouro, pessoaJuridica.Numero, pessoaJuridica.Bairro, cidade, estado, out longitude);

                    if (retornoEnderecoGoogleApi.ValidationResult.IsValid &&
                        retornoEnderecoGoogleApi.Enderecos.Any())
                    {
                        retorno.EnderecoProdutoViewModel = new EnderecoProdutoViewModel(model, pessoaJuridica,
                                                                                        cidade,
                                                                                        estado, segmentos, segmentoId,
                                                                                        retornoEnderecoGoogleApi.Enderecos.FirstOrDefault().Latidude.Value,
                                                                                        retornoEnderecoGoogleApi.Enderecos.FirstOrDefault().Longitude.Value);
                    }
                    else
                    {
                        retorno.ValidationResult = retornoEnderecoGoogleApi.ValidationResult;
                    }

                    break;
                }
            }

            return(retorno);
        }