private static QtreeNode GetQtree(int empresa, int linea) { var lastMod = ReferenciaGeograficaDAO.GetLastUpdate(empresa, linea); var key = GetQtreeKey(empresa, linea); var root = Qtrees.ContainsKey(key) ? Qtrees[key] : null; if (root != null && lastMod < root.LastUpdate) { return(root); } if (Monitor.TryEnter(Qtrees)) { try { STrace.Error("ResetQtree", string.Format("qtree UPDATE ---> Empresa: {0} - Linea: {1}", empresa, linea)); using (var transaction = SmartTransaction.BeginTransaction()) { var daoFactory = new DAOFactory(); var geocercas = daoFactory.ReferenciaGeograficaDAO.GetGeocercasFor(empresa, linea); transaction.Commit(); var keyToRemove = string.Empty; if (root != null) { keyToRemove = key; } root = new QtreeNode(); foreach (var geocerca in geocercas) { root.AddValue(geocerca); } if (keyToRemove != string.Empty) { Qtrees.Remove(keyToRemove); } Qtrees.Add(key, root); } STrace.Trace("DispatcherLock", string.Format("qtree NEW ---> {0} | {1}", empresa, linea)); } finally { Monitor.Exit(Qtrees); } } else { STrace.Trace("DispatcherLock", string.Format("qtree OLD ---> {0} | {1}", empresa, linea)); } return(root); }
public override void Delete(Zona obj) { if (obj == null) { return; } obj.Baja = true; var geocercaDao = new ReferenciaGeograficaDAO(); foreach (ReferenciaGeografica r in obj.Referencias) { geocercaDao.ClearGeocerca(r.Id); } SaveOrUpdate(obj); }
// GET: api/Routes/1234567890A public IHttpActionResult Get(int id) { try { var deviceId = GetDeviceId(Request); if (deviceId == null) { return(BadRequest()); } var items = new List <Geocerca>(); PuertaAccesoDAO puertas = new PuertaAccesoDAO(); // puerta ReferenciaGeograficaDAO referencias = new ReferenciaGeograficaDAO(); EmpleadoDAO empleado = new EmpleadoDAO(); // emple //fecha DispositivoDAO dispositivo = new DispositivoDAO(); var device = dispositivo.FindByImei(deviceId); var employee = empleado.FindEmpleadoByDevice(device); List <int> empresas = new List <int>(); empresas.Add(employee.Empresa.Id); var lineas = new int[] { }; List <PuertaAcceso> lista = puertas.GetList(empresas, lineas); foreach (var item in lista) { if (item.ReferenciaGeografica != null && !items.Exists(x => x.id.Equals(item.Id))) { if (item.ReferenciaGeografica.Id > id) { string radio = "50"; if (item.ReferenciaGeografica.Poligono != null) { radio = item.ReferenciaGeografica.Poligono.Radio.ToString(); } string calle = ""; string altura = ""; if (item.ReferenciaGeografica.Direccion != null) { calle = item.ReferenciaGeografica.Direccion.Calle; altura = item.ReferenciaGeografica.Direccion.Altura.ToString(); } items.Add(new Geocerca() { id = Convert.ToString(item.ReferenciaGeografica.Id), latitude = item.ReferenciaGeografica.Latitude.ToString(), nombre = item.Descripcion, radio = radio, longitude = item.ReferenciaGeografica.Longitude.ToString(), calle = calle, altura = altura, idpuerta = item.Id.ToString() }); } } } return(Ok(items.ToArray().OrderBy(item => item.id).ToArray())); } catch (Exception error) { LogicTracker.App.Web.Api.Providers.LogWritter.writeLog(error); return(BadRequest()); } }