Example #1
0
        public IHttpActionResult actualizarGeocerca([FromBody] Geocerca geocerca)
        {
            try
            {
                if (geocerca == null)
                {
                    return(BadRequest());
                }
                var msgCodes = new List <string>();
                var deviceId = GetDeviceId(Request);
                if (deviceId == null)
                {
                    return(Unauthorized());
                }

                DateTime horaentrada = DateTime.ParseExact(geocerca.horaentrada.ToString(), "yyyy-MM-dd-HH.mm.ss.fff", System.Globalization.CultureInfo.InvariantCulture);
                DateTime horasalida  = DateTime.ParseExact(geocerca.horariosalida.ToString(), "yyyy-MM-dd-HH.mm.ss.fff", System.Globalization.CultureInfo.InvariantCulture);

                EmpleadoDAO     empleado    = new EmpleadoDAO();     // emple //fecha
                DispositivoDAO  dispositivo = new DispositivoDAO();
                PuertaAccesoDAO puertas     = new PuertaAccesoDAO(); // puerta

                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[] { };
                PuertaAcceso puerta = puertas.GetList(empresas, lineas).Where(x => x.Id.ToString().Equals(geocerca.idpuerta)).First();
                if (puerta != null)
                {
                    EventoAcceso entrada = new EventoAcceso();
                    entrada.Empleado = employee;
                    entrada.Alta     = DateTime.UtcNow;
                    entrada.Entrada  = true;

                    entrada.Fecha  = horaentrada.ToUniversalTime();
                    entrada.Puerta = puerta;

                    EventoAccesoDAO eventos = new EventoAccesoDAO();
                    eventos.Save(entrada);

                    EventoAcceso salida = new EventoAcceso();
                    salida.Empleado = employee;
                    salida.Alta     = DateTime.UtcNow;
                    salida.Entrada  = false;
                    salida.Fecha    = horasalida.ToUniversalTime();
                    salida.Puerta   = puerta;

                    eventos.Save(salida);
                }
                return(Ok(msgCodes.ToArray()));
            }
            catch (Exception error)
            {
                LogicTracker.App.Web.Api.Providers.LogWritter.writeLog(error);
                return(BadRequest());
            }
        }
Example #2
0
 public AccessEventVo(EventoAcceso accessEvent)
 {
     Id       = accessEvent.Id;
     Fecha    = accessEvent.Fecha.ToDisplayDateTime();
     Empleado = accessEvent.Empleado != null ? accessEvent.Empleado.Entidad != null ? accessEvent.Empleado.Entidad.Descripcion : "Tarjeta no Asignada" : "Tarjeta no Asignada";
     Puerta   = accessEvent.Puerta.Descripcion;
     Evento   = accessEvent.Entrada ? "Entrada" : "Salida";
     Entrada  = accessEvent.Entrada;
 }
Example #3
0
        public void SetEvento(EventoAcceso evento)
        {
            if (evento.Entrada)
            {
                IdEntrada     = evento.Id;
                HoraEntrada   = evento.Fecha.ToDisplayDateTime();
                PuertaEntrada = evento.Puerta.Descripcion;
                if (!HasSalida)
                {
                    HoraSalida = evento.Fecha.ToDisplayDateTime();
                }
                HasEntrada = true;
                if (evento.Baja.HasValue)
                {
                    EntradaDeleted = true;
                }
                if (evento.Modificado.HasValue)
                {
                    EntradaEdited = true;
                }
            }
            else
            {
                IdSalida     = evento.Id;
                HoraSalida   = evento.Fecha.ToDisplayDateTime();
                PuertaSalida = evento.Puerta.Descripcion;
                if (!HasEntrada)
                {
                    HoraEntrada = evento.Fecha.ToDisplayDateTime();
                }
                Duracion  = HasEntrada ? HoraSalida.Subtract(HoraEntrada) : new TimeSpan(0, 0, 0);
                HasSalida = true;
                if (evento.Baja.HasValue)
                {
                    SalidaDeleted = true;
                }
                if (evento.Modificado.HasValue)
                {
                    SalidaEdited = true;
                }
            }
            Legajo        = evento.Empleado.Legajo;
            Nombre        = evento.Empleado.Entidad.Descripcion;
            TipoEmpleado  = evento.Empleado.TipoEmpleado != null ? evento.Empleado.TipoEmpleado.Descripcion : string.Empty;
            Departamento  = evento.Empleado.Departamento != null ? evento.Empleado.Departamento.Descripcion : string.Empty;
            CentroDeCosto = evento.Empleado.CentroDeCostos != null ? evento.Empleado.CentroDeCostos.Descripcion : string.Empty;
            Responsable   = evento.Empleado.Reporta1 != null ? evento.Empleado.Reporta1.Entidad.Descripcion : string.Empty;

            Fecha = HoraEntrada.Date;
        }
Example #4
0
 public FichadaVo(EventoAcceso evento)
 {
     SetEvento(evento);
 }
Example #5
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);
        }