示例#1
0
        protected void Bind(ReferenciaGeografica georef)
        {
            IdGeoRef = georef != null ? georef.Id : -1;

            if (georef != null && georef.Icono != null)
            {
                SelectIcon2.Selected = georef.Icono.Id;
                EditGeoRef1.SetIcono(Config.Directory.IconDir + georef.Icono.PathIcono, georef.Icono.Width, georef.Icono.Height, georef.Icono.OffsetX, georef.Icono.OffsetY);
            }
            else
            {
                SelectIcon2.Selected = -1;
            }
            if (georef != null && georef.Color != null)
            {
                cpColor.Color     = georef.Color.HexValue;
                EditGeoRef1.Color = georef.Color.Color;
            }
            EditGeoRef1.Poligono  = georef != null ? georef.Poligono : null;
            EditGeoRef1.Direccion = georef != null ? georef.Direccion : null;

            if (georef != null)
            {
                cbTipoReferenciaGeografica.SetSelectedValue(georef.TipoReferenciaGeografica.Id);
            }
        }
示例#2
0
        private void DrawCircle(ReferenciaGeografica geocerca, Color color)
        {
            var point    = geocerca.Poligono.FirstPoint;
            var poligono = new Point(string.Format("POINT_{0}", geocerca.Id), point.X, point.Y, geocerca.Poligono.Radio, StyleFactory.GetPointFromColor(color));

            Monitor.AddGeometries(Layers.Geocercas, poligono);
        }
示例#3
0
        private string GetPoiPopupContent(ReferenciaGeografica dom)
        {
            var lineas = SelectedLineas.Aggregate("", (current, linea) => current + (linea.ToString("#0") + ","));

            lineas = lineas.TrimEnd(',');

            return("javascript:getPOIP('" + dom.Id + "','" + lineas + "')");
        }
示例#4
0
        private static bool IsInsideInhibitor(double latitude, double longitude, ReferenciaGeografica domicilio)
        {
            if (latitude.Equals(0) || longitude.Equals(0) || domicilio == null || domicilio.Poligono == null)
            {
                return(false);
            }

            return(domicilio.Poligono.Contains(latitude, longitude));
        }
示例#5
0
        private PuntoEntrega GetNuevoPuntoEntrega(string codigoCliente, string nombreCliente)
        {
            var cliente = DaoFactory.ClienteDAO.FindById(IdClienteDefault);

            var georef = new ReferenciaGeografica
            {
                Codigo                   = codigoCliente,
                Descripcion              = nombreCliente,
                Empresa                  = Empresa,
                EsFin                    = cliente.ReferenciaGeografica.TipoReferenciaGeografica.EsFin,
                EsInicio                 = cliente.ReferenciaGeografica.TipoReferenciaGeografica.EsInicio,
                EsIntermedio             = cliente.ReferenciaGeografica.TipoReferenciaGeografica.EsIntermedio,
                InhibeAlarma             = cliente.ReferenciaGeografica.TipoReferenciaGeografica.InhibeAlarma,
                TipoReferenciaGeografica = cliente.ReferenciaGeografica.TipoReferenciaGeografica,
                Vigencia                 = new Vigencia
                {
                    Inicio = DateTime.UtcNow
                },
                Icono = cliente.ReferenciaGeografica.TipoReferenciaGeografica.Icono
            };

            var latitud  = cliente.ReferenciaGeografica.Latitude;
            var longitud = cliente.ReferenciaGeografica.Longitude;
            var posicion = GetNewDireccion(latitud, longitud);

            var poligono = new Poligono {
                Radio = 100, Vigencia = new Vigencia {
                    Inicio = DateTime.UtcNow
                }
            };

            poligono.AddPoints(new[] { new PointF((float)longitud, (float)latitud) });

            georef.AddHistoria(posicion, poligono, DateTime.UtcNow);

            DaoFactory.ReferenciaGeograficaDAO.SaveOrUpdate(georef);

            var puntoEntrega = new PuntoEntrega
            {
                Cliente              = cliente,
                Codigo               = codigoCliente,
                Descripcion          = nombreCliente,
                Telefono             = string.Empty,
                Baja                 = false,
                ReferenciaGeografica = georef,
                Nomenclado           = true,
                DireccionNomenclada  = posicion.Descripcion,
                Nombre               = nombreCliente
            };

            DaoFactory.PuntoEntregaDAO.SaveOrUpdate(puntoEntrega);

            return(puntoEntrega);
        }
