///// <summary>
        ///// Determines whether this instance can execute.
        ///// </summary>
        ///// <returns></returns>
        //private bool CanExecute()
        //{
        //    return true;
        //}

        ///// <summary>
        ///// Executes the import command.
        ///// </summary>
        //private void ExecuteImportCommand()
        //{
        //    RegionManager.RequestNavigate(RegionNames.MainContent, new Uri(ViewNames.WebsiteImportView, UriKind.Relative));
        //}

        public void LoadData()
        {
            // For each installed dataset, for each imported file, find the matches in the selected datasets saved in the website...
            try
            {
                // could move this into the loop and pass outer.Id, but here it's a single query
                var importedDatasets = WebsiteDataService.GetDatasetSummary();

                //if (InstalledDatasets == null || !InstalledDatasets.Any())
                //{
                var datasets = WebsiteDataService.GetInstalledDatasets();

                // create an OC of datasets for binding in the view
                InstalledDatasets = datasets.Distinct().Select(target => new InstalledDataset
                {
                    Id = target.Id,
                    IsTrendingEnabled      = target.IsTrendingEnabled,
                    NameOfInstalledDataset = target.Name,
                    WebsiteViewModel       = ManageViewModel.WebsiteViewModel,
                    Manager = ManageViewModel,
                    Events  = EventAggregator
                }).ToObservableCollection();
                //}

                foreach (var outer in InstalledDatasets)
                {
                    // it should return an empty ToList if there are none, but just to be safe
                    if (!importedDatasets.Any(x => x.DatasetTypeId == outer.Id))
                    {
                        var specialRow = new ImportedFile(outer.Id, false, outer.NameOfInstalledDataset, "", "", "", "", ImportedFileRowTypes.NoneImported);
                        outer.ImportedFiles.Add(specialRow);
                    }
                    else
                    {
                        var specialRow = new ImportedFile(outer.Id, false, outer.NameOfInstalledDataset, "", "", "", "", ImportedFileRowTypes.PleaseSelect);
                        outer.ImportedFiles.Add(specialRow);

                        foreach (var inner in importedDatasets.Where(x => x.DatasetTypeId == outer.Id))
                        {
                            // This imported dataset is 'unselected' if there are no datasets in the website, or if none have id == inner.DatasetTypeId
                            bool selected = ManageViewModel.WebsiteViewModel != null && CurrentWebsite != null && CurrentWebsite.Datasets != null &&
                                            CurrentWebsite.Datasets.Any(d => d.Dataset.ContentType.Id == inner.DatasetTypeId && d.Dataset.Id == inner.DatasetImport.Id);

                            var name           = string.Format("{0}: {1}", outer.NameOfInstalledDataset, inner.Name);
                            var websiteDataSet = (ManageViewModel.WebsiteViewModel != null && CurrentWebsite != null && CurrentWebsite.Datasets != null &&
                                                  CurrentWebsite.Datasets.Any(ds => ds.Dataset.Id == inner.DatasetImport.Id))
                                                    ? CurrentWebsite.Datasets.SingleOrDefault(ds => ds.Dataset.Id == inner.DatasetImport.Id)
                                                    : null;


                            var file = new ImportedFile(inner.DatasetId, selected, name,
                                                        inner.Year.ToString(), inner.Quarter,
                                                        inner.VersionMonth, inner.VersionYear,
                                                        ImportedFileRowTypes.Normal,
                                                        websiteDataSet != null ? websiteDataSet.Dataset : null);

                            // Add selected files to the website list of datasets; add unselected files to the list of "available" files
                            if (selected)
                            {
                                outer.WebsiteDatasets.Add(file);
                            }
                            else
                            {
                                outer.ImportedFiles.Add(file);
                            }
                        }
                    }

                    // select the first row
                    outer.SelectedImportedFile = outer.ImportedFiles[0];
                }
            }
            catch (Exception ex)
            {
                EventAggregator.GetEvent <ErrorNotificationEvent>().Publish(ex);
            }
        }