public LessonsPageViewModel([NotNull] INavigationService navigation, [NotNull] FlurryPublisher flurryPublisher,
                                    [NotNull] BaseApplicationSettings applicationSettings,
                                    [NotNull] ICommandFactory commandFactory,
                                    [NotNull] IAsyncDataProvider dataProvider,
                                    [NotNull] FavoritedItemsManager favoritedItemsManager,
                                    [NotNull] IUiStringsProviders stringsProviders,
                                    [NotNull] INotificationService notificationService)
        {
            if (navigation == null)
            {
                throw new ArgumentNullException("navigation");
            }
            if (applicationSettings == null)
            {
                throw new ArgumentNullException("applicationSettings");
            }
            if (commandFactory == null)
            {
                throw new ArgumentNullException("commandFactory");
            }
            if (dataProvider == null)
            {
                throw new ArgumentNullException("dataProvider");
            }
            if (favoritedItemsManager == null)
            {
                throw new ArgumentNullException("favoritedItemsManager");
            }
            if (stringsProviders == null)
            {
                throw new ArgumentNullException("stringsProviders");
            }
            if (notificationService == null)
            {
                throw new ArgumentNullException("notificationService");
            }

            _navigation            = navigation;
            _applicationSettings   = applicationSettings;
            _flurryPublisher       = flurryPublisher;
            _commandFactory        = commandFactory;
            _dataProvider          = dataProvider;
            _favoritedItemsManager = favoritedItemsManager;
            _stringsProviders      = stringsProviders;
            _notificationService   = notificationService;

            Options = new OptionsMonitor();
        }
        public GroupPageViewModel([NotNull] INavigationService navigation,
                                  [NotNull] BaseApplicationSettings applicationSettings,
                                  [NotNull] IAsyncDataProvider dataProvider,
                                  [NotNull] INotificationService notificationService,
                                  [NotNull] FlurryPublisher flurryPublisher,
                                  [NotNull] FavoritedItemsManager favoritedItemsManager) : base(flurryPublisher)
        {
            if (dataProvider == null)
            {
                throw new ArgumentNullException("dataProvider");
            }
            if (notificationService == null)
            {
                throw new ArgumentNullException("notificationService");
            }
            if (favoritedItemsManager == null)
            {
                throw new ArgumentNullException("favoritedItemsManager");
            }
            if (navigation == null)
            {
                throw new ArgumentNullException("navigation");
            }
            if (applicationSettings == null)
            {
                throw new ArgumentNullException("applicationSettings");
            }

            _navigation            = navigation;
            _applicationSettings   = applicationSettings;
            _dataProvider          = dataProvider;
            _notificationService   = notificationService;
            _favoritedItemsManager = favoritedItemsManager;

            _groupFunc         = group => group.GroupName[0];
            _teachersGroupFunc = teacher => !String.IsNullOrWhiteSpace(teacher.Name) ? teacher.Name[0] : '#';

            SubscribeToQuery();
        }