/// <summary>
        ///  Method that returns an instance of the checker 
        /// </summary>
        /// <returns></returns>
        public static InternetConnectionChecker GetInstance()
        {
            if (connectionChecker == null)
            {
                connectionChecker = new InternetConnectionChecker();
            }

            return connectionChecker;
        }
        /// <summary>
        ///  Method that returns an instance of the checker
        /// </summary>
        /// <returns></returns>
        public static InternetConnectionChecker GetInstance()
        {
            if (connectionChecker == null)
            {
                connectionChecker = new InternetConnectionChecker();
            }

            return(connectionChecker);
        }
        public RetrieveEmailViewModel(ITreasureHuntService serviceClient)
         {
            this.serviceClient = serviceClient;

            CheckEmailAddressCommand = new RelayCommand(() => ExecuteCheckEmailAddressCommand(), () => IsValidDetails());
            BackCommand = new RelayCommand(() => ExecuteBackCommand());

            connectionChecker = InternetConnectionChecker.GetInstance();

            PopupDisplayed = false;
       
         }
        public ResetPasswordViewModel(ITreasureHuntService serviceClient)
         {
            this.serviceClient = serviceClient;

            ResetPasswordCommand = new RelayCommand(() => ExecutePasswordResetCommand(), () => IsValidDetails());
            BackCommand = new RelayCommand(() => ExecuteBackCommand());

            connectionChecker = InternetConnectionChecker.GetInstance();

            Messenger.Default.Register<CurrentUserMessage>
            (

            this,
            (action) => ReceiveCurrentUserMessage(action.CurrentUser)

            );
         }
        public RegisterViewModel(ITreasureHuntService serviceClient)
        {
            this.serviceClient = serviceClient;

            RegisterUserCommand = new RelayCommand(() => ExecuteRegisterUserCommand(), () => IsValidDetails());
            BackCommand = new RelayCommand(() => ExecuteBackCommand());

            connectionChecker = InternetConnectionChecker.GetInstance();

            Messenger.Default.Register<RegenerateListMessage>
                (

                this,
                (action) => ReceiveRegenerateListMessage(action.RegenerateList)

                );

            PopupDisplayed = false;
        }
        public LeaderboardViewModel(ITreasureHuntService serviceClient)
        {
            this.serviceClient = serviceClient;
            BackCommand = new RelayCommand(() => ExecuteBackCommand());
            RefreshCommand = new RelayCommand(() => RefreshLeaderboard());

            PopupDisplayed = false;

            Messenger.Default.Register<LeaderboardMessage>
             (

                 this,
                 (action) => ReceiveLeaderboardMessage(action.CurrentHunt)

             );

            connectionChecker = InternetConnectionChecker.GetInstance();

            RefreshLeaderboard();
        }
        public SearchHuntViewModel(ITreasureHuntService serviceClient)
        {
            this.serviceClient = serviceClient;
            SearchHuntCommand = new RelayCommand(() => ExecuteSearchHuntCommand(), () => IsValidHunt());
            CreateNewHuntCommand = new RelayCommand(() => ExecuteCreateHuntCommand());
            LogoutCommand = new RelayCommand(() => ExecuteLogoutCommand());
            ResetCompanyPasswordCommand = new RelayCommand(() => ExecuteResetCompanyPasswordCommand());
            RefreshTreasureHunts();

            connectionChecker = InternetConnectionChecker.GetInstance();

            Messenger.Default.Register<ViewUpdatedMessage>
             (

             this,
             (action) => ReceiveViewUpdatedMessage(action.UpdatedView)

             );

            Messenger.Default.Register<CurrentUserMessage>
           (

           this,
           (action) => ReceiveCurrentUserMessage(action.CurrentUser)

           );

           PopupDisplayed = false;
        }
        public LoginViewModel(ITreasureHuntService serviceClient)
        {
            this.serviceClient = serviceClient;

            LoginUserCommand = new RelayCommand(() => ExecuteLoginUserCommand(), () => IsValidDetails());
            RegisterCommand = new RelayCommand(() => ExecuteRegisterCommand());
            ForgotPasswordCommand = new RelayCommand(() => ExecuteForgotPasswordCommand());

            connectionChecker = InternetConnectionChecker.GetInstance();

            PopupDisplayed = false;
        }
        public ViewHuntViewModel(ITreasureHuntService serviceClient)
        {
            this.serviceClient = serviceClient;
            SaveQuestionCommand = new RelayCommand(() => ExecuteSaveQuestionCommand(), () => IsValidNewQuestion());
            PrintQRCodesCommand = new RelayCommand(() => ExecutePrintQRCodesCommand(), () => IsValidListOfQuestions());
            BackCommand = new RelayCommand(() => ExecuteBackCommand());
            LeaderboardCommand = new RelayCommand(() => ExecuteLeaderboardCommand());

            connectionChecker = InternetConnectionChecker.GetInstance();

            Messenger.Default.Register<SelectedHuntMessage>
            (

            this,
            (action) => ReceiveSelectedHuntMessage(action.CurrentHunt)

            );
        }
        public CreateHuntViewModel(ITreasureHuntService serviceClient)
        {
            this.serviceClient = serviceClient;
            SaveHuntCommand = new RelayCommand(() => ExecuteSaveCommand(), () => IsValidDetails());
            BackCommand = new RelayCommand(() => ExecuteBackCommand());

            connectionChecker = InternetConnectionChecker.GetInstance();

            Messenger.Default.Register<CurrentUserMessage>
            (

            this,
            (action) => ReceiveCurrentUserMessage(action.CurrentUser)

            );

            PopupDisplayed = false;
        }