private void DeleteCache(string key) { if (LogicCache.KeyExists(typeof(MensajeVO), key)) { LogicCache.Delete(typeof(MensajeVO), key); } }
/// <summary> /// Finds the message with the givenn code for the specified location and base. /// </summary> /// <param name="codigo"></param> /// <param name="device"></param> /// <returns></returns> public MensajeVO GetByCodigo(String codigo, int device) { if (device == 0) { return(null); } if (String.IsNullOrEmpty(codigo)) { return(null); } var vehicle = new CocheDAO().FindMobileByDevice(device); var emp = vehicle.Empresa != null ? vehicle.Empresa.Id : vehicle.Linea != null ? vehicle.Linea.Empresa != null ? vehicle.Linea.Empresa.Id : -1 : -1; var lin = vehicle.Linea != null ? vehicle.Linea.Id : -1; var key = String.Format("message:{0}:{1}:{2}", emp, lin, codigo); if (!LogicCache.KeyExists(typeof(MensajeVO), key)) { var result = FindByEmpresaYLineaAndUser(vehicle.Empresa, vehicle.Linea, null).FirstOrDefault(m => Convert.ToInt32(m.Codigo) == Convert.ToInt32(codigo)); var mensajeVo = result != null ? new MensajeVO(result) : null; LogicCache.Store(typeof(MensajeVO), key, mensajeVo); return(mensajeVo); } return(LogicCache.Retrieve <MensajeVO>(typeof(MensajeVO), key)); }
// public PedidoDAO(ISession session) : base(session) { } #region Find Methods public int FindNextId() { const string cacheKey = "AutoGenCode"; int maxId; if (LogicCache.KeyExists(typeof(Pedido), cacheKey)) { maxId = (int)LogicCache.Retrieve <object>(typeof(Pedido), cacheKey); } else { maxId = Session.Query <Pedido>().Any() ? Session.Query <Pedido>().Max(p => p.Id) : 1; } while (FindByCode(-1, maxId.ToString()) != null) { maxId++; } LogicCache.Store(typeof(Pedido), cacheKey, maxId, DateTime.Now.AddMinutes(5)); return(maxId); }
/// <summary> /// Finds the message with the givenn code for the specified location and base. /// </summary> /// <param name="codigo"></param> /// <param name="empresa"></param> /// <param name="linea"></param> /// <returns></returns> public MensajeVO GetByCodigo(String codigo, Empresa empresa, Linea linea) { if (String.IsNullOrEmpty(codigo)) { return(null); } var emp = empresa != null ? empresa.Id : linea != null ? linea.Empresa != null ? linea.Empresa.Id : -1 : -1; var lin = linea != null ? linea.Id : -1; var key = String.Format("message:{0}:{1}:{2}", emp, lin, codigo); if (!LogicCache.KeyExists(typeof(MensajeVO), key)) { var result = FindByEmpresaYLineaAndUser(empresa, linea, null).FirstOrDefault(m => Convert.ToInt32(m.Codigo) == Convert.ToInt32(codigo)); var mensajeVo = result != null ? new MensajeVO(result) : null; LogicCache.Store(typeof(MensajeVO), key, mensajeVo); return(mensajeVo); } return(LogicCache.Retrieve <MensajeVO>(typeof(MensajeVO), key)); }
public virtual Boolean IsNewestPositionReceivedInCache() { if (Dispositivo == null) { return(false); } var key = MakeNewestDeviceStatusKey(Dispositivo.Id); return(LogicCache.KeyExists(typeof(DeviceStatus), key)); }
/// <summary> /// Procesa una posicion y genera los eventos de entrada y salida de geocerca. /// </summary> /// <param name="data"></param> protected void ProcessGeocercas(PositionEvent data) { try { var geocercas = Puntos; var point = new GPSPoint(data.Date, (float)data.Latitud, (float)data.Longitud); foreach (var geocerca in geocercas) { var key = GetKeyGeocerca(geocerca); if (Regeneracion) { key = "recalc_" + key; } var lastState = LogicCache.KeyExists(typeof(EstadosEntrega), key) ? LogicCache.Retrieve <EstadosEntrega>(typeof(EstadosEntrega), key).Estado : EstadosGeocerca.Desconocido; var geo = DaoFactory.ReferenciaGeograficaDAO.FindGeocerca(geocerca); var p = new PointF(point.Lon, point.Lat); var inside = geo.IsInBounds(p) && geo.Contains(p.Y, p.X); var newState = inside ? EstadosGeocerca.Dentro : EstadosGeocerca.Fuera; if (lastState != newState) { var state = new EstadosEntrega(newState); LogicCache.Store(typeof(EstadosEntrega), key, state, Regeneracion ? DateTime.UtcNow.AddMinutes(5) : DateTime.UtcNow.AddHours(5)); IEvent evento = null; if (lastState == EstadosGeocerca.Dentro && newState == EstadosGeocerca.Fuera) { evento = EventFactory.GetEvent(DaoFactory, point, MessageCode.OutsideGeoRefference.GetMessageCode(), geocerca, 0, null, Empleado); } else if (lastState == EstadosGeocerca.Fuera && newState == EstadosGeocerca.Dentro) { evento = EventFactory.GetEvent(DaoFactory, point, MessageCode.InsideGeoRefference.GetMessageCode(), geocerca, 0, null, Empleado); } if (evento == null) { continue; } ProcessEvent(evento, true); } } } catch (Exception ex) { STrace.Exception(typeof(CicloLogisticoFactory).FullName, ex); } }
public static DateTime GetLastUpdate(int empresa, int linea) { var key = GetGeocercaQtreeKey(empresa, linea); if (!LogicCache.KeyExists(typeof(Geocerca), key)) { return(DateTime.MinValue); } return((DateTime)LogicCache.Retrieve <object>(typeof(Geocerca), key)); }
private static string GetEmployeeRfidAction(string rfid) { var key = string.Format("employeeRfid:{0}", rfid); if (LogicCache.KeyExists(typeof(string), key)) { LogicCache.Delete(typeof(string), key); return(MessageCode.RfidEmployeeLogout.GetMessageCode()); } LogicCache.Store(typeof(string), key, rfid); return(MessageCode.RfidEmployeeLogin.GetMessageCode()); }
public virtual int EtaDistanceTo() { var key = string.Empty; var dist = 0; if (Dispositivo != null) { key = "device_" + Dispositivo.Id + "_ETA_DistanceTo"; } if (LogicCache.KeyExists(typeof(string), key)) { var ret = LogicCache.Retrieve <string>(key); int.TryParse(ret, out dist); } return(dist); }
public virtual DateTime?EtaEstimated() { var key = string.Empty; DateTime?dt = null; if (Dispositivo != null) { key = "device_" + Dispositivo.Id + "_ETA_Estimated"; } if (LogicCache.KeyExists(typeof(string), key)) { var ret = LogicCache.Retrieve <string>(typeof(string), key); dt = DateTime.ParseExact(ret, "O", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal); } return(dt); }
public int FindNextOrdenDiario(int empresa, int linea, DateTime date) { var cacheKey = string.Format("DailyOrder[{0}][{1}]", empresa, linea); int maxId; if (LogicCache.KeyExists(typeof(Ticket), cacheKey)) { maxId = (int)LogicCache.Retrieve <object>(typeof(Ticket), cacheKey); } else { var max = Query.FilterEmpresa(Session, new[] { empresa }, null) .FilterLinea(Session, new[] { empresa }, new[] { linea }, null) .Where(t => t.FechaTicket >= date.Date && t.FechaTicket < date.Date.AddDays(1) && t.OrdenDiario.HasValue && t.Estado != Ticket.Estados.Eliminado) .Max(t => t.OrdenDiario); maxId = max.HasValue ? max.Value : 0; } maxId++; LogicCache.Store(typeof(Pedido), cacheKey, maxId, DateTime.Now.AddMinutes(5)); return(maxId); }
protected override void OnExecute(Timer timer) { if (IdEmpresa <= 0) { return; } var keyUpdate = Component + "_update_" + IdEmpresa; var keyLastUpdate = Component + "_lastUpdate_" + IdEmpresa; if (LogicCache.KeyExists(typeof(bool), keyUpdate)) { _update = (bool)LogicCache.Retrieve <object>(typeof(bool), keyUpdate); } STrace.Trace(Component, string.Format("Init Update: {0}", _update ? "TRUE" : "FALSE")); if (LogicCache.KeyExists(typeof(DateTime), keyLastUpdate)) { _lastUpdate = (DateTime)LogicCache.Retrieve <object>(typeof(DateTime), keyLastUpdate); } //var archivoPendiente = DaoFactory.LogicLinkFileDAO.GetNextPendiente(IdEmpresa); //if (archivoPendiente != null) //{ // STrace.Trace(Component, "Archivo a procesar: " + archivoPendiente.FilePath); // // var te = new TimeElapsed(); // ProcessArchivo(archivoPendiente); // STrace.Trace(Component, "Archivo procesado en: " + te.getTimeElapsed().TotalSeconds + " segundos."); //} var archivosPendientes = DaoFactory.LogicLinkFileDAO.GetPendientes(IdEmpresa).ToList(); STrace.Trace(Component, "Archivos pendientes: " + archivosPendientes.Count()); //var archivo = DaoFactory.LogicLinkFileDAO.FindById(); //archivosPendientes.Add(archivo); foreach (var archivoPendiente in archivosPendientes) { STrace.Trace(Component, "Archivo a procesar: " + archivoPendiente.FilePath); var te = new TimeElapsed(); ProcessArchivo(archivoPendiente); STrace.Trace(Component, "Archivo procesado en: " + te.getTimeElapsed().TotalSeconds + " segundos."); } var empresa = DaoFactory.EmpresaDAO.FindById(IdEmpresa); var now = DateTime.UtcNow; var lastUpdateMinutes = now.Subtract(_lastUpdate).TotalMinutes; STrace.Trace(Component, string.Format("Last Update: {0} - {1} minutos", _lastUpdate.ToString("dd/MM/yyyy HH:mm:ss"), lastUpdateMinutes)); STrace.Trace(Component, string.Format("Update: {0}", _update ? "TRUE" : "FALSE")); if (lastUpdateMinutes > empresa.LogiclinkMinutosUpdate && _update) { var lineas = new List <int>(); var dict = new Dictionary <int, List <int> >(); var todaslaslineas = DaoFactory.LineaDAO.GetList(new[] { IdEmpresa }); lineas.Add(-1); lineas.AddRange(todaslaslineas.Select(l => l.Id)); dict.Add(IdEmpresa, lineas); DaoFactory.ReferenciaGeograficaDAO.UpdateGeocercas(dict); _update = false; _lastUpdate = now; } STrace.Trace(Component, string.Format("Store Update: {0}", _update ? "TRUE" : "FALSE")); LogicCache.Store(typeof(bool), keyUpdate, _update); LogicCache.Store(typeof(DateTime), keyLastUpdate, _lastUpdate); }
/// <summary> /// Elimina el estado de todas las geocercas de este ticket de la cache /// </summary> protected void ClearGeocercasCache() { foreach (var key in Geocercas.Select(g => GetKeyGeocerca(g)).Where(key => LogicCache.KeyExists(typeof(EstadosEntrega), key))) { LogicCache.Delete(typeof(EstadosEntrega), key); } }