refactor: move reservation logic in event controller