public void Handle(UpdateUserState command) { var user = _repository.GetById <User>(command.AggregateId, int.MaxValue); if (user == null) { throw new OperationCanceledException(string.Format("User with id {0} not found", command.AggregateId)); } user.UpdateState(command.State, command.UpdateDate); _repository.Save(user, Guid.NewGuid()); }
private static IStateResult configurePushTransitionsForUsers( TransitionHandlerProvider transitions, ITogglDatabase database, ITogglApi api, IScheduler scheduler, IStateResult entryPoint, IObservable <Unit> delayCancellation) { var rnd = new Random(); var apiDelay = new RetryDelayService(rnd); var statusDelay = new RetryDelayService(rnd); var push = new PushUsersState(database.User); var pushOne = new PushOneEntityState <IDatabaseUser>(); var update = new UpdateUserState(api, database.User); var unsyncable = new UnsyncableUserState(database.User); var checkServerStatus = new CheckServerStatusState(api, scheduler, apiDelay, statusDelay, delayCancellation); var finished = new ResetAPIDelayState(apiDelay); return(configureUpdateOnlyPush(transitions, entryPoint, push, pushOne, update, unsyncable, checkServerStatus, finished)); }