Ejemplo n.º 1
0
		public static void OnUserDeviceMessageReceived(DeviceMessageEvent deviceMessageEvent) {
			var context = GlobalHost.ConnectionManager.GetHubContext<UsersHub>();

			if (UsersConnections.ContainsKey(deviceMessageEvent.AppUserId)) {
				UserDeviceService userDeviceService = new UserDeviceService();
				var device = userDeviceService.GetById(deviceMessageEvent.DeviceId);

				if (device != null) {
					var connection = UsersConnections[deviceMessageEvent.AppUserId];

					context.Clients.Client(connection.ConnectionId).notifyAboutDeviceMessageReceived(new DeviceMessageReceivedNotification() {
						DateTime = deviceMessageEvent.DateTime,
						Message = deviceMessageEvent.Message,
						DeviceName = device.Name,
						Id = device.Id
					});
				}
			}
		}
		public static void OnUserDeviceMessageReceived(DeviceMessageEvent deviceMessageEvent) {

			var notificationRulesService = new NotificationRuleService();
			var rules =
				notificationRulesService.Collection.Find(
					x => x.AppUserId == deviceMessageEvent.AppUserId && x.SourceDeviceId == deviceMessageEvent.DeviceId).ToList();

			if (rules.Any()) {
				var deviceService = new UserDeviceService();
				foreach (var notificationRule in rules) {
					if (notificationRule.SourceMessage == deviceMessageEvent.Message) {
						var device = deviceService.GetById(notificationRule.TargetDeviceId);
						if (device.ConnectionState == DeviveConnectionState.FullDuplex && !String.IsNullOrEmpty(device.ConnectionId)) {
							var devicesHub = GlobalHost.ConnectionManager.GetHubContext<DevicesHub>();
							devicesHub.Clients.Client(device.ConnectionId).NotificationRule(notificationRule.TargetMessage);
						}
					}
				}
			}
		}
		public void RegisterDeviceMessageEvent(DeviceMessageEvent deviceMessageEvent) {
			OnDeviceMessageReceived?.Invoke(deviceMessageEvent);
		}