public void Update(ILearningRoomWithSignIn learningRoom) { var learningRoomsWithSignIn = _learningRoomWithSignInGateway.Load(learningRoom.Reference); var signInsAdded = learningRoom.SignIns .Where(signIn => learningRoomsWithSignIn.SignIns.All(s => !s.Reference.Equals(signIn.Reference))) .ToList(); signInsAdded.ForEach(s => _signInPersistor.Add(s)); _persistence.Complete(); }
public void SignIn(string loginToken, string roomId) { var user = _loginTokenGateway.Get(loginToken); var learningRoomWithSignIn = _learningRoomWithSignInGateway.Load(new RoomReference(roomId)); if (learningRoomWithSignIn.SignIns.Any(s => s.Participant.Equals(user.OpenId))) { return; } learningRoomWithSignIn.SignIns.Add(new SignInAspect { Reference = new SignInReference(Guid.NewGuid().ToString()), Room = learningRoomWithSignIn.Reference, SignInOn = DateTimeUtil.GetNow(), Participant = user.OpenId }); _learningRoomWithSignInSynchronizor.Update(learningRoomWithSignIn); }