Esempio n. 1
0
        public Task NotifyRoomChanged(RoomChangedMessage roomChangedMessage, IList <string> userIds)
        {
            foreach (string userId in userIds)
            {
                Task.Run(async() =>
                {
                    try
                    {
                        await notificationService.Notify(userId,
                                                         NotificationType.EntityChanged,
                                                         JsonConvert.SerializeObject(new EntityChangedNotificationData(nameof(RoomInfo),
                                                                                                                       JsonConvert.SerializeObject(roomChangedMessage))));
                    }
                    catch (Exception e)
                    {
                        logger.LogError(e, "Error on send notification to user.");
                    }
                });
            }

            return(Task.CompletedTask);
        }
Esempio n. 2
0
        private Task OnRoomChanged(string key, RoomChangedMessage roomChangedMessage)
        {
            List <string> userIds = roomChangedMessage.RoomInfo.RoomUserInfoByUserIdDictionary.Keys.ToList();

            foreach (string userId in userIds)
            {
                Task.Run(async() =>
                {
                    try
                    {
                        await notificationService.Notify(userId,
                                                         NotificationType.EntityChanged,
                                                         JsonConvert.SerializeObject(new EntityChangedNotificationData(nameof(RoomInfo),
                                                                                                                       JsonConvert.SerializeObject(roomChangedMessage))));
                    }
                    catch (Exception e)
                    {
                        logger.LogError(e, "Error on send notification to user.");
                    }
                });
            }

            return(Task.CompletedTask);
        }
Esempio n. 3
0
        private async Task OnRoomChanged(string key, RoomChangedMessage roomChangedMessage)
        {
            if (roomChangedMessage.OperationType == OperationType.Delete)
            {
                IList <string> userIds = await waitingService.GetWaitingUserForRoom(roomChangedMessage.RoomInfo.Id);

                await waitingService.RemoveRoom(roomChangedMessage.RoomInfo.Id);

                await waitingNotificationService.NotifyRoomChanged(roomChangedMessage, userIds);

                return;
            }

            if (roomChangedMessage.OperationType == OperationType.Save)
            {
                IList <string> userIds = await waitingService.GetUserIdsWithLessRoomWaitingList(
                    WaitingActionConstants.MaxShowWaitingRoomNum,
                    WaitingActionConstants.NewRoomNotificationUserMaxNum);

                await waitingService.AddRoomUserInfo(roomChangedMessage.RoomInfo.Id, userIds);

                await waitingNotificationService.NotifyRoomChanged(roomChangedMessage, userIds);
            }
        }
Esempio n. 4
0
 private async Task SendEntityChangedMessage(RoomChangedMessage roomChangedMessage)
 {
     await messageService.Publish(RoomChangedMessageTopic.Topic, null, roomChangedMessage);
 }