示例#6
0
        public Geocerca(ReferenciaGeografica geocerca)
        {
            Id = geocerca.Id;
            TipoReferenciaGeograficaId = geocerca.TipoReferenciaGeografica.Id;
            Descripcion = geocerca.Descripcion;

            Inicio = geocerca.Vigencia != null ? geocerca.Vigencia.Inicio : null;
            Fin    = geocerca.Vigencia != null ? geocerca.Vigencia.Fin : null;

            Latitude  = geocerca.Latitude;
            Longitude = geocerca.Longitude;

            ControlaEntradaSalida = geocerca.TipoReferenciaGeografica.ControlaEntradaSalida;
            ControlaVelocidad     = geocerca.TipoReferenciaGeografica.ControlaVelocidad;

            ControlaPermanencia        = geocerca.TipoReferenciaGeografica.ControlaPermanencia;
            ControlaPermanenciaEntrega = geocerca.TipoReferenciaGeografica.ControlaPermanenciaEntrega;

            MaximaPermanencia        = geocerca.TipoReferenciaGeografica.MaximaPermanencia;
            MaximaPermanenciaEntrega = geocerca.TipoReferenciaGeografica.MaximaPermanenciaEntrega;

            EsTaller = geocerca.TipoReferenciaGeografica.EsTaller;

            EsInicio     = geocerca.EsInicio;
            EsIntermedio = geocerca.EsIntermedio;
            EsFin        = geocerca.EsFin;

            var zona = geocerca.Zonas.Cast <ReferenciaZona>().FirstOrDefault(x => !x.Zona.Baja);

            ZonaManejo    = zona != null ? zona.Zona.Id : 0;
            PrioridadZona = zona != null ? zona.Zona.Prioridad : 0;

            VelocidadesMaximas     = CalculateMaxSpeeds(geocerca);
            VelocidadesMaximasTipo = CalculateTypeMaxSpeeds(geocerca);

            HasPoligono = geocerca.Poligono != null;

            if (geocerca.Poligono == null)
            {
                return;
            }

            Radio = geocerca.Poligono.Radio;

            Puntos = geocerca.Poligono.ToPointFList();

            MinY = geocerca.Poligono.MinY;
            MaxY = geocerca.Poligono.MaxY;
            MinX = geocerca.Poligono.MinX;
            MaxX = geocerca.Poligono.MaxX;

            CalculateBounds();
        }
示例#7
0
 public void SetReferencia(ReferenciaGeografica referencia)
 {
     if (referencia != null)
     {
         SelectedId         = referencia.Id;
         lblReferencia.Text = referencia.Descripcion;
         SwitchView(0);
     }
     SetResultView(false);
     updControl.Update();
     OnDireccionSelected();
 }
示例#8
0
        private void DrawGeocerca(ReferenciaGeografica geocerca)
        {
            var color = geocerca.Color != null ? geocerca.Color.Color : Color.Blue;

            if (geocerca.Poligono.Radio > 0)
            {
                DrawCircle(geocerca, color);
            }
            else
            {
                DrawPolygon(geocerca, color);
            }
        }
示例#9
0
 public MobilePoiHistoric(LogPosicionBase posicion, ReferenciaGeografica referencia, DateTime fecha)
 {
     Interno        = posicion.Coche.Interno;
     TipoVehiculo   = posicion.Coche.TipoCoche.Descripcion;
     Distancia      = Distancias.Loxodromica(posicion.Latitud, posicion.Longitud, referencia.Latitude, referencia.Longitude);
     Latitud        = posicion.Latitud;
     Longitud       = posicion.Longitud;
     PuntoDeInteres = referencia.Descripcion;
     Velocidad      = posicion.Velocidad;
     Responsable    = posicion.Coche.Chofer != null ? posicion.Coche.Chofer.Entidad.Descripcion : string.Empty;
     Fecha          = fecha;
     RefId          = referencia.Id;
 }
示例#10
0
        private void DrawPolygon(ReferenciaGeografica geocerca, Color color)
        {
            var poligono = new Polygon(string.Format("POLYGON_{0}", geocerca.Id), StyleFactory.GetPointFromColor(color));

            var points = geocerca.Poligono.ToPointFList();

            for (var i = 0; i < points.Count; i++)
            {
                poligono.AddPoint(new Point(string.Format("{0}_{1}", geocerca.Id, i), points[i].X, points[i].Y));
            }

            Monitor.AddGeometries(Layers.Geocercas, poligono);
        }
示例#11
0
 public MobilePoi(LogUltimaPosicionVo posicion, ReferenciaGeografica referencia, Empleado chofer)
 {
     IdVehiculo     = posicion.IdCoche;
     Interno        = posicion.Coche;
     TipoVehiculo   = posicion.TipoCoche;
     Distancia      = Distancias.Loxodromica(posicion.Latitud, posicion.Longitud, referencia.Latitude, referencia.Longitude);
     Latitud        = posicion.Latitud;
     Longitud       = posicion.Longitud;
     PuntoDeInteres = referencia.Descripcion;
     Velocidad      = posicion.Velocidad;
     Responsable    = posicion.Responsable;
     Chofer         = chofer != null ? chofer.Entidad.Descripcion : string.Empty;
 }
