public void SetLastLog(Empleado empleado, Empleado.VerificadorEmpleado verificadorEmpleado) { if (verificadorEmpleado == null) { empleado.Delete(LastLogCacheKey); } else { empleado.Store(LastLogCacheKey, verificadorEmpleado); } }
public VerificadorEmpleadoVo(Empleado.VerificadorEmpleado verif, int periodo) { Zona = verif.ZonaAcceso != null ? verif.ZonaAcceso.Descripcion : CultureManager.GetLabel("SIN_ZONA"); TipoZona = verif.ZonaAcceso != null ? verif.ZonaAcceso.TipoZonaAcceso.Descripcion : CultureManager.GetLabel("SIN_ZONA"); Empleado = verif.Empleado != null && verif.Empleado.Entidad != null ? verif.Empleado.Entidad.Descripcion : string.Empty; Legajo = verif.Empleado != null ? verif.Empleado.Legajo : string.Empty; CentroCosto = verif.Empleado != null && verif.Empleado.CentroDeCostos != null ? verif.Empleado.CentroDeCostos.Descripcion : string.Empty; Departamento = verif.Empleado != null && verif.Empleado.Departamento != null ? verif.Empleado.Departamento.Descripcion : string.Empty; CategoriaAcceso = verif.Empleado != null && verif.Empleado.Categoria != null ? verif.Empleado.Categoria.Descripcion : string.Empty; Puerta = verif.PuertaAcceso != null ? verif.PuertaAcceso.Descripcion : string.Empty; Fecha = verif.Fecha.HasValue ? verif.Fecha.Value.ToDisplayDateTime() : verif.Fecha; var ts = verif.Fecha.HasValue ? DateTime.UtcNow.Subtract(verif.Fecha.Value) : new TimeSpan(0); var horas = Convert.ToInt32(ts.TotalHours) - (ts.Minutes > 30 ? 1 : 0); Horas = verif.Fecha.HasValue ? horas.ToString("#00") + ":" + ts.Minutes.ToString("00") : string.Empty; EnPeriodo = verif.Fecha.HasValue && ts.TotalHours < periodo; }
private string ProcessRfidEvent(string code, Event generico) { if (string.IsNullOrEmpty(code)) { STrace.Debug(typeof(Events).FullName, generico.DeviceId, String.Format("RFID invalid message code detected. (Vehicle {0} - Code {1} - RFID Action {2})", Coche.Interno, generico.Code, generico.GetData())); return(code); } var lastLogin = GetLastLogin(Coche); var driver = GetDriverForLogin(generico, lastLogin, code); var text = ExtraText.GetRfidExtraText(code.Equals(MessageCode.RfidDriverLogout.GetMessageCode()) && lastLogin != null && driver != null && driver.Tarjeta != null ? driver.Tarjeta.Pin : generico.GetRiderId(), driver); var login = MessageSaver.Save(generico, code, Dispositivo, Coche, driver, generico.GetDateTime(), generico.GeoPoint, text, ZonaManejo); if (login != null && code.Equals(MessageCode.RfidDriverLogin.GetMessageCode())) { var lastDate = lastLogin != null ? lastLogin.Fecha : DateTime.MinValue; if (lastDate <= login.Fecha) { UpdateLastLogin(lastLogin, login); } } // Cache Current Driver if (driver != null && code.Equals(MessageCode.RfidDriverLogin.GetMessageCode())) { DaoFactory.EmpleadoDAO.SetLoggedInDriver(Coche, driver.Id); } else if (driver != null && code.Equals(MessageCode.RfidDriverLogout.GetMessageCode())) { DaoFactory.EmpleadoDAO.SetLoggedInDriver(Coche, null); } // Cache Last Log if (driver != null) { var verif = new Empleado.VerificadorEmpleado { Empleado = driver, TipoFichada = Empleado.VerificadorEmpleado.TipoDeFichada.SinFichar }; if (login != null) { verif.Fecha = login.Fecha; if (login.Coche != null) { var puerta = DaoFactory.PuertaAccesoDAO.FindByVehiculo(login.Coche.Id); if (puerta != null) { verif.PuertaAcceso = puerta; if (code.Equals(MessageCode.RfidEmployeeLogin.GetMessageCode()) || code.Equals(MessageCode.RfidDriverLogin.GetMessageCode())) { verif.TipoFichada = Empleado.VerificadorEmpleado.TipoDeFichada.Entrada; if (puerta.ZonaAccesoEntrada != null) { verif.ZonaAcceso = puerta.ZonaAccesoEntrada; } } else if (code.Equals(MessageCode.RfidEmployeeLogout.GetMessageCode()) || code.Equals(MessageCode.RfidDriverLogout.GetMessageCode())) { verif.TipoFichada = Empleado.VerificadorEmpleado.TipoDeFichada.Salida; if (puerta.ZonaAccesoSalida != null) { verif.ZonaAcceso = puerta.ZonaAccesoSalida; } } } } } DaoFactory.EmpleadoDAO.SetLastLog(driver, verif); } // Eventos Acceso if (driver != null && (code == MessageCode.RfidEmployeeLogin.GetMessageCode() || code == MessageCode.RfidEmployeeLogout.GetMessageCode() || code == MessageCode.RfidDriverLogin.GetMessageCode() || code == MessageCode.RfidDriverLogout.GetMessageCode())) { var puerta = DaoFactory.PuertaAccesoDAO.FindByVehiculo(Coche.Id); if (puerta != null) { var acceso = new EventoAcceso { Alta = DateTime.UtcNow, Empleado = driver, Entrada = code == MessageCode.RfidEmployeeLogin.GetMessageCode() || code == MessageCode.RfidDriverLogin.GetMessageCode(), Fecha = generico.GetDateTime(), Puerta = puerta }; DaoFactory.EventoAccesoDAO.SaveOrUpdate(acceso); } } return(code); }
public Empleado.VerificadorEmpleado GetLastLog(Empleado empleado) { if (empleado == null) { return(null); } if (empleado.KeyExists(LastLogCacheKey)) { var verificadorEmpleado = empleado.Retrieve <object>(LastLogCacheKey); if (verificadorEmpleado != null) { return((Empleado.VerificadorEmpleado)verificadorEmpleado); } } var mensajes = Session.Query <Mensaje>() .Where(msg => msg.Codigo == MessageCode.RfidEmployeeLogin.GetMessageCode() || msg.Codigo == MessageCode.RfidEmployeeLogout.GetMessageCode()) .Select(msg => msg.Id) .ToList(); var lastLog = Session.Query <LogMensaje>() .Where(message => message.Chofer.Id == empleado.Id && mensajes.Contains(message.Mensaje.Id)) .OrderByDescending(message => message.Fecha) .FirstOrDefault(); var verif = new Empleado.VerificadorEmpleado { Empleado = empleado, TipoFichada = Empleado.VerificadorEmpleado.TipoDeFichada.SinFichar }; if (lastLog != null) { verif.Fecha = lastLog.Fecha; if (lastLog.Coche != null) { var puertaDao = new PuertaAccesoDAO(); var puerta = puertaDao.FindByVehiculo(lastLog.Coche.Id); if (puerta != null) { verif.PuertaAcceso = puerta; if (lastLog.Mensaje.Codigo == MessageCode.RfidEmployeeLogin.GetMessageCode()) { verif.TipoFichada = Empleado.VerificadorEmpleado.TipoDeFichada.Entrada; if (puerta.ZonaAccesoEntrada != null) { verif.ZonaAcceso = puerta.ZonaAccesoEntrada; } } else if (lastLog.Mensaje.Codigo == MessageCode.RfidEmployeeLogout.GetMessageCode()) { verif.TipoFichada = Empleado.VerificadorEmpleado.TipoDeFichada.Salida; if (puerta.ZonaAccesoSalida != null) { verif.ZonaAcceso = puerta.ZonaAccesoSalida; } } } } } empleado.Store(LastLogCacheKey, verif); return(verif); }