public async Task <IActionResult> List(string key) { try { var networks = await _networkRepository.GetAllAsync(); var keyValue = await _keyValuesRepository.GetKeyValueAsync(key) ?? new KeyValue(); if (keyValue.Override == null) { keyValue.Override = Array.Empty <OverrideValue>(); } var model = new OverridesModel { KeyValue = keyValue, Networks = networks, AvailableNetworks = networks .Where(item => keyValue.Override.All(o => o.NetworkId != item.Id)) .Select(n => new SelectListItem { Text = n.Name, Value = n.Id }) .OrderBy(item => item.Text) .ToArray() }; return(PartialView("List", model)); } catch (Exception ex) { _log.Error(ex, context: key); return(PartialView("List", new OverridesModel())); } }
private async Task <List <KeyValueEntity> > InitKeyValuesAsync( IRepository repositoryEntity, IEnumerable <KeyValue> placeholders, string repositoryTag, string keyRepoName, bool isCreate) { var keyValues = new List <KeyValueEntity>(); // save key values history foreach (var keyValue in placeholders) { if (!string.IsNullOrEmpty(repositoryTag)) { if (isCreate) { var baseKeyValueEntity = await _keyValuesRepository.GetKeyValueAsync(keyValue.RowKey); if (baseKeyValueEntity?.RepositoryNames != null && baseKeyValueEntity.RepositoryNames.Contains(repositoryEntity?.OriginalName)) { keyValue.UseNotTaggedValue = true; } } else { keyValue.UseNotTaggedValue = false; } keyValue.RowKey = repositoryTag + "-" + keyValue.RowKey; keyValue.Tag = repositoryTag; } var keyValueEntity = await _keyValuesRepository.GetKeyValueAsync(keyValue.RowKey); if (keyValueEntity == null) { keyValueEntity = new KeyValueEntity { RowKey = keyValue.RowKey, RepositoryNames = new[] { keyRepoName }, Value = keyValue.Value, }; } else if (keyValueEntity.RepositoryNames == null) { keyValueEntity.RepositoryNames = new[] { keyRepoName }; } else if (keyValueEntity.RepositoryNames != null && !keyValueEntity.RepositoryNames.Contains(keyRepoName)) { var repositoryIds = keyValueEntity.RepositoryNames.ToList(); repositoryIds.Add(keyRepoName); keyValueEntity.RepositoryNames = repositoryIds.ToArray(); } keyValueEntity.Types = keyValue.Types; keyValueEntity.RepositoryId = repositoryEntity.RowKey; keyValueEntity.Tag = keyValue.Tag; if (!keyValueEntity.UseNotTaggedValue.HasValue) { keyValueEntity.UseNotTaggedValue = keyValue.UseNotTaggedValue; } keyValues.Add(keyValueEntity as KeyValueEntity); } return(keyValues); }