Ejemplo n.º 1
0
        /// <summary>
        /// Esta funcion procesa la informacion recivida.
        /// Transforma el menjate tipo csv en el objeto LocalizadorData para luego
        /// Ejecutar un proceso de busqueda de la informacion solicitada.
        /// Luego la envia nuevamente.
        /// </summary>
        /// <param name="message"></param>
        private static void ProcessInfo(string message)
        {
            LocalizadorData LD = new LocalizadorData();

            /// <summary>
            ///  Convierte el mensaje en LocalizadorData
            /// </summary>
            foreach (string v in message.Split(";"))
            {
                string[] vr = v.Split(":");
                switch (vr[0].ToLower())
                {
                case "id":
                    LD.id = Convert.ToInt64(vr[1]);
                    break;

                case "ciudad":
                    LD.ciudad = vr[1];
                    break;

                case "calle":
                    LD.calle = vr[1];
                    break;

                case "numero":
                    LD.numero = Convert.ToInt32(vr[1]);
                    break;

                case "codigo_postal":
                    LD.codigo_postal = vr[1];
                    break;

                case "provincia":
                    LD.provincia = vr[1];
                    break;

                case "pais":
                    LD.pais = vr[1];
                    break;

                default:
                    break;
                }
                ;
            }

            if (LD != null)
            {
                /// <summary>
                /// Busca la informacion faltante.
                /// </summary>
                LD = OSM_FG.Find(LD);
                /// <summary>
                /// Envia la informacion solicitada.
                /// </summary>
                Send(LD);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Esta funcion busc a travez de la latitud y la longitud la direccion correspondiente
        /// Devolviendo un objeto de tipo LocalizadorData con los datos correspondienes.
        /// </summary>
        /// <param name="lat"></param>
        /// <param name="lon"></param>
        /// <returns>new LocalizadorData</returns>
        public static LocalizadorData Find(double lat, double lon)
        {
            LocalizadorData       LD = new LocalizadorData();
            ReverseGeocodeRequest g  = new ReverseGeocodeRequest();
            GeocodeResponse       r  = new GeocodeResponse();
            ReverseGeocoder       RG = new ReverseGeocoder();

            g.Latitude  = lat;
            g.Longitude = lon;
            Task <GeocodeResponse> rs = RG.ReverseGeocode(g);

            r        = rs.Result;
            LD.calle = r.Address.Road;
            return(LD);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Esta funcion busca a traves de las direccion proporcionada por el objeto LocalizadorData
        /// la latitud y la longitud de dicha direccion.
        /// </summary>
        /// <param name="LD"></param>
        /// <returns>LD</returns>
        public static LocalizadorData Find(LocalizadorData LD)
        {
            ForwardGeocodeRequest d = new ForwardGeocodeRequest();
            GeocodeResponse       g = new GeocodeResponse();

            d.City          = LD.ciudad;
            d.Country       = LD.pais;
            d.StreetAddress = LD.calle + " " + LD.numero.ToString();
            d.County        = LD.provincia;
            ForwardGeocoder          FG = new ForwardGeocoder();
            Task <GeocodeResponse[]> r  = FG.Geocode(d);

            g           = r.Result[0];
            LD.latitud  = g.Latitude;
            LD.longitud = g.Longitude;
            return(LD);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Esta funcion estatica se utiliza para enviar informacion a travez de RabbitMQ.
        /// Esta recibe un objeto de tipo LocalizadorData el cual es procesado en una cadena simple tipo csv
        /// para ser enviada.
        /// </summary>
        /// <param name="DataLD"></param>
        public static void Send(LocalizadorData DataLD)
        {
            try
            {
                string message = "ID:" + DataLD.id.ToString() + ";LAT:" + DataLD.latitud.ToString()
                                 + ";LON:" + DataLD.longitud.ToString();

                var factory = new ConnectionFactory()
                {
                    UserName = User,
                    Password = Pass,
                    HostName = Hostname,
                    Port     = Port
                };
                using (var connection = factory.CreateConnection())
                {
                    using (var channel = connection.CreateModel())
                    {
                        channel.QueueDeclare(queue: sendTopic,
                                             durable: true,
                                             exclusive: false,
                                             autoDelete: false,
                                             arguments: null);

                        var body = Encoding.UTF8.GetBytes(message);

                        var properties = channel.CreateBasicProperties();
                        properties.Persistent = true;

                        channel.BasicPublish(exchange: "",
                                             routingKey: sendTopic,
                                             basicProperties: properties,
                                             body: body);
                        Console.WriteLine(sendTopic + " [x] Sent {0}", message);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: " + e.Message);
            }
        }