private async Task <bool> GetAlreadyRecorded()
        {
            try
            {
                SetProgressBar(AppResources.SysTrayGettingRecordedItems);

                var query = new RecordingQuery
                {
                    SeriesTimerId = SelectedSeries.Id,
                    UserId        = AuthenticationService.Current.LoggedInUserId
                };

                var items = await ApiClient.GetLiveTvRecordingsAsync(query);

                if (items != null && !items.Items.IsNullOrEmpty())
                {
                    Recordings = items.Items.ToList();
                    SetProgressBar();
                    return(true);
                }
            }
            catch (HttpException ex)
            {
                Utils.HandleHttpException(ex, "GetAlreadyRecorded()", NavigationService, Log);
            }

            SetProgressBar();
            return(false);
        }
        private async Task LoadCurrentlyRecording(bool isRefresh)
        {
            if (!NavigationService.IsNetworkAvailable || (_currentlyRecordingLoaded && !isRefresh && !LiveTvHelper.HasExpired(_currentlyRecordingLastRun, 5)))
            {
                return;
            }

            try
            {
                SetProgressBar(AppResources.SysTrayGettingCurrentlyRecording);

                var query = new RecordingQuery
                {
                    IsInProgress = true,
                    Status       = RecordingStatus.InProgress,
                    UserId       = AuthenticationService.Current.LoggedInUserId
                };

                var items = await ApiClient.GetLiveTvRecordingsAsync(query);

                if (items != null && !items.Items.IsNullOrEmpty())
                {
                    CurrentlyRecording = items.Items.ToList();

                    _currentlyRecordingLoaded  = true;
                    _currentlyRecordingLastRun = DateTime.Now;
                }
            }
            catch (HttpException ex)
            {
                Utils.HandleHttpException(ex, "LoadCurrentlyRecording(" + isRefresh + ")", NavigationService, Log);
            }

            SetProgressBar();
        }
        private async Task LoadProgrammes(bool isRefresh)
        {
            if (!NavigationService.IsNetworkAvailable || (_programmesLoaded && !isRefresh && !LiveTvHelper.HasExpired(_programmesLastRun)))
            {
                return;
            }

            try
            {
                SetProgressBar(AppResources.SysTrayGettingRecordedItems);

                var query = new RecordingQuery
                {
                    IsInProgress = false,
                    Status       = RecordingStatus.Completed,
                    UserId       = AuthenticationService.Current.LoggedInUserId
                };

                var items = await ApiClient.GetLiveTvRecordingsAsync(query);

                if (items != null && !items.Items.IsNullOrEmpty())
                {
                    RecordedProgrammes = items.Items.OrderBy(x => x.StartDate).ToList();
                    await GroupProgrammes();

                    _programmesLoaded  = true;
                    _programmesLastRun = DateTime.Now;
                }
            }
            catch (HttpException ex)
            {
                Utils.HandleHttpException(ex, "LoadProgrammes(" + isRefresh + ")", NavigationService, Log);
            }

            SetProgressBar();
        }