コード例 #1
0
ファイル: GeoRefAlta.aspx.cs プロジェクト: jesumarquez/lt
        /// <summary>
        /// Adds speeds limits per vehicle T to the current geocerca.
        /// </summary>
        private void AddSpeedLimits()
        {
            EditObject.VelocidadesMaximas.Clear();

            for (var i = 0; i < gridVelocidades.Rows.Count; i++)
            {
                var id   = (int)gridVelocidades.DataKeys[i].Value;
                var txt  = gridVelocidades.Rows[i].FindControl("txtVelocidadMaxima") as TextBox;
                var velo = 0;

                if (txt != null && (!int.TryParse(txt.Text, out velo)))
                {
                    continue;
                }

                var gv = new ReferenciaVelocidad {
                    ReferenciaGeografica = EditObject, TipoVehiculo = DAOFactory.TipoCocheDAO.FindById(id), VelocidadMaxima = velo
                };

                EditObject.VelocidadesMaximas.Add(gv);
            }
        }
コード例 #2
0
        public ReferenciaGeografica GetNewGeoRefference()
        {
            if (!EditMode)
            {
                EditObject.Linea   = IdLinea > 0 ? DAOFactory.LineaDAO.FindById(IdLinea) : null;
                EditObject.Empresa = EditObject.Linea != null
                                               ? EditObject.Linea.Empresa
                                               : IdEmpresa > 0 ? DAOFactory.EmpresaDAO.FindById(IdEmpresa) : null;
            }
            EditObject.TipoReferenciaGeografica = DAOFactory.TipoReferenciaGeograficaDAO.FindById(cbTipoReferenciaGeografica.Selected);

            if (!EditMode)
            {
                EditObject.Descripcion = EditGeoRef1.Direccion != null ? EditGeoRef1.Direccion.Descripcion : "Sin Descripcion";
            }
            EditObject.Icono          = IconId > 0 ? DAOFactory.IconoDAO.FindById(IconId) : null;
            EditObject.Color.HexValue = Color;
            EditObject.InhibeAlarma   = EditObject.TipoReferenciaGeografica.InhibeAlarma;
            EditObject.EsInicio       = EditObject.TipoReferenciaGeografica.EsInicio;
            EditObject.EsIntermedio   = EditObject.TipoReferenciaGeografica.EsIntermedio;
            EditObject.EsFin          = EditObject.TipoReferenciaGeografica.EsFin;

            var lastDir = EditObject.Direccion;
            var newDir  = EditGeoRef1.Direccion;

            var lastPol = EditObject.Poligono;
            var newPol  = EditGeoRef1.Poligono;

            var now              = txtVigenciaDesde.SelectedDate.HasValue ? txtVigenciaDesde.SelectedDate.Value : DateTime.UtcNow;
            var ChangedPolygon   = EditObject.Poligono == null ? EditGeoRef1.Poligono != null : !EditObject.Poligono.Equals(EditGeoRef1.Poligono);
            var ChangedDireccion = EditObject.Direccion == null ? EditGeoRef1.Direccion != null : !EditObject.Direccion.Equals(EditGeoRef1.Direccion);

            if (ChangedDireccion || ChangedPolygon)
            {
                if (lastPol != null && lastPol.Vigencia == null)
                {
                    lastPol.Vigencia = new Vigencia();
                }
                if (lastDir != null && lastDir.Vigencia == null)
                {
                    lastDir.Vigencia = new Vigencia();
                }
                if (ChangedPolygon && lastPol != null)
                {
                    lastPol.Vigencia.Fin = now;
                }
                if (ChangedDireccion && lastDir != null)
                {
                    lastDir.Vigencia.Fin = now;
                }

                var hist = EditObject.GetHistoria(now);
                if (hist != null && hist.Vigencia == null)
                {
                    hist.Vigencia = new Vigencia();
                }
                if (hist != null)
                {
                    hist.Vigencia.Fin = now;
                }

                if (ChangedDireccion && EditObject.Direccion != null)
                {
                    if (EditObject.Direccion.Vigencia == null)
                    {
                        EditObject.Direccion.Vigencia = new Vigencia();
                    }
                    EditObject.Direccion.Vigencia.Fin = now;
                }
                if (ChangedPolygon && EditObject.Poligono != null)
                {
                    if (EditObject.Poligono.Vigencia == null)
                    {
                        EditObject.Poligono.Vigencia = new Vigencia();
                    }
                    EditObject.Poligono.Vigencia.Fin = now;
                }


                var newDireccion = EditObject.Direccion;
                var newPoligono  = EditObject.Poligono;
                if (ChangedDireccion)
                {
                    if (newDir == null)
                    {
                        newDireccion = null;
                    }
                    else
                    {
                        newDireccion = new Direccion {
                            Vigencia = new Vigencia {
                                Inicio = now
                            }
                        };
                        newDireccion.CloneData(newDir);
                    }
                }
                if (ChangedPolygon)
                {
                    if (newPol == null)
                    {
                        newPoligono = null;
                    }
                    else
                    {
                        newPoligono = new Poligono {
                            Vigencia = new Vigencia {
                                Inicio = now
                            }
                        };
                        newPoligono.AddPoints(newPol.ToPointFList());
                        newPoligono.Radio = newPol.Radio;
                    }
                }

                if (newDireccion == null && newPoligono == null)
                {
                    return(null);
                }

                EditObject.AddHistoria(newDireccion, newPoligono, now);
            }
            else if (EditObject.Direccion == null && EditObject.Poligono == null)
            {
                return(null);
            }

            if (EditObject.TipoReferenciaGeografica.ControlaVelocidad)
            {
                EditObject.VelocidadesMaximas.Clear();

                foreach (TipoReferenciaVelocidad maxima in EditObject.TipoReferenciaGeografica.VelocidadesMaximas)
                {
                    var gv = new ReferenciaVelocidad
                    {
                        ReferenciaGeografica = EditObject,
                        TipoVehiculo         = maxima.TipoVehiculo,
                        VelocidadMaxima      = maxima.VelocidadMaxima
                    };

                    EditObject.VelocidadesMaximas.Add(gv);
                }
            }

            return(EditObject);
        }