protected void DiscardEvent(MensajeVO mensaje, Dispositivo dispositivo, Coche coche, Empleado chofer, DateTime fecha, GPSPoint inicio, GPSPoint fin, DiscardReason discardReason, string codigo) { STrace.Debug(GetType().FullName, dispositivo.GetId(), String.Format( "Descartando: mensaje={0} coche={1} chofer={2} fecha={3} inicio={4} fin={5} discardReason={6}", mensaje, coche, chofer, fecha, inicio, fin, discardReason)); var log = new LogMensajeDescartado { Chofer = chofer, Coche = coche, Dispositivo = dispositivo, Fecha = inicio != null ? inicio.Date : fecha, Expiracion = DateTime.UtcNow.AddDays(1), Latitud = inicio != null ? inicio.Lat : 0, Longitud = inicio != null ? inicio.Lon : 0, FechaFin = fin != null ? fin.Date : (DateTime?)null, LatitudFin = fin != null ? new Double?(fin.Lat) : null, LongitudFin = fin != null ? new Double?(fin.Lon) : null, Mensaje = mensaje != null?DaoFactory.MensajeDAO.FindById(mensaje.Id) : null, Texto = mensaje != null ? mensaje.Texto : codigo, MotivoDescarte = (int)discardReason, }; DaoFactory.LogMensajeDescartadoDAO.Save(log); }
private void ProcessTaco(String file) { Empresa empresa = null; Dispositivo dev = null; var errorslist = new List <String>(); var infoList = new List <String>(); var moveAllFile = false; var maxvel = 0; var maxrpm = 0; String chofer = null; var lastdt = DateTime.MinValue; var latestdt = DateTime.MinValue; var repro = file.Contains("_r_"); using (var sr = new StreamReader(file)) { String line; while ((moveAllFile == false) && ((line = sr.ReadLine()) != null)) { var datos = line.Split('@'); try { switch (datos[0]) { //default: //STrace.Trace(GetType().FullName, "Tipo de linea ignorada: {0}", line); //break; case "1": //info { infoList.Add(line); try { switch (datos[1]) { //default: //STrace.Trace(GetType().FullName, "Tipo de linea de info ignorada: {0}", line); //break; case "3": //"Nombre de la Empresa" empresa = DaoFactory.EmpresaDAO.FindByCodigo(datos[2]); if (empresa == null) { throw new InvalidDataException(String.Format("No se encontro la empresa: {0}", datos[2])); } break; case "4": //"Fecha Y Hora de la Captura" //generar un evento? break; case "6": //"Numero de Movil" if (empresa == null) { throw new InvalidDataException("Primero declare la empresa!"); } dev = DaoFactory.CocheDAO.FindByInterno(new List <int> { empresa.Id }, null, datos[2]).Dispositivo; if (dev == null) { throw new InvalidDataException(String.Format("No se encontro el dispositivo o el movil: {0}", datos[2])); } lastdt = GetLastDt(dev); break; case "11": //"Velocidad Maxima Programada" maxvel = Convert.ToInt32(datos[2], CultureInfo.InvariantCulture); break; case "12": //"RPM Maxima Programada" maxrpm = Convert.ToInt32(datos[2], CultureInfo.InvariantCulture); break; } } catch { moveAllFile = true; throw; } break; } case "2": //data { if (dev == null) { moveAllFile = true; throw new ArgumentNullException("", "Primero declare el movil!"); } // usar el odometro para algo? try { switch (datos[1]) { //default: //STrace.Trace(GetType().FullName, "Tipo de linea de datos ignorada: {0}", line); //break; case "1": //"Dato simple" { //2@1@0@20111118@144100@27@270 "Evento;R;Fecha;Hora;Velocidad;Kilometros" var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); //var code = (MessageIdentifier) Convert.ToInt16(datos[2], CultureInfo.InvariantCulture); //Dispatcher_Dispatch(code.FactoryEvent(dev.Id, 0, null, dt, null, null)); //// ReportOdometer(datos[6], datos[5], dev, dt, chofer, lastdt, repro, ref latestdt); break; } case "2": //"Motor apagado" { var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); DispatcherDispatch(MessageIdentifier.EngineOffInternal.FactoryEvent(dev.Id, 0, null, dt, chofer, null), lastdt, repro, ref latestdt); // ReportOdometer(datos[6], datos[5], dev, dt, chofer, lastdt, repro, ref latestdt); break; } case "3": //"Motor encendido" { var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); DispatcherDispatch(MessageIdentifier.EngineOnInternal.FactoryEvent(dev.Id, 0, null, dt, chofer, null), lastdt, repro, ref latestdt); // ReportOdometer(datos[6], datos[5], dev, dt, chofer, lastdt, repro, ref latestdt); break; } case "4": //"Aceleracion Brusca" { //2@4@23418@20111202@135000@0@874 "Evento;CHOFER;Fecha;Hora;R;Kilometros" var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); chofer = GetChoferPin(empresa, datos[2], dev.Id); DispatcherDispatch(MessageIdentifier.AccelerationEvent.FactoryEvent(dev.Id, 0, null, dt, chofer, null), lastdt, repro, ref latestdt); // ReportOdometer(datos[6], null, dev, dt, chofer, lastdt, repro, ref latestdt); break; } case "5": //"Desaceleracion Brusca" { var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); chofer = GetChoferPin(empresa, datos[2], dev.Id); DispatcherDispatch(MessageIdentifier.DesaccelerationEvent.FactoryEvent(dev.Id, 0, null, dt, chofer, null), lastdt, repro, ref latestdt); // ReportOdometer(datos[6], null, dev, dt, chofer, lastdt, repro, ref latestdt); break; } case "6": //"Inicio Infraccion" { //2@6@23418@20111203@203405@23418@880 "Evento;CHOFER;Fecha;Hora;CHOFER;Kilometros" var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); chofer = GetChoferPin(empresa, datos[2], dev.Id); DispatcherDispatch(MessageIdentifier.SpeedingTicketInit.FactoryEvent(dev.Id, 0, null, dt, chofer, null), lastdt, repro, ref latestdt); // ReportOdometer(datos[6], null, dev, dt, chofer, lastdt, repro, ref latestdt); break; } case "7": //"Fin Infraccion" { //2@7@23418@20111203@203405@195@2 "Evento;CHOFER;Fecha;Hora;Velocidad MAXIMA;minutos de infraccion" var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); chofer = GetChoferPin(empresa, datos[2], dev.Id); var lista = new List <Int64> { Convert.ToInt32(datos[5], CultureInfo.InvariantCulture), //reached speed Convert.ToInt32(datos[6], CultureInfo.InvariantCulture) * 60, //duration maxvel, }; DispatcherDispatch(MessageIdentifier.SpeedingTicketEnd.FactoryEvent(dev.Id, 0, null, dt, chofer, lista), lastdt, repro, ref latestdt); break; } case "9": //"Desconexion" { //2@9@23418@20111119@203405@213000@20111119@0 "Evento;CHOFER;Fecha(reco);Hora;Hora(desco);Fecha;R" var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); chofer = GetChoferPin(empresa, datos[2], dev.Id); var dt2 = DateTimeUtils.SafeParseFormat(datos[6] + datos[5].PadLeft(6, '0'), "yyyyMMddHHmmss"); DispatcherDispatch(MessageIdentifier.SensorPowerDisconected.FactoryEvent(dev.Id, 0, null, dt2, chofer, null), lastdt, repro, ref latestdt); DispatcherDispatch(MessageIdentifier.SensorPowerReconected.FactoryEvent(dev.Id, 0, null, dt, chofer, null), lastdt, repro, ref latestdt); break; } case "10": //"Inicio RPM Maxima" { //2@10@23418@20111119@203405@0@339 "Evento;R;Fecha;Hora;Velocidad;R;Kilometros" //todo, este ejemplo tomado del mail no concuerda con su descripcion... var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); //var chofer = GetChoferPin(empresa, datos[2], dev.Id); DispatcherDispatch(MessageIdentifier.RpmTicketInit.FactoryEvent(dev.Id, 0, null, dt, chofer, null), lastdt, repro, ref latestdt); // ReportOdometer(datos[6], datos[5], dev, dt, chofer, lastdt, repro, ref latestdt); break; } case "11": //"Final RPM Maxima" { //2@11@23418@20111119@203500@0@10300 "Evento;R;Fecha;Hora;Velocidad;R;RPM MAXIMA" //todo, este ejemplo tomado del mail no concuerda con su descripcion... var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); //var chofer = GetChoferPin(empresa, datos[2], dev.Id); DispatcherDispatch(MessageIdentifier.RpmTicketEnd.FactoryEvent(dev.Id, 0, null, dt, chofer, new List <Int64> { Convert.ToInt32(datos[6], CultureInfo.InvariantCulture), maxrpm }), lastdt, repro, ref latestdt); // ReportOdometer(null, datos[5], dev, dt, chofer, lastdt, repro, ref latestdt); break; } case "12": //"Inicio Chofer" { //2@12@23418@20111120@132302@0@23418 "Evento;CHOFER;Fecha;Hora;R;CHOFER;" var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); chofer = GetChoferPin(empresa, datos[2], dev.Id); DispatcherDispatch(MessageIdentifierX.FactoryRfid(dev.Id, 0, null, dt, chofer, 0), lastdt, repro, ref latestdt); break; } case "13": //"Final Chofer" { var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); chofer = GetChoferPin(empresa, datos[2], dev.Id); DispatcherDispatch(MessageIdentifierX.FactoryRfid(dev.Id, 0, null, dt, chofer, 1), lastdt, repro, ref latestdt); chofer = null; break; } case "15": //"Servicio Tecnico" { var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); DispatcherDispatch(MessageIdentifier.TechnicalService.FactoryEvent(dev.Id, 0, null, dt, chofer, null), lastdt, repro, ref latestdt); break; } case "30": //"Movimiento desde hasta y minutos de marcha" { //2@30@23418@20111119@81800@85200@34 "Evento;CHOFER;Fecha;Hora INI;Hora FIN;Minutos de marcha" var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[5].PadLeft(6, '0'), "yyyyMMddHHmmss"); var lista = new List <Int64> { (Int32)(DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss") - dt).TotalSeconds, //duration evento Convert.ToInt32(datos[6], CultureInfo.InvariantCulture) * 60, //durationmarcha }; chofer = GetChoferPin(empresa, datos[2], dev.Id); //DispatcherDispatch(MessageIdentifier.TraveledLeg.FactoryEvent(dev.Id, 0, null, dt, chofer, lista), lastdt, repro, ref latestdt); break; } case "31": //"Ultimo dato de detenido?" { //2@31@23418@20111119@85200@0@327 "Evento;CHOFER;Fecha;Hora;R;Kilometros" var dt = DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"); chofer = GetChoferPin(empresa, datos[2], dev.Id); DispatcherDispatch(MessageIdentifier.StoppedEvent.FactoryEvent(dev.Id, 0, null, dt, chofer, null), lastdt, repro, ref latestdt); // ReportOdometer(datos[6], null, dev, dt, chofer, lastdt, repro, ref latestdt); break; } } } catch { errorslist.Add(line); throw; } break; } } } catch (Exception e) { STrace.Exception(GetType().FullName, e, dev.GetId()); } } sr.Close(); } Finishit(file, infoList, moveAllFile, errorslist, latestdt, dev.Id); }
private void ProcessGps(String file) { Empresa empresa = null; Dispositivo dev = null; var errorslist = new List <String>(); var infoList = new List <String>(); var moveAllFile = false; var lastdt = DateTime.MinValue; var latestdt = DateTime.MinValue; var repro = file.Contains("_r_"); using (var sr = new StreamReader(file)) { String line; while ((moveAllFile == false) && ((line = sr.ReadLine()) != null)) { var datos = line.Split('@'); try { switch (datos[0]) { //default: //STrace.Trace(GetType().FullName, "Tipo de linea ignorada: {0}", line); //break; case "1": //info { infoList.Add(line); try { switch (datos[1]) { //default: //STrace.Trace(GetType().FullName, "Tipo de linea de info ignorada: {0}", line); //break; case "3": //"Nombre de la Empresa" empresa = DaoFactory.EmpresaDAO.FindByCodigo(datos[2]); if (empresa == null) { throw new InvalidDataException(String.Format("No se encontro la empresa: {0}", datos[2])); } break; case "4": //"Fecha Y Hora de la Captura" //generar un evento? break; case "13": //"Numero de Movil" if (empresa == null) { throw new InvalidDataException("Primero declare la empresa!"); } dev = DaoFactory.CocheDAO.FindByInterno(new List <int> { empresa.Id }, null, datos[2].Substring(0, datos[2].Length - 2)).Dispositivo; if (dev == null) { throw new InvalidDataException(String.Format("No se encontro el dispositivo o el movil: {0}", datos[2])); } lastdt = GetLastDt(dev); break; } } catch { moveAllFile = true; throw; } break; } case "2": //data { if (dev == null) { moveAllFile = true; throw new ArgumentNullException("", "Primero declare el movil!"); } try { Debug.Assert(line.StartsWith("2@100@0@")); DispatcherDispatch(GPSPoint.Factory( DateTimeUtils.SafeParseFormat(datos[3] + datos[4].PadLeft(6, '0'), "yyyyMMddHHmmss"), Convert.ToSingle(datos[5], CultureInfo.InvariantCulture), Convert.ToSingle(datos[6], CultureInfo.InvariantCulture), Convert.ToSingle(datos[7], CultureInfo.InvariantCulture)).ToPosition(dev.Id, 0), lastdt, repro, ref latestdt); } catch { errorslist.Add(line); throw; } break; } } } catch (Exception e) { STrace.Exception(GetType().FullName, e, dev.GetId()); } } sr.Close(); } Finishit(file, infoList, moveAllFile, errorslist, latestdt, dev.Id); }