示例#12
0
        public ReferenciaGeograficaVo(ReferenciaGeografica georef)
        {
            Id          = georef.Id;
            IconUrl     = georef.Icono != null ? georef.Icono.PathIcono : string.Empty;
            Codigo      = georef.Codigo;
            Descripcion = georef.Descripcion;
            IsPoint     = georef.Direccion != null;
            IsPolygon   = georef.Poligono != null;
            Color       = georef.Color != null ? georef.Color.HexValue : string.Empty;
            Linea       = georef.Linea != null ? georef.Linea.Id : -1;
            Empresa     = georef.Empresa != null ? georef.Empresa.Id : georef.Linea != null ? georef.Linea.Empresa.Id : -1;

            Latitud  = georef.Latitude;
            Longitud = georef.Longitude;
        }
示例#13
0
        private void SelectPoi(ReferenciaGeografica dom)
        {
            var li = cbPoi.Items.FindByValue(dom.TipoReferenciaGeografica.Id.ToString("#0"));

            if (li != null)
            {
                li.Selected = true;
                CbPoiSelectedIndexChanged(cbPoi, EventArgs.Empty);
            }

            var lat = dom.Direccion != null ? dom.Direccion.Latitud : dom.Poligono.Centro.Y;
            var lon = dom.Direccion != null ? dom.Direccion.Longitud : dom.Poligono.Centro.X;

            Monitor.SetCenter(lat, lon, SearchZoomLevel);
        }
示例#14
0
        private string GetPoiIcon(ReferenciaGeografica punto)
        {
            string iconPath;

            if (punto.Icono != null && File.Exists(Server.MapPath((iconPath = string.Concat(IconDir, punto.Icono.PathIcono)))))
            {
                return(iconPath);
            }

            if (punto.TipoReferenciaGeografica.Icono != null && File.Exists(Server.MapPath((iconPath = string.Concat(IconDir, punto.TipoReferenciaGeografica.Icono.PathIcono)))))
            {
                return(iconPath);
            }

            return(Images.DefaultPois);
        }
示例#15
0
 public ReferenciaGeograficaVO(ReferenciaGeografica dom)
 {
     Tipo = dom.TipoReferenciaGeografica.Descripcion;
     if (dom.Direccion != null)
     {
         Calle     = dom.Direccion.IdCalle.ToString();
         Altura    = dom.Direccion.Altura;
         Partido   = dom.Direccion.Partido;
         Provincia = dom.Direccion.Provincia;
         Pais      = dom.Direccion.Pais;
         Inicio    = dom.Vigencia.Inicio.ToString();
         Fin       = dom.Vigencia.Fin.ToString();
         Empresa   = dom.Empresa != null ? dom.Empresa.RazonSocial : string.Empty;
         Linea     = dom.Linea != null ? dom.Linea.Descripcion : string.Empty;
     }
 }
示例#16
0
        private ReferenciaGeografica GetNewGeoRef(Empresa empresa, Linea linea, string codigo, string descripcion, double latitud, double longitud, string codigoTipo)
        {
            var tipo = DaoFactory.TipoReferenciaGeograficaDAO.FindByCodigo(new[] { empresa.Id }, new[] { linea != null ? linea.Id : -1 }, codigoTipo);

            if (tipo == null)
            {
                ThrowProperty("TIPO_PUNTO_ENTREGA");
            }

            var puntoDeInteres = new ReferenciaGeografica
            {
                Codigo      = codigo,
                Descripcion = descripcion,
                Empresa     = empresa,
                Linea       = linea,
                TipoReferenciaGeografica = tipo,
                Vigencia = new Vigencia {
                    Inicio = DateTime.UtcNow, Fin = DateTime.UtcNow
                },
                Icono = tipo.Icono
            };

            var posicion = GetNewDireccion(latitud, longitud);

            var poligono = new Poligono {
                Radio = 50, Vigencia = new Vigencia {
                    Inicio = DateTime.UtcNow
                }
            };

            poligono.AddPoints(new[] { new PointF((float)longitud, (float)latitud) });

            puntoDeInteres.Historia.Add(new HistoriaGeoRef
            {
                ReferenciaGeografica = puntoDeInteres,
                Direccion            = posicion,
                Poligono             = poligono,
                Vigencia             = new Vigencia {
                    Inicio = DateTime.UtcNow
                }
            });

            DaoFactory.ReferenciaGeograficaDAO.SingleSaveOrUpdate(puntoDeInteres);
            STrace.Trace("QtreeReset", "PuntoEntregaBV1 2");

            return(puntoDeInteres);
        }
