Example #1
0
 public void SetLastLog(Empleado empleado, Empleado.VerificadorEmpleado verificadorEmpleado)
 {
     if (verificadorEmpleado == null)
     {
         empleado.Delete(LastLogCacheKey);
     }
     else
     {
         empleado.Store(LastLogCacheKey, verificadorEmpleado);
     }
 }
Example #2
0
        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;
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }