示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        // 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());
            }
        }