示例#17
0
        private void UpdateVigencia(ImportDireccion row, ReferenciaGeografica referencia)
        {
            if (row.VigenciaDesde2.HasValue || row.VigenciaHasta2.HasValue)
            {
                if (referencia.Vigencia == null)
                {
                    referencia.Vigencia = new Vigencia {
                        Inicio = row.VigenciaDesde2, Fin = row.VigenciaHasta2
                    };
                }
                else if (!referencia.Vigencia.Vigente(DateTime.UtcNow))
                {
                    referencia.Vigencia = new Vigencia {
                        Inicio = row.VigenciaDesde2, Fin = row.VigenciaHasta2
                    };
                }
                else
                {
                    var desde = row.VigenciaDesde2.HasValue ? row.VigenciaDesde2.Value : DateTime.MaxValue;
                    if (referencia.Vigencia.Inicio.HasValue && referencia.Vigencia.Inicio.Value < desde)
                    {
                        desde = referencia.Vigencia.Inicio.Value;
                    }
                    if (desde == DateTime.MaxValue)
                    {
                        desde = DateTime.UtcNow;
                    }

                    var hasta = row.VigenciaHasta2.HasValue ? row.VigenciaHasta2.Value : DateTime.MinValue;
                    if (referencia.Vigencia.Fin.HasValue && referencia.Vigencia.Fin.Value > hasta)
                    {
                        hasta = referencia.Vigencia.Fin.Value;
                    }
                    if (hasta == DateTime.MinValue)
                    {
                        hasta = DateTime.UtcNow;
                    }
                    referencia.Vigencia = new Vigencia {
                        Inicio = desde, Fin = hasta
                    };
                }
                DAOFactory.ReferenciaGeograficaDAO.SingleSaveOrUpdate(referencia);
                STrace.Trace("QtreeReset", "DireccionImport 1");
            }
        }
示例#18
0
        private void SetDireccion(ReferenciaGeografica geoRef, IList <DireccionVO> nomencladas)
        {
            if (nomencladas.Count == 1)
            {
                var direccionNomenclada = nomencladas[0];

                var dir = new Direccion
                {
                    Altura       = direccionNomenclada.Altura,
                    Calle        = direccionNomenclada.Calle,
                    Descripcion  = direccionNomenclada.Direccion.Truncate(128),
                    IdCalle      = direccionNomenclada.IdPoligonal,
                    IdEntrecalle = -1,
                    IdEsquina    = direccionNomenclada.IdEsquina,
                    IdMapa       = (short)direccionNomenclada.IdMapaUrbano,
                    Latitud      = direccionNomenclada.Latitud,
                    Longitud     = direccionNomenclada.Longitud,
                    Pais         = "Argentina",
                    Partido      = direccionNomenclada.Partido,
                    Provincia    = direccionNomenclada.Provincia,
                    Vigencia     = new Vigencia {
                        Inicio = DateTime.Now
                    }
                };



                var pol = new Poligono
                {
                    Radio    = 100,
                    Vigencia = new Vigencia {
                        Inicio = DateTime.Now
                    }
                };
                pol.AddPoints(new[]
                {
                    new PointF((float)dir.Longitud,
                               (float)dir.Latitud)
                });


                geoRef.AddHistoria(dir, pol, DateTime.UtcNow);
            }
        }
示例#19
0
        private void UpdateVigencia(ReferenciaGeografica referencia, DateTime?vigenciaDesde, DateTime?vigenciaHasta)
        {
            if (vigenciaDesde.HasValue || vigenciaHasta.HasValue)
            {
                if (referencia.Vigencia == null || !referencia.Vigencia.Vigente(DateTime.UtcNow))
                {
                    referencia.Vigencia = new Vigencia {
                        Inicio = vigenciaDesde.HasValue
                                                                    ? vigenciaDesde.Value.ToDataBaseDateTime()
                                                                    : vigenciaDesde,
                        Fin = vigenciaHasta.HasValue
                                                                    ? vigenciaHasta.Value.ToDataBaseDateTime()
                                                                    : vigenciaHasta
                    };
                }
                else
                {
                    var desde = vigenciaDesde.HasValue ? vigenciaDesde.Value : DateTime.MaxValue;
                    if (referencia.Vigencia.Inicio.HasValue && referencia.Vigencia.Inicio.Value < desde)
                    {
                        desde = referencia.Vigencia.Inicio.Value;
                    }
                    if (desde == DateTime.MaxValue)
                    {
                        desde = DateTime.UtcNow;
                    }

                    var hasta = vigenciaHasta.HasValue ? vigenciaHasta.Value : DateTime.MinValue;
                    if (referencia.Vigencia.Fin.HasValue && referencia.Vigencia.Fin.Value > hasta)
                    {
                        hasta = referencia.Vigencia.Fin.Value;
                    }
                    if (hasta == DateTime.MinValue)
                    {
                        hasta = DateTime.UtcNow;
                    }
                    referencia.Vigencia = new Vigencia {
                        Inicio = desde.ToDataBaseDateTime(), Fin = hasta.ToDataBaseDateTime()
                    };
                }
                DAOFactory.ReferenciaGeograficaDAO.SaveOrUpdate(referencia);
            }
        }
