예제 #1
0
파일: Events.cs 프로젝트: jesumarquez/lt
        private static string GetGenericEventCode(Event message)
        {
            var data              = message.GetData();
            var dataS             = data.ToString(CultureInfo.InvariantCulture);
            var identifier        = message.Code;
            var identifierS       = identifier.ToString(CultureInfo.InvariantCulture);
            var messageIdentifier = (MessageIdentifier)Enum.Parse(typeof(MessageIdentifier), identifierS, true);

            if (messageIdentifier.Equals(MessageIdentifier.RfidDetected))
            {
                return(GetRfidAction(data, message.GetRiderId()));
            }
            if (MessageIdentifierX.IsEstadoLogistico(message.GetData()))
            {
                return(dataS);
            }
            return((identifierS == MessageCode.SpeedingTicket.GetMessageCode()) ? MessageCode.SpeedingTicket.GetMessageCode() : GetCode(identifier, data));
        }
예제 #2
0
파일: Events.cs 프로젝트: jesumarquez/lt
        private void ProcessEvent(string code, Event generico)
        {
            string applicationCode;
            var    esConfirmacionUbox = false;

            ControlarInicioDistribucionPorMensaje(code, generico);

            ControlarCierreDistribucionPorMensaje(code, generico);

            if (MessageIdentifierX.IsRfidEvent(generico.Code))
            {
                applicationCode = ProcessRfidEvent(code, generico);
            }
            else if (MessageIdentifierX.IsEstadoLogistico(generico.GetData()))
            {
                applicationCode = ProcessEstadoLogistico(code, generico);
            }
            else if (MessageIdentifierX.IsPanicEvent(code))
            {
                applicationCode = ProcessPanicEvent(generico, code);
            }
            else if (code.Equals(MessageCode.SpeedingTicket.GetMessageCode()))
            {
                applicationCode = ProcessVelocidadExcedidaGenericEvent(generico);
            }
            else if (MessageIdentifierX.IsConfirmacionUbox(generico.GetData()))
            {
                applicationCode    = code;
                esConfirmacionUbox = true;
                // DEFINE EL PROCESAMIENTO CUANDO SABE SI TIENE UN PUNTO
            }
            else
            {
                applicationCode = ProcessGenericEvent(generico, code);
            }

            if (DaoFactory.DetalleDispositivoDAO.GetProcesarCicloLogisticoFlagValue(generico.DeviceId))
            {
                GPSPoint point = null;
                if (generico.GeoPoint != null)
                {
                    point = GPSPoint.Factory(generico.GeoPoint.Date, generico.GeoPoint.Lat, generico.GeoPoint.Lon);
                }
                else
                {
                    var maxMonths = Coche.Empresa != null ? Coche.Empresa.MesesConsultaPosiciones : 3;
                    var pos       = DaoFactory.LogPosicionDAO.GetFirstPositionOlderThanDate(Coche.Id, generico.Tiempo, maxMonths);
                    if (pos != null)
                    {
                        point = GPSPoint.Factory(generico.Tiempo, (float)pos.Latitud, (float)pos.Longitud);
                    }
                }

                if (point != null)
                {
                    if (esConfirmacionUbox)
                    {
                        ProcessConfirmacionUbox(code, generico, point);
                    }
                    else
                    {
                        CicloLogisticoFactory.Process(DaoFactory, applicationCode, Coche, point, generico, false, GetChofer(generico.GetRiderId()));
                        CicloLogisticoFactory.ProcessEstadoLogistico(Coche, generico, applicationCode);
                    }
                }
                else if (esConfirmacionUbox)
                {
                    ProcessGenericEvent(generico, code);
                }
            }
        }