示例#1
0
        void HandleMessage(MdvrMessageBase message, DeviceClient client)
        {
            var db = new LisconDbEntities();

            client.Runtime.GpsTime   = message.MessageTime;
            client.Runtime.Latitude  = message.LocationAndStatus.Location.Latitude;
            client.Runtime.Longitude = message.LocationAndStatus.Location.Longitude;

            if (message is V101Message)
            {
                HandleV101Message((V101Message)message, client, db);
            }
            else if (message is V114Message)
            {
                HandleV114Message((V114Message)message, client, db);
            }
            else if (message is V201Message)
            {
                HandleV201Message((V201Message)message);
            }
            else if (message is V251Message)
            {
                HandleV251Message((V251Message)message);
            }

            DeviceRuntimeBL.Update(client.Runtime, db);

            ClientRuntimeUpdated?.Invoke();
        }
示例#2
0
        void HandleV101Message(V101Message message, DeviceClient client, LisconDbEntities db)
        {
            var device = DeviceBL.TryGet(message.DevIDNO, db);

            if (device == null)
            {
                DeviceBL.Register(message.DevIDNO, client.Runtime, db);
            }

            SendResponse(message, MdvrResponseTypes.Auto, "1");
            SendAlarmServerConfig(client.DevIDNO, "", 6602, (int)ConnectionTypes.Udp);
        }
示例#3
0
        internal static void Create(DeviceRuntime runtime, LisconDbEntities db)
        {
            // Todo: Check Editability

            runtime.CreateUserID = -1;
            runtime.CreateTime   = DateTime.UtcNow;
            runtime.UpdateUserID = -1;
            runtime.UpdateTime   = DateTime.UtcNow;

            db.DeviceRuntime.Add(runtime);
            db.SaveChanges();
        }
示例#4
0
        static void HandleV114Message(V114Message message, DeviceClient client, LisconDbEntities db)
        {
            var log = new DeviceLog()
            {
                DevIDNO   = client.DevIDNO,
                LogType   = (int)LogTypes.Gps,
                LogTime   = client.Runtime.GpsTime,
                Latitude  = client.Runtime.Latitude,
                Longitude = client.Runtime.Longitude
            };

            DeviceLogBL.Add(log, db);
        }
示例#5
0
        public static void Update(DeviceRuntime runtime, LisconDbEntities db)
        {
            var existingRuntime = db.DeviceRuntime.Single(q => q.DevIDNO == runtime.DevIDNO);

            existingRuntime.GpsTime   = runtime.GpsTime;
            existingRuntime.Latitude  = runtime.Latitude;
            existingRuntime.Longitude = runtime.Longitude;
            existingRuntime.Altitude  = runtime.Altitude;
            existingRuntime.Speed     = runtime.Speed;
            existingRuntime.Course    = runtime.Course;

            db.SaveChanges();
        }
示例#6
0
        public static void Register(string devIDNO, DeviceRuntime runtime, LisconDbEntities db)
        {
            using (var ts = new TransactionScope())
            {
                var device = new Device();

                device.IDNO         = devIDNO;
                device.Plate        = string.Empty;
                device.CreateUserID = -1;
                device.CreateTime   = DateTime.UtcNow;
                device.UpdateUserID = -1;
                device.UpdateTime   = DateTime.UtcNow;

                db.Device.Add(device);
                db.SaveChanges();

                DeviceRuntimeBL.Create(runtime, db);

                ts.Complete();
            }
        }
示例#7
0
 public static Device TryGet(string devIDNO, LisconDbEntities db)
 {
     return(db.Device.SingleOrDefault(q => q.IDNO == devIDNO));
 }
示例#8
0
 public static void Add(DeviceLog devLog, LisconDbEntities db)
 {
     db.DeviceLog.Add(devLog);
     db.SaveChanges();
 }