private async Task <RepoSettingsViewModel> GetRepoSettingsViewModel(string ownerId, string repoId)
        {
            if (string.IsNullOrEmpty(ownerId))
            {
                throw new ArgumentNullException();
            }
            if (string.IsNullOrEmpty(repoId))
            {
                throw new ArgumentNullException();
            }

            try
            {
                var rs = await _repoSettingsStore.GetRepoSettingsAsync(ownerId, repoId);

                var rsvm = new RepoSettingsViewModel(rs);
                return(rsvm);
            }
            catch (RepoSettingsNotFoundException)
            {
                Log.Debug("No repo settings found for repo '{0}/{1}'", ownerId, repoId);
                return(new RepoSettingsViewModel {
                    OwnerId = ownerId, RepoId = repoId
                });
            }
            catch (Exception e)
            {
                Log.Error(e, "Error retrieving owner settings with owner id '{0}'", ownerId);
                throw;
            }
        }
        private void RepoSettingsButtonClick(object sender, RoutedEventArgs e)
        {
            RepoSettingsViewModel dataContext = RepoSettingsPage.DataContext as RepoSettingsViewModel;

            dataContext.DatabaseSolutionPath = ConfigurationManager.AppSettings["DatabaseSolutionPath"];
            //((RepoSettingsViewModel)page.DataContext).DatabaseSolutionPath
            //CurrentMenuStackPanel = EditScriptMenuStackPanel;
            PageFrame.Navigate(RepoSettingsPage);
        }
        public async Task <IActionResult> Settings(string ownerId, string repoId, RepoSettingsViewModel settingsViewModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    settingsViewModel.LastModified   = DateTime.UtcNow;
                    settingsViewModel.LastModifiedBy = User.Identity.Name;
                    if (!ownerId.Equals(User.Identity.Name))
                    {
                        settingsViewModel.OwnerIsOrg = true;
                    }
                    var repoSettings = settingsViewModel.AsRepoSettings();
                    await _repoSettingsStore.CreateOrUpdateRepoSettingsAsync(repoSettings);

                    ViewBag.StatusMessage  = GetSettingsStatusMessage(ManageMessageId.ChangeSettingSuccess);
                    TempData["ModelState"] = null;
                }
                catch (Exception e)
                {
                    ViewBag.StatusMessage = GetSettingsStatusMessage(ManageMessageId.Error);
                    Log.Error(e, "Error updating repo settings for '{0}/{1}'", ownerId, repoId);
                    throw;
                }
            }
            else
            {
                // pass errors to the ViewComponent
                ViewBag.StatusMessage  = GetSettingsStatusMessage(ManageMessageId.ValidationError);
                TempData["ModelState"] = ModelState;
                TempData["ViewModel"]  = settingsViewModel;
            }

            DashboardViewModel.Area  = "settings";
            DashboardViewModel.Title = string.Format("{0} Settings", DashboardViewModel.SelectedOwnerId, DashboardViewModel.SelectedRepoId);
            return(View("Settings", DashboardViewModel));
        }