示例#20
0
 public Geometry GetPolygon(string id, ReferenciaGeografica referencia, Color color)
 {
     if (referencia.Poligono.Radio == 0)
     {
         var polygon = new Polygon(id, Style.GetPolygon(color));
         foreach (Punto punto in referencia.Poligono.Puntos)
         {
             polygon.AddPoint(new Point("", punto.Latitud, punto.Longitud));
         }
         return(polygon);
     }
     else
     {
         var punto   = referencia.Poligono.Puntos.Cast <Punto>().First();
         var polygon = Polygon.CreateRegularPolygon(id, Style.GetPolygon(color),
                                                    new LonLat(punto.Longitud, punto.Latitud),
                                                    referencia.Poligono.Radio, 50, 0);
         return(polygon);
     }
 }
示例#21
0
        public ReferenciaGeografica GetGeoReference(DateTime date)
        {
            if (EventosGeocerca.Count == 0)
            {
                return(null);
            }
            ReferenciaGeografica geocerca = null;
            DateTime             key;

            while (_indexGeoReference < EventosGeocerca.Count && (key = EventosGeocerca.Keys.ElementAt(_indexGeoReference)) <= date)
            {
                geocerca = EventosGeocerca[key];
                _indexGeoReference++;
            }
            if (_indexGeoReference > 0)
            {
                _indexGeoReference--;
            }
            return(geocerca);
        }
示例#22
0
        private string SerializeReferenciaGeografica(ReferenciaGeografica x)
        {
            var icono = x.Icono != null?string.Concat(IconDir, x.Icono.PathIcono)
                            : x.TipoReferenciaGeografica.Icono != null
                        ? string.Concat(IconDir, x.TipoReferenciaGeografica.Icono.PathIcono)
                        : string.Concat(ImagesDir, "pois.png");

            return(string.Format("{{ \"id\": {0}, \"lat\": {1},\"lon\": {2}, \"icon\": \"{3}\", \"color\": \"#{4}\", \"radio\": {5}, \"points\": [{6}], \"name\": \"{7}\" }}",
                                 x.Id,
                                 x.Direccion != null ? x.Direccion.Latitud.ToString(CultureInfo.InvariantCulture) : "null",
                                 x.Direccion != null ? x.Direccion.Longitud.ToString(CultureInfo.InvariantCulture) : "null",
                                 icono,
                                 (x.Color != null ? x.Color.HexValue : "0000FF"),
                                 x.Poligono != null ? x.Poligono.Radio : 0,
                                 x.Poligono != null
                            ? string.Join(",", x.Poligono.ToPointFList().Select(y => string.Format("{{ \"lat\": {0}, \"lon\": {1} }}", y.Y.ToString(CultureInfo.InvariantCulture), y.X.ToString(CultureInfo.InvariantCulture))).ToArray())
                            : string.Empty,
                                 x.Descripcion.Replace("\"", "\\\"")
                                 ));
        }
示例#23
0
        private void AddReferenciaGeografica(string layerPoi, string layerArea, ReferenciaGeografica dom, string popupContent)
        {
            if (dom.Poligono != null)
            {
                var center = dom.Poligono.FirstPoint;
                var col    = StyleFactory.GetPointFromColor(dom.Color.Color);
                var id     = dom.Id + "_GEO";

                if (dom.Poligono.Radio > 0)
                {
                    Monitor.AddGeometries(layerArea, new Point(id, center.X, center.Y, dom.Poligono.Radio, col));
                }
                else
                {
                    var points = dom.Poligono.ToPointFList();
                    var poly   = new Polygon(id, col);
                    for (var i = 0; i < points.Count; i++)
                    {
                        poly.AddPoint(new Point(id + "_" + i, points[i].X, points[i].Y));
                    }

                    Monitor.AddGeometries(layerArea, poly);
                }
            }

            if (dom.Direccion == null)
            {
                return;
            }

            var icono  = dom.Icono != null ? IconDir + dom.Icono.PathIcono : string.Empty;
            var marker = new Marker(dom.Id.ToString("#0"),
                                    icono,
                                    dom.Direccion.Latitud,
                                    dom.Direccion.Longitud,
                                    popupContent,
                                    DrawingFactory.GetSize(dom.Icono != null ? dom.Icono.Width : 0, dom.Icono != null ? dom.Icono.Height : 0), DrawingFactory.GetOffset(dom.Icono != null ? dom.Icono.OffsetX : 0, dom.Icono != null ? dom.Icono.OffsetY : 0));

            Monitor.AddMarkers(layerPoi, marker);
        }
