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()); } }
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; }
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; }
public FichadaVo(EventoAcceso evento) { SetEvento(evento); }
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); }