public GamingSummaryViewModel(GameController controller, IGameControlService controlService, IRegistrationService registrationService, IContestDao contestDao, IEventAggregator eventAggregator)
		{
			_controller = controller;
			_controlService = controlService;
			_registrationService = registrationService;
			_contestDao = contestDao;

			this.OpenGameSelectionCommand = _controller.OpenGameSelectionCommand;
			this.StartGameCommand = DelegateCommand<SequencingItem>.FromAsyncHandler(StartGame);
			this.MakeShotCommand = DelegateCommand<string>.FromAsyncHandler(MakeShot);
			this.EditShotCommand = new DelegateCommand<string>(EditShot);
			this.NewGameCommand = DelegateCommand.FromAsyncHandler(NewGame, CanNewGame);

			eventAggregator.GetEvent<GameSelected>().Subscribe((payload) => this.CurrentGame = payload);

			_liveBus = ServiceBusFactory.New(sbc =>
			{
				sbc.UseMsmq(msmq =>
				{
					msmq.UseMulticastSubscriptionClient();
					msmq.VerifyMsmqConfiguration();
				});
				sbc.ReceiveFrom("msmq://localhost/ramp-festival_live_sender");
				sbc.SetNetwork("WORKGROUP");
			});
		}
        public GameSelectionViewModel(GameController controller, IContestDao contestDao, Guid contestId)
        {
            _contestDao = contestDao;

            this.SelectGameCommand = controller.SelectGameCommand;

            this.PendingGames = new NotifyTaskCompletion<IList<SequencingItem>>(
                _contestDao.GetAllPendingGames());
        }
		public ContestRegistrationViewModel(RegistrationsController controller, IContestDao contestDao)
		{
			this._contestDao = contestDao;

			_contests = new ObservableCollection<Contest>();
			this.Contests = new ReadOnlyObservableCollection<Contest>(_contests);

			this.RefreshDataCommand = DelegateCommand.FromAsyncHandler(LoadData);
			this.RegisterPlayerCommand = controller.RegisterPlayerCommand;
			this.RegisterTeamCommand = controller.RegisterTeamCommand;
		}
		public LiveViewModel(IContestDao contestDao)
		{
			_contestDao = contestDao;

			_currentPlayerName = "KEIN SPIEL GESTARTET";
			_scores = new Dictionary<int, int>();
			this.Scores = new ReadOnlyDictionary<int, int>(_scores);

			this.RefreshCommand = DelegateCommand.FromAsyncHandler(Refresh);

			InitializeEventHandling();
		}
		public SequencingViewModel(IContestDao contestDao, IServiceBus eventBus)
		{
			_contestDao = contestDao;

			_sequence = new ObservableCollection<SequencingItem>();
			this.Sequence = new ReadOnlyObservableCollection<SequencingItem>(_sequence);
			eventBus.SubscribeHandler<SequencingChanged>(async (e) =>
			{
				await LoadData().ConfigureAwait(false);
			});

			this.RefreshDataCommand = DelegateCommand.FromAsyncHandler(LoadData);
		}