示例#24
0
        public ReferenciaGeografica Revivir(ReferenciaGeografica referencia, DateTime?vigenciaDesde, DateTime?vigenciaHasta)
        {
            referencia.Baja = false;
            if (vigenciaDesde.HasValue || vigenciaHasta.HasValue)
            {
                if (referencia.Vigencia == null || !referencia.Vigencia.Vigente(DateTime.UtcNow))
                {
                    referencia.Vigencia = new Vigencia {
                        Inicio = vigenciaDesde, Fin = vigenciaHasta
                    };
                }
                else
                {
                    var desde = vigenciaDesde.HasValue ? vigenciaDesde.Value : DateTime.MaxValue;
                    if (referencia.Vigencia.Inicio.HasValue && referencia.Vigencia.Inicio.Value < desde)
                    {
                        desde = referencia.Vigencia.Inicio.Value;
                    }
                    if (desde == DateTime.MaxValue)
                    {
                        desde = DateTime.UtcNow;
                    }

                    var hasta = vigenciaHasta.HasValue ? vigenciaHasta.Value : DateTime.MinValue;
                    if (referencia.Vigencia.Fin.HasValue && referencia.Vigencia.Fin.Value > hasta)
                    {
                        hasta = referencia.Vigencia.Fin.Value;
                    }
                    if (hasta == DateTime.MinValue)
                    {
                        hasta = DateTime.UtcNow;
                    }
                    referencia.Vigencia = new Vigencia {
                        Inicio = desde, Fin = hasta
                    };
                }
            }
            return(referencia);
        }
示例#25
0
        private void AddReferenciasGeograficas(ReferenciaGeografica rg)
        {
            if (rg == null)
            {
                STrace.Error(GetType().FullName, "AddReferenciasGeograficas: rg is null");
            }
            else if (rg.Empresa == null)
            {
                STrace.Error(GetType().FullName, "AddReferenciasGeograficas: rg.Empresa is null");
            }
            else
            {
                if (!_empresasLineas.ContainsKey(rg.Empresa.Id))
                {
                    _empresasLineas.Add(rg.Empresa.Id, new List <int> {
                        -1
                    });
                }

                if (rg.Linea != null)
                {
                    if (!_empresasLineas[rg.Empresa.Id].Contains(rg.Linea.Id))
                    {
                        _empresasLineas[rg.Empresa.Id].Add(rg.Linea.Id);
                    }
                }
                else
                {
                    var todaslaslineas = DAOFactory.LineaDAO.GetList(new[] { rg.Empresa.Id });
                    foreach (var linea in todaslaslineas)
                    {
                        if (!_empresasLineas.ContainsKey(linea.Id))
                        {
                            _empresasLineas[rg.Empresa.Id].Add(linea.Id);
                        }
                    }
                }
            }
        }
示例#26
0
        private static void AddReferenciasGeograficas(ReferenciaGeografica rg)
        {
            if (rg == null)
            {
                STrace.Error(Component, "AddReferenciasGeograficas: rg is null");
            }
            else if (rg.Empresa == null)
            {
                STrace.Error(Component, "AddReferenciasGeograficas: rg.Empresa is null");
            }
            else
            {
                if (!EmpresasLineas.ContainsKey(rg.Empresa.Id))
                {
                    EmpresasLineas.Add(rg.Empresa.Id, new List <int> {
                        -1
                    });
                }

                if (rg.Linea != null)
                {
                    if (!EmpresasLineas[rg.Empresa.Id].Contains(rg.Linea.Id))
                    {
                        EmpresasLineas[rg.Empresa.Id].Add(rg.Linea.Id);
                    }
                }
                else
                {
                    var todaslaslineas = new DAOFactory().LineaDAO.GetList(new[] { rg.Empresa.Id });
                    foreach (var linea in todaslaslineas)
                    {
                        if (!EmpresasLineas.ContainsKey(linea.Id))
                        {
                            EmpresasLineas[rg.Empresa.Id].Add(linea.Id);
                        }
                    }
                }
            }
        }
示例#27
0
        public ReferenciaGeografica GetReferenciaGeografica(TipoReferenciaGeografica tipoReferencia, ReferenciaGeografica geoRef, Empresa empresa, Linea linea, string codigo, string descripcion, DateTime?vigenciaDesde, DateTime?vigenciaHasta)
        {
            if (geoRef == null)
            {
                geoRef = new ReferenciaGeografica
                {
                    Codigo                   = codigo,
                    Empresa                  = empresa,
                    Linea                    = linea,
                    EsFin                    = tipoReferencia.EsFin,
                    EsInicio                 = tipoReferencia.EsInicio,
                    EsIntermedio             = tipoReferencia.EsIntermedio,
                    Icono                    = tipoReferencia.Icono,
                    InhibeAlarma             = tipoReferencia.InhibeAlarma,
                    TipoReferenciaGeografica = tipoReferencia,
                    Color                    = tipoReferencia.Color
                };
                foreach (TipoReferenciaVelocidad maxima in tipoReferencia.VelocidadesMaximas)
                {
                    geoRef.VelocidadesMaximas.Add(new ReferenciaVelocidad
                    {
                        ReferenciaGeografica = geoRef,
                        TipoVehiculo         = maxima.TipoVehiculo,
                        VelocidadMaxima      = maxima.VelocidadMaxima
                    });
                }
            }

            geoRef.Baja          = false;
            geoRef.Descripcion   = descripcion;
            geoRef.Observaciones = string.Empty;

            UpdateVigencia(geoRef, vigenciaDesde, vigenciaHasta);

            return(geoRef);
        }
