public async Task <UserComic> CreateUserComicAsync( Comic comic, StorageContainer storageContainer, string subject) { // TODO: Error handling var userComicState = new CreateUserComicState { InputComic = comic, InputStorageContainer = storageContainer, InputSubject = subject }; var userComicResult = await ExecuteStateMachine(userComicState); return(userComicResult); }
private async Task <UserComic> ExecuteStateMachine(CreateUserComicState createUserComicState) { var createUserStateMachine = new CreateUserComicStateMachine(); createUserStateMachine.ConnectStateObserver(new CreateUserComicStateObserver()); createUserStateMachine.ConnectEventObserver(new CreateUserComicEventObserver()); await createUserStateMachine .RaiseEvent(createUserComicState, createUserStateMachine.CreateUserComic); await createUserStateMachine .RaiseEvent(createUserComicState, createUserStateMachine.ValidateComic, createUserComicState.InputComic); await createUserStateMachine .RaiseEvent(createUserComicState, createUserStateMachine.ConvertToUserComic, createUserComicState.InputComic); await createUserStateMachine .RaiseEvent(createUserComicState, createUserStateMachine.CreateAndAddUserComic, UserComicsRepository, createUserComicState.ResultUserComic); return(createUserComicState.ResultUserComic); }