Atualmente nossas aplicações estão demandando regras de negócios cada vez mais inovadoras e desafiantes com objetivo de conhecer nosso cliente agregando valor ao negócio.
    Com intuito de compartilhar entre as organizações e a todos que desejarem fazer a integração em seus aplicativos, estou disponibilizando nesse artigo passos para que sua aplicação esteja ela disponibilizada na web e ou na intranet  seja interligada com o Google registrando a latitude e longitude de seus clientes.
           Esta aplicação faz a leitura de um arquivo texto ,  com dados de cadastro do cliente e registra um arquivo texto com a latitude e longitude  destes clientes que foram encontrados no google.
          Lembrando que no nosso caso estamos gravando as informações em um arquivo texto , mas nada impede que sejam atualizadas essas informações na base dados .

        1 – Passo :

        Abrimos um projeto web no Visual Studio 2005 e escolhemos com linguagem o vb.net.
        
        Clique na imagem para ampliar


     2 – Passo :

    2.1  - Adicionamos em nosso aplicativo um projeto de Dataset com os seguintes Atributos :
             Cnpjcpf , Logradouro , Bairro, Cidade , Cep .
      2.2– Adicionamos os seguintes componente ao nosso layout :
             Button  > Renomeie para Gera Informações
             FileUpload
             Label

    3 – Passo :

           Implementamos o método que efetua a leitura do arquivo e grava as informações no Dataset.
    Vejamos o código :
    
 Private Sub LerArquivoCRM()

        Dim fluxoTexto As IO.StreamReader
        Dim linhaTexto As String

        Dim arquivo As String = FileUpload1.PostedFile.FileName
        FileUpload1.SaveAs(arquivo)

        Dim cnpjcpf As String
        Dim logradouro As String
        Dim bairro As String
        Dim cidade As String
        Dim cep As String

        Dim row As DataSetLeituraArquivo.Tbl_AtualizaClienteCRMGUIDRow
        Dim DsLeituraArquivo As New DataSetLeituraArquivo

        If IO.File.Exists(arquivo) Then

            fluxoTexto = New IO.StreamReader(arquivo)

            linhaTexto = fluxoTexto.ReadLine

            While linhaTexto <> Nothing

                cnpjcpf = CType(linhaTexto.Split(";"c).GetValue(0), String)
                logradouro = CType(linhaTexto.Split(";"c).GetValue(1), String)
                bairro = CType(linhaTexto.Split(";"c).GetValue(2), String)
                cidade = CType(linhaTexto.Split(";"c).GetValue(3), String)
                cep = CType(linhaTexto.Split(";"c).GetValue(4), String)

                linhaTexto = fluxoTexto.ReadLine

                row = DsLeituraArquivo.Tbl_AtualizaClienteCRMGUID.NewTbl_AtualizaClienteCRMGUIDRow()
                row.cnpjcpf = cnpjcpf
                row.ds_logradouro = logradouro
                row.ds_bairro = bairro
                row.ds_cidade = cidade
                row.ds_cep = cep
                DsLeituraArquivo.Tbl_AtualizaClienteCRMGUID.Rows.Add(row)

            End While

            fluxoTexto.Close()
            BuscaLatitudeLongitude(DsLeituraArquivo)

        End If

    End Sub


       4 – Passo :

      Declaramos uma variável que aponta para o caminho e o nome do arquivo que será gravado com as informações             de latitude e longitude.
     Lembrando que em nosso artigo aponta para diretório especifico , mas nada impende que seja implementado por parâmetros que pode ser especificado efetuando a leitura do web.config da aplicação.

        
Private arquivoINSERE As String = "C:\ClientesLatitude.txt"


       5 – Passo :

       Implementamos agora o metodo que vai buscar os dados do dataset e chamar a API do google para registrar as informações de latitude e longitude gravando no arquivo texto a saida.
       Lembrete : Para a utilização da API do google deve ser feito o registro , para obter a chave de registro que será passada na url como parametro.
 Private Sub BuscaLatitudeLongitude(ByVal ds As DataSetLeituraArquivo)

        strm = New StreamWriter(arquivoINSERE, True)
        For Each dr As DataSetLeituraArquivo.Tbl_AtualizaClienteGUIDRow In ds.Tbl_AtualizaClienteGUID.Rows
            Dim Endereco As String = dr.ds_logradouro
            Dim CEP As String = dr.ds_cep
            Dim Rua As String = dr.ds_logradouro
            Dim BairroLt As String = dr.ds_bairro
            Dim CidadeLt As String = dr.ds_cidade
            Dim url As String = "http://maps.google.com/maps/geo?q=" & HttpUtility.UrlEncode(Endereco & CEP) & "&output=csv&key=ChaveRegistrono Google"
            Dim req As WebRequest = HttpWebRequest.Create(url)
            req.Timeout = 30000
            Dim res As WebResponse = req.GetResponse()
            Dim sr As New StreamReader(res.GetResponseStream())
            Try
                Dim strRetorno As String = sr.ReadToEnd()
                If strRetorno Is Nothing OrElse strRetorno.Equals(String.Empty) Then
                    Throw New Exception("Not found!")
                End If
                Dim Latitude As String = strRetorno.Split(",")(2)
                Dim Longitude As String = strRetorno.Split(",")(3)
                strmErro.WriteLine("CNPJ/CPF: " & dr.cnpjcpf & "   Latitude: " & Latitude.ToString & "   Longitude: " & Longitude.ToString)
            Finally
                sr.Close()
            End Try
        Next

        strmErro.Close()
        Label1.Text = " Informações Atualizadas "
    End Sub


6 – Passo :

       Implementamos a chamada dos metodos pelo cliente do botão Gera Informações e fazemos a validação para saber se antes efetuar a geração de informações o arquivo foi selecionado.

   If FileUpload1.HasFile Then
            LerArquivoCRM()
        Else
            Label1.Text = " Selecione um arquivo de extensão .TXT"
        End If


7 – Passo :
    
     Finalmente chegamos ao final de nossa aplicação e temos um layout que pode ser visualizado abaixo e uma inteligência integrada com Google  com um  grande poder de integração de valor ao negócio.



Clique na imagem para ampliar