示例#28
0
        protected override void Import(List <ImportRow> rows)
        {
            var empresa = cbEmpresa.Selected > 0 ? DAOFactory.EmpresaDAO.FindById(cbEmpresa.Selected) : null;
            var linea   = cbLinea.Selected > 0 ? DAOFactory.LineaDAO.FindById(cbLinea.Selected) : null;
            var tipoReferenciaDefault = cbTipoGeoRef.Selected > 0 ? DAOFactory.TipoReferenciaGeograficaDAO.FindById(cbTipoGeoRef.Selected) : null;

            var empresas = new [] { cbEmpresa.Selected };
            var lineas   = new[] { cbLinea.Selected };

            using (var transaction = SmartTransaction.BeginTransaction())
            {
                try
                {
                    foreach (var row in rows)
                    {
                        var tipoCliente = row.GetString(GetColumnByValue(Fields.TipoCliente.Value));
                        var cliente     = DAOFactory.ClienteDAO.FindByDescripcion(new[] { empresa.Id }, new[] { -1 }, tipoCliente);
                        var codigo      = row.GetString(GetColumnByValue(Fields.Codigo.Value));

                        var pto = DAOFactory.PuntoEntregaDAO.FindByCode(new[] { cliente.Empresa.Id }, new[] { cliente.Linea != null ? cliente.Linea.Id : -1 }, new[] { cliente.Id }, codigo);

                        if (pto == null)
                        {
                            var descripcion         = IsMapped(Fields.Descripcion.Value) ? row.GetString(GetColumnByValue(Fields.Descripcion.Value)) : codigo;
                            var longitud            = row.GetDouble(GetColumnByValue(Fields.Longitud.Value));
                            var latitud             = row.GetDouble(GetColumnByValue(Fields.Latitud.Value));
                            var vigenciaDesde       = DateTime.Now;
                            var direccionNomenclada = row.GetString(GetColumnByValue(Fields.Direccion.Value));
                            var geoRef   = new ReferenciaGeografica();
                            var telefono = "";

                            var tipoReferencia = tipoReferenciaDefault;
                            if (tipoReferencia == null)
                            {
                                throw new ApplicationException("Tipo de Referencia Geográfica inválido");
                            }


                            if (latitud.HasValue &&
                                longitud.HasValue)
                            {
                                if (direccionNomenclada == null)
                                {
                                    direccionNomenclada = string.Format("({0}, {1})", latitud.Value, longitud.Value);
                                }
                                geoRef = GetReferenciaGeografica(tipoReferencia, null, empresa, linea, codigo, descripcion, vigenciaDesde, null,
                                                                 latitud.Value, longitud.Value);
                            }

                            pto = CreatePuntoEntrega(cliente, codigo, descripcion, telefono, geoRef);
                        }
                        else
                        {
                            var descripcion = IsMapped(Fields.Descripcion.Value) ? row.GetString(GetColumnByValue(Fields.Descripcion.Value)) : codigo;
                            var longitud    = row.GetDouble(GetColumnByValue(Fields.Longitud.Value));
                            var latitud     = row.GetDouble(GetColumnByValue(Fields.Latitud.Value));

                            pto.Descripcion = descripcion;
                            pto.Nombre      = descripcion;

                            if (pto.ReferenciaGeografica.Latitude != latitud ||
                                pto.ReferenciaGeografica.Longitude != longitud)
                            {
                                pto.ReferenciaGeografica.Direccion.Vigencia.Fin = DateTime.UtcNow;
                                pto.ReferenciaGeografica.Poligono.Vigencia.Fin  = DateTime.UtcNow;

                                #region var posicion = new Direccion()

                                var direccion = GeocoderHelper.GetEsquinaMasCercana(latitud.Value, longitud.Value);

                                var posicion = new Direccion
                                {
                                    Altura       = direccion != null ? direccion.Altura : -1,
                                    IdMapa       = (short)(direccion != null ? direccion.IdMapaUrbano : -1),
                                    Provincia    = direccion != null ? direccion.Provincia : string.Empty,
                                    IdCalle      = direccion != null ? direccion.IdPoligonal : -1,
                                    IdEsquina    = direccion != null ? direccion.IdEsquina : -1,
                                    IdEntrecalle = -1,
                                    Latitud      = latitud.Value,
                                    Longitud     = longitud.Value,
                                    Partido      = direccion != null ? direccion.Partido : string.Empty,
                                    Pais         = string.Empty,
                                    Calle        = direccion != null ? direccion.Calle : string.Empty,
                                    Descripcion  =
                                        direccion != null
                                            ? direccion.Direccion
                                            : string.Format("({0}, {1})", latitud.Value.ToString(CultureInfo.InvariantCulture),
                                                            longitud.Value.ToString(CultureInfo.InvariantCulture)),
                                    Vigencia = new Vigencia {
                                        Inicio = DateTime.UtcNow
                                    }
                                };

                                #endregion

                                #region var poligono = new Poligono()

                                var poligono = new Poligono {
                                    Radio = 100, Vigencia = new Vigencia {
                                        Inicio = DateTime.UtcNow
                                    }
                                };
                                poligono.AddPoints(new[] { new PointF((float)longitud, (float)latitud) });

                                #endregion

                                pto.ReferenciaGeografica.AddHistoria(posicion, poligono, DateTime.UtcNow);

                                DAOFactory.ReferenciaGeograficaDAO.SaveOrUpdate(pto.ReferenciaGeografica);
                            }
                        }

                        DAOFactory.PuntoEntregaDAO.SaveOrUpdate(pto);
                    }
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
        }
示例#29
0
        private PuntoEntrega CreatePuntoEntrega(Cliente cliente, string codigo, string descripcion, string telefono, ReferenciaGeografica rg)
        {
            var pto = new PuntoEntrega();

            pto.Cliente              = cliente;
            pto.Codigo               = codigo;
            pto.Descripcion          = descripcion;
            pto.Baja                 = false;
            pto.ReferenciaGeografica = rg;
            pto.Nomenclado           = true;
            pto.Nombre               = descripcion;

            return(pto);
        }
示例#30
0
        /// <summary>
        /// Interest points data import.
        /// </summary>
        private void ImportPuntosDeInteres()
        {
            var fileName = string.Concat(Server.MapPath(TmpDir), DateTime.Now.ToString("yyyyMMdd-HHmmss"), ".xml");

            try
            {
                fuImportData.SaveAs(fileName);

                var tipoPunto = DAOFactory.TipoReferenciaGeograficaDAO.FindById(ddlTipoDomicilio.Selected);
                var linea     = DAOFactory.LineaDAO.FindById(ddlBase.Selected);
                var kml       = XDocument.Load(fileName);

                //Reads interest points data from givven kml file.
                var features = from feature in kml.Descendants("Placemark")
                               select new
                {
                    Description = ((XElement)feature.FirstNode).Value,
                    Longitude   = Convert.ToDouble(((XElement)feature.LastNode).Value.Split(',')[0], CultureInfo.InvariantCulture),
                    Latitude    = Convert.ToDouble(((XElement)feature.LastNode).Value.Split(',')[1], CultureInfo.InvariantCulture)
                };

                //Generate interest points based on the information readed from the giveen file.
                foreach (var feature in features)
                {
                    var posicion = new Direccion
                    {
                        Altura       = -1,
                        IdMapa       = -1,
                        Provincia    = string.Empty,
                        IdCalle      = -1,
                        IdEsquina    = -1,
                        IdEntrecalle = -1,
                        Latitud      = feature.Latitude,
                        Longitud     = feature.Longitude,
                        Partido      = string.Empty,
                        Pais         = string.Empty,
                        Calle        = string.Empty,
                        Descripcion  = feature.Description,
                        Vigencia     = new Vigencia {
                            Inicio = DateTime.UtcNow
                        }
                    };

                    //Constructs the point.
                    var puntoDeInteres = new ReferenciaGeografica
                    {
                        Descripcion              = feature.Description,
                        Empresa                  = linea.Empresa,
                        Linea                    = linea,
                        EsFin                    = tipoPunto.EsFin,
                        EsInicio                 = tipoPunto.EsInicio,
                        EsIntermedio             = tipoPunto.EsIntermedio,
                        InhibeAlarma             = tipoPunto.InhibeAlarma,
                        TipoReferenciaGeografica = tipoPunto,
                        Vigencia                 = new Vigencia {
                            Inicio = DateTime.UtcNow
                        },
                        Icono = tipoPunto.Icono
                    };

                    puntoDeInteres.Historia.Add(new HistoriaGeoRef
                    {
                        ReferenciaGeografica = puntoDeInteres,
                        Direccion            = posicion,
                        Vigencia             = new Vigencia {
                            Inicio = DateTime.UtcNow
                        },
                    }
                                                );


                    DAOFactory.ReferenciaGeograficaDAO.SingleSaveOrUpdate(puntoDeInteres);
                    STrace.Trace("QtreeReset", "ImportData 2");
                }

                infoLabel1.Mode = InfoLabelMode.INFO;
                infoLabel1.Text = CultureManager.GetSystemMessage(PoiImportOk);
            }
            catch (Exception e) { ShowError(e); }
            finally { File.Delete(fileName); }
        }