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(); }
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>()); }
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)); }