示例#1
0
        public async Task Update(ILearningRoomWithChats learningRoom)
        {
            var learningRoomWithChat = _learningRoomWithChatsGateway.Load(learningRoom.Reference);
            var chatsAdded           = learningRoom.ChatAspects
                                       .Where(chat => !learningRoomWithChat.ChatAspects.Any(c => c.Reference.Equals(chat.Reference)))
                                       .ToList();

            chatsAdded.ForEach(c => _chatPersistor.Add(c));
            await _persistence.Complete();
        }
示例#2
0
        public IList <LearningRoomMessageModel> Get(string loginToken, string roomId)
        {
            var login         = _loginTokenGateway.Get(loginToken);
            var roomWithChats = _learningRoomWithChatsGateway.Load(new RoomReference(roomId));

            return(roomWithChats.ChatAspects != null
                ? roomWithChats.ChatAspects.Select(aspect => new LearningRoomMessageModel
            {
                Content = aspect.Content,
                CreatedByNickName = _userGateway.Load(aspect.CreatedBy.Code).NickName,
                IsCreatedByRequester = aspect.CreatedBy.Equals(login.OpenId),
                CreatedOn = aspect.CreatedOn
            }).OrderBy(model => model.CreatedOn).ToList()
                : new List <LearningRoomMessageModel>());
        }
示例#3
0
        public async Task CreateChatMessage(string loginToken, string roomId, string message)
        {
            var login         = _loginTokenGateway.Get(loginToken);
            var roomReference = new RoomReference(roomId, CacheField.Room);
            var learningRoom  = _learningRoomGateway.Load(roomReference);

            learningRoom.ChatAspects.Add(new ChatAspect
            {
                Reference = new ChatReference(Guid.NewGuid().ToString()),
                Room      = roomReference,
                Content   = message,
                CreatedBy = login.OpenId,
                CreatedOn = DateTimeUtil.GetNow()
            });

            await Task.Run(() => _learningRoomWithChatsSynchronizor.Update(learningRoom));
        }