예제 #1
0
        protected void AddMarker(EntidadPadre entidad, string style)
        {
            if (entidad != null)
            {
                var icono = IconDir;
                if (entidad.ReferenciaGeografica != null && entidad.ReferenciaGeografica.Icono != null)
                {
                    icono += entidad.ReferenciaGeografica.Icono.PathIcono;
                }

                var desc             = entidad.Descripcion;
                var refGeo           = entidad.ReferenciaGeografica;
                var vehiculoAsociado = DAOFactory.CocheDAO.FindMobileByDevice(entidad.Dispositivo.Id);
                var ultimaPosicion   = vehiculoAsociado != null?DAOFactory.LogPosicionDAO.GetLastVehiclesPositions(new List <Coche> {
                    vehiculoAsociado
                })[vehiculoAsociado.Id] : null;

                var latitud  = ultimaPosicion != null ? ultimaPosicion.Latitud : refGeo != null ? refGeo.Latitude : 0;
                var longitud = ultimaPosicion != null ? ultimaPosicion.Longitud : refGeo != null ? refGeo.Longitude : 0;
                var marker   = MarkerFactory.CreateLabeledMarker(entidad.Id.ToString("#0"), icono, latitud, longitud, desc, style, GetMovilPopupContent(entidad));

                if (refGeo != null && refGeo.Icono != null)
                {
                    marker.Size   = DrawingFactory.GetSize(refGeo.Icono.Width, refGeo.Icono.Height);
                    marker.Offset = DrawingFactory.GetOffset(refGeo.Icono.OffsetX, refGeo.Icono.OffsetY);
                }

                Monitor.AddMarkers(LayerEntidades, marker);
            }
        }
예제 #2
0
        public void SetUp()
        {
            //
            // CREATE THE STARTING POINT TIME.
            //
            DateTime StartPointDateTime = DateTime.Parse("2018-01-01T00:00:00");
            double   TimeIncrement      = 1d;
            int      SequenceNumber     = 0;

            //
            // CREATE THE STACK.
            //
            Marker CreatedMarker = MarkerFactory.StartMarker("SectorFactorsWeeklyApp");

            CreatedMarker.Start("MaxSectorFactorIdQuery");
            CreatedMarker.End("MaxSectorFactorIdQuery");
            CreatedMarker.Start("ByMetricDateGetSectorFactorsQuery");
            CreatedMarker.End("ByMetricDateGetSectorFactorsQuery");
            CreatedMarker.Start("CopySectorFactors");

            for (int i = 0; i < 1000; i++)
            {
                CreatedMarker.Start("CopySectorFactor");
                CreatedMarker.End("CopySectorFactor");
            }

            CreatedMarker.End("CopySectorFactors");
            CreatedMarker.End();

            //
            // CREATE THE REPORT.
            //
            _ReportText = MarkerReportFactoryProvider.CreateReportFactory().CreateReport(CreatedMarker);
        }
예제 #3
0
        public GoogleMapBuilder Markers(Action <MarkerFactory> action)
        {
            if (action == null)
            {
                throw new ArgumentNullException("action");
            }
            var factory = new MarkerFactory(Component);

            action(factory);
            return(this);
        }
예제 #4
0
        protected void AddMarker(EntregaDistribucion item, string imageUrl)
        {
            if (item.ReferenciaGeografica == null)
            {
                return;
            }
            var id       = item.Id.ToString("0");
            var latitud  = item.ReferenciaGeografica.Latitude;
            var longitud = item.ReferenciaGeografica.Longitude;
            var label    = item.Programado.ToString("HH:mm");
            var marker   = MarkerFactory.CreateLabeledMarker("m" + id, imageUrl, latitud, longitud, label);

            marker.Size   = DrawingFactory.GetSize(20, 20);
            marker.Offset = DrawingFactory.GetOffset(-10, -10);
            Monitor1.AddMarkers(LayerEntregas, marker);
        }
예제 #5
0
        protected void ShowMensaje(LogMensaje mensaje)
        {
            var iconDir = IconDir;

            var color = mensaje.Accion != null
                            ? Color.FromArgb(100, mensaje.Accion.Red, mensaje.Accion.Green, mensaje.Accion.Blue)
                            : Color.Gray;

            panelTitle.BackColor = color;
            panelTitle.ForeColor = color.GetBrightness() < 40 ? Color.White: Color.Black;

            if (mensaje.Accion != null && mensaje.Accion.PopIcon > 0)
            {
                imgAccion.ImageUrl = string.Format("{0}/{1}", iconDir, mensaje.Accion.PopUpIcon.PathIcono);
            }
            else
            {
                imgAccion.Visible = false;
            }

            lbMensaje.Text    = mensaje.Texto;
            lblHora.Text      = mensaje.Fecha.ToDisplayDateTime().ToString("dd/MM/yyyy HH:mm");
            lblRecepcion.Text = mensaje.FechaAlta.HasValue
                                    ? "(" + mensaje.FechaAlta.Value.ToDisplayDateTime().ToString("dd/MM/yyyy HH:mm") + ")"
                                    : string.Empty;

            var pos = mensaje.Fecha;

            var link = string.Format(
                "../Monitor/MonitorHistorico/monitorHistorico.aspx?Planta={0}&TypeMobile={1}&Movil={2}&InitialDate={3}&FinalDate={4}&ShowMessages=0&ShowPOIS=0&Empresa={5}",
                mensaje.Coche.Linea != null ? mensaje.Coche.Linea.Id : -1, mensaje.Coche.TipoCoche.Id, mensaje.Coche.Id, pos.Subtract(TimeSpan.FromMinutes(15)).ToString(CultureInfo.InvariantCulture),
                pos.Add(TimeSpan.FromMinutes(1)).ToString(CultureInfo.InvariantCulture), mensaje.Coche.Empresa != null ? mensaje.Coche.Empresa.Id : mensaje.Coche.Linea != null ? mensaje.Coche.Linea.Empresa.Id : -1);

            lbMensaje.OnClientClick = string.Format("window.open('{0}', '" + CultureManager.GetMenu("OPE_MON_HISTORICO") + "')", link);

            lblMovil.Text = mensaje.Coche.Interno;
            var imgMovl = string.Format("{0}/{1}", iconDir, mensaje.Coche.TipoCoche.IconoNormal.PathIcono);

            imgMovil.ImageUrl = imgMovl;

            var chofer = mensaje.Chofer ?? mensaje.Coche.Chofer;

            lblChofer.Text = chofer != null
                                 ? string.Format("{0} - {1}", chofer.Legajo, chofer.Entidad.Descripcion)
                                 : CultureManager.GetString("Labels", "SIN_CHOFER");

            lblDireccion.Text = GeocoderHelper.GetDescripcionEsquinaMasCercana(mensaje.Latitud, mensaje.Longitud);

            lblLatitud.Text  = mensaje.Latitud.ToString(CultureInfo.InvariantCulture);
            lblLongitud.Text = mensaje.Longitud.ToString(CultureInfo.InvariantCulture);

            Monitor1.ImgPath          = Config.Monitor.GetMonitorImagesFolder(this);
            Monitor1.GoogleMapsScript = GoogleMapsKey;
            Monitor1.EnableTimer      = false;
            Monitor1.AddLayers(LayerFactory.GetGoogleStreet(CultureManager.GetLabel("LAYER_GSTREET"), 8),
                               //LayerFactory.GetCompumap(CultureManager.GetLabel("LAYER_COMPUMAP"), Config.Map.CompumapTiles, 8),
                               LayerFactory.GetOpenStreetMap(CultureManager.GetLabel("LAYER_OSM")),
                               LayerFactory.GetGoogleSatellite(CultureManager.GetLabel("LAYER_GSAT"), 8),
                               LayerFactory.GetGoogleHybrid(CultureManager.GetLabel("LAYER_GHIBRIDO"), 8),
                               LayerFactory.GetGooglePhysical(CultureManager.GetLabel("LAYER_GFISICO"), 8),
                               LayerFactory.GetMarkers(LayerVehiculos, true));
            Monitor1.AddControls(ControlFactory.GetLayerSwitcher(),
                                 ControlFactory.GetNavigation());
            Monitor1.SetCenter(mensaje.Latitud, mensaje.Longitud, 7);
            Monitor1.AddMarkers(LayerVehiculos, MarkerFactory.CreateMarker(mensaje.Coche.Id.ToString("#0"), imgMovl, mensaje.Latitud, mensaje.Longitud));

            var empresa = mensaje.Coche.Empresa;
            var linea   = mensaje.Coche.Linea;
            var user    = WebSecurity.AuthenticatedUser != null?DAOFactory.UsuarioDAO.FindById(WebSecurity.AuthenticatedUser.Id) : null;

            var mensajes = DAOFactory.MensajeDAO.FindByTipo(null, empresa, linea, user);
            var messages = mensajes.Where(m => m.TipoMensaje.DeAtencion).OrderBy(m => m.Descripcion);

            cbMensaje.ClearItems();
            cbMensaje.AddItem(CultureManager.GetControl("DDL_NO_MESSAGE"), cbMensaje.NoneValue);
            foreach (var msg in messages)
            {
                cbMensaje.AddItem(msg.Descripcion, msg.Id);
            }

            if (mensaje.Estado > 0)
            {
                btAceptar.Visible  = false;
                btIgnorar.ImageUrl = "~/Operacion/btAtras.gif";

                var atencion = DAOFactory.AtencionEventoDAO.GetByEvento(mensaje.Id);
                if (atencion != null)
                {
                    panelUsuario.Visible = true;
                    lblUsuario.Text      = atencion.Usuario.NombreUsuario;
                    panelFecha.Visible   = true;
                    lblFecha.Text        = atencion.Fecha.ToDisplayDateTime().ToString("dd/MM/yyyy HH:mm");
                    cbMensaje.SetSelectedValue(atencion.Mensaje.Id);
                    cbMensaje.Enabled      = false;
                    txtObservacion.Text    = atencion.Observacion;
                    txtObservacion.Enabled = false;
                }
            }

            if (!WebSecurity.IsSecuredAllowed(Securables.EventAttention))
            {
                btAceptar.Visible  = false;
                btIgnorar.ImageUrl = "~/Operacion/btAtras.gif";
            }
        }
예제 #6
0
        protected void ShowPuntos(List <ViajeDistribucion> distribuciones)
        {
            monitorPuntos.ClearLayers();

            var entregas = new List <EntregaDistribucion>();

            foreach (var distribucion in distribuciones)
            {
                entregas.AddRange(distribucion.Detalles.Where(d => d.Linea == null));
            }

            var completados   = entregas.Count(e => e.Estado == EntregaDistribucion.Estados.Completado);
            var visitados     = entregas.Count(e => e.Estado == EntregaDistribucion.Estados.Visitado);
            var noCompletados = entregas.Count(e => e.Estado == EntregaDistribucion.Estados.NoCompletado);
            var sinVisitar    = entregas.Count(e => e.Estado == EntregaDistribucion.Estados.SinVisitar);
            var enSitio       = entregas.Count(e => e.Estado == EntregaDistribucion.Estados.EnSitio);
            var pendientes    = entregas.Count(e => e.Estado == EntregaDistribucion.Estados.Pendiente);
            var enZona        = entregas.Count(e => e.Estado == EntregaDistribucion.Estados.EnZona);

            var estados   = GetEstados();
            var filtradas = entregas.Where(e => estados.Count == 0 || estados.Contains(e.Estado));

            var markers = new List <Marker>();
            var lat     = 0.0;
            var lon     = 0.0;

            foreach (var entrega in filtradas)
            {
                var punto = entrega.ReferenciaGeografica;
                if (punto != null)
                {
                    string url;
                    var    style = string.Empty;
                    var    text  = string.Empty;
                    lat = punto.Latitude;
                    lon = punto.Longitude;

                    switch (entrega.Estado)
                    {
                    case EntregaDistribucion.Estados.Completado:
                        url   = ResolveUrl("~/images/Green-Ball-icon.png");
                        style = "ol_marker_labeled_green";
                        text  = entrega.Manual.HasValue
                                        ? entrega.Orden + " (" + entrega.Manual.Value.ToDisplayDateTime().ToString("HH:mm") + ")"
                                        : entrega.Orden.ToString("#0");
                        break;

                    case EntregaDistribucion.Estados.Visitado:
                        url   = ResolveUrl("~/images/Yellow-Ball-icon.png");
                        style = "ol_marker_labeled_yellow";
                        text  = entrega.Entrada.HasValue
                                        ? entrega.Orden + " (" + entrega.Entrada.Value.ToDisplayDateTime().ToString("HH:mm") + ")"
                                        : entrega.Orden.ToString("#0");
                        break;

                    case EntregaDistribucion.Estados.NoCompletado:
                        url   = ResolveUrl("~/images/Red-Ball-icon.png");
                        style = "ol_marker_labeled_red";
                        text  = entrega.Manual.HasValue
                                        ? entrega.Orden + " (" + entrega.Manual.Value.ToDisplayDateTime().ToString("HH:mm") + ")"
                                        : entrega.Orden.ToString("#0");
                        break;

                    case EntregaDistribucion.Estados.EnSitio:
                        url   = ResolveUrl("~/images/Blue-Ball-icon.png");
                        style = "ol_marker_labeled_blue";
                        text  = entrega.Entrada.HasValue
                                        ? entrega.Orden + " (" + entrega.Entrada.Value.ToDisplayDateTime().ToString("HH:mm") + ")"
                                        : entrega.Orden.ToString("#0");
                        break;

                    case EntregaDistribucion.Estados.EnZona:
                        url   = ResolveUrl("~/images/Grey-Ball-icon.png");
                        style = "ol_marker_labeled";
                        text  = entrega.Entrada.HasValue
                                        ? entrega.Orden + " (" + entrega.Entrada.Value.ToDisplayDateTime().ToString("HH:mm") + ")"
                                        : entrega.Orden.ToString("#0");
                        break;

                    default:
                        url = ResolveUrl("~/images/Orange-Ball-icon.png");
                        break;
                    }

                    if (style != string.Empty)
                    {
                        var lmarker = MarkerFactory.CreateLabeledMarker("P:" + punto.Id, url, punto.Latitude, punto.Longitude, text, style, GetEntregaPopupContent(entrega.Id));
                        markers.Add(lmarker);
                    }
                    else
                    {
                        var marker = MarkerFactory.CreateMarker("P:" + punto.Id, url, punto.Latitude, punto.Longitude, GetEntregaPopupContent(entrega.Id));
                        markers.Add(marker);
                    }
                }

                if (lat != 0.0 && lon != 0.0)
                {
                    monitorPuntos.SetCenter(lat, lon);
                }
            }

            monitorPuntos.AddMarkers(LayerPuntos, markers.ToArray());

            var porc        = 0.0;
            var finalizados = completados + visitados + enSitio + enZona;

            if (entregas.Count > 0 && finalizados > 0)
            {
                porc = (float)finalizados / (float)entregas.Count * 100;
            }

            gaugeCompletados.Gauges[0].Value = porc;
            lblCompletados.Text   = porc.ToString("#0") + " % (" + finalizados + ")";
            lblComp.Text          = completados.ToString("#0");
            lblVisitados.Text     = visitados.ToString("#0");
            lblNoCompletados.Text = noCompletados.ToString("#0");
            lblSinVisitar.Text    = sinVisitar.ToString("#0");
            lblEnSitio.Text       = enSitio.ToString("#0");
            lblPendientes.Text    = pendientes.ToString("#0");
            lblEnZona.Text        = enZona.ToString("#0");
            lblTotal.Text         = entregas.Count.ToString("#0");
            lblRutas.Text         = distribuciones.Count.ToString("#0");
        }
예제 #7
0
 private void InitMarker(Marker marker)
 {
     _marker              = marker;
     _mapMarker           = MarkerFactory.CreateMarker(_marker.MarkerType);
     _mapMarker.IsVisible = false;
 }
예제 #8
0
        protected void ShowEvento(LogEvento evento)
        {
            var iconDir = IconDir;

            var color = evento.Accion != null
                            ? Color.FromArgb(100, evento.Accion.Red, evento.Accion.Green, evento.Accion.Blue)
                            : Color.Gray;

            panelTitle.BackColor = color;
            panelTitle.ForeColor = color.GetBrightness() < 40 ? Color.White : Color.Black;

            if (evento.Accion != null && evento.Accion.PopIcon > 0)
            {
                imgAccion.ImageUrl = string.Format("{0}/{1}", iconDir, evento.Accion.PopUpIcon.PathIcono);
            }
            else
            {
                imgAccion.Visible = false;
            }

            lbMensaje.Text     = evento.Texto;
            lblHora.Text       = evento.Fecha.ToDisplayDateTime().ToString("dd \"de\" MMMM \"de\" yyyy HH:mm");
            lblEntidad.Text    = evento.SubEntidad != null ? evento.SubEntidad.Entidad.Descripcion : string.Empty;
            lblSubEntidad.Text = evento.SubEntidad != null ? evento.SubEntidad.Descripcion : string.Empty;
            if (evento.SubEntidad != null)
            {
                foreach (DetalleValor detalle in evento.SubEntidad.Entidad.Detalles)
                {
                    var valor = string.Empty;
                    switch (detalle.Detalle.Tipo)
                    {
                    case 1:
                        valor = detalle.ValorStr;
                        break;

                    case 2:
                        valor = detalle.ValorNum.ToString("#0.00");
                        break;

                    case 3:
                        valor = detalle.ValorDt.HasValue ? detalle.ValorDt.Value.ToString("dd/MM/yyyy HH:mm") : string.Empty;
                        break;
                    }

                    var lbl = new Label {
                        Text = @"<b>" + detalle.Detalle.Nombre + @":</b> " + valor + @"<br/><br/>"
                    };
                    panelDetalles.Controls.Add(lbl);
                }

                lblDireccion.Text = GeocoderHelper.GetDescripcionEsquinaMasCercana(evento.SubEntidad.Entidad.ReferenciaGeografica.Latitude, evento.SubEntidad.Entidad.ReferenciaGeografica.Longitude);
            }

            Monitor1.ImgPath          = Config.Monitor.GetMonitorImagesFolder(this);
            Monitor1.GoogleMapsScript = GoogleMapsKey;
            Monitor1.EnableTimer      = false;
            Monitor1.AddLayers(LayerFactory.GetGoogleStreet(CultureManager.GetLabel("LAYER_GSTREET"), 8),
                               //LayerFactory.GetCompumap(CultureManager.GetLabel("LAYER_COMPUMAP"), Config.Map.CompumapTiles, 8),
                               LayerFactory.GetOpenStreetMap(CultureManager.GetLabel("LAYER_OSM")),
                               LayerFactory.GetGoogleSatellite(CultureManager.GetLabel("LAYER_GSAT"), 8),
                               LayerFactory.GetGoogleHybrid(CultureManager.GetLabel("LAYER_GHIBRIDO"), 8),
                               LayerFactory.GetGooglePhysical(CultureManager.GetLabel("LAYER_GFISICO"), 8),
                               LayerFactory.GetMarkers(LayerEntidades, true));
            Monitor1.AddControls(ControlFactory.GetLayerSwitcher(), ControlFactory.GetNavigation());

            if (evento.SubEntidad != null)
            {
                Monitor1.SetCenter(evento.SubEntidad.Entidad.ReferenciaGeografica.Latitude, evento.SubEntidad.Entidad.ReferenciaGeografica.Longitude, 7);
                var imgEntidad = string.Format("{0}{1}", iconDir, evento.SubEntidad.Entidad.ReferenciaGeografica.Icono.PathIcono);

                Monitor1.AddMarkers(LayerEntidades, MarkerFactory.CreateMarker(evento.SubEntidad.Entidad.Id.ToString("#0"),
                                                                               imgEntidad,
                                                                               evento.SubEntidad.Entidad.ReferenciaGeografica.Latitude,
                                                                               evento.SubEntidad.Entidad.ReferenciaGeografica.Longitude));
            }

            if (evento.Estado > 0)
            {
                btAceptar.Visible  = false;
                btIgnorar.ImageUrl = "~/Operacion/btAtras.gif";
            }
        }