/// <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); } }
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); }