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); } }
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); }
private string GetPoiPopupContent(ReferenciaGeografica dom) { var lineas = SelectedLineas.Aggregate("", (current, linea) => current + (linea.ToString("#0") + ",")); lineas = lineas.TrimEnd(','); return("javascript:getPOIP('" + dom.Id + "','" + lineas + "')"); }
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)); }
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); }
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(); }
public void SetReferencia(ReferenciaGeografica referencia) { if (referencia != null) { SelectedId = referencia.Id; lblReferencia.Text = referencia.Descripcion; SwitchView(0); } SetResultView(false); updControl.Update(); OnDireccionSelected(); }
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); } }
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; }
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); }
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; }
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; }
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); }
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); }
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; } }
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); }
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"); } }
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); } }
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); } }
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); } }
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); }
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("\"", "\\\"") )); }
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); }
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); }
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); } } } } }
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); } } } } }
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); }
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; } } }
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); }
/// <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); } }