public async Task <ActionResult <ItemsResult> > AddItems([FromBody] ItemsAddRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, Types.SitePermissions.SettingsStyleRelatedField)) { return(Unauthorized()); } foreach (var item in request.Items) { var itemInfo = new RelatedFieldItem { Id = 0, SiteId = request.SiteId, RelatedFieldId = request.RelatedFieldId, Label = item.Key, Value = item.Value, ParentId = request.ParentId }; await _relatedFieldItemRepository.InsertAsync(itemInfo); } await _authManager.AddAdminLogAsync("批量添加联动字段项"); var tree = await _relatedFieldItemRepository.GetCascadesAsync(request.SiteId, request.RelatedFieldId, 0); return(new ItemsResult { Tree = tree }); }
public async Task <int> InsertAsync(RelatedFieldItem info) { info.Taxis = await GetMaxTaxisAsync(info.SiteId, info.ParentId) + 1; info.Id = await _repository.InsertAsync(info, Q.CachingRemove(GetCacheKey(info.SiteId))); return(info.Id); }
public async Task ImportRelatedFieldAsync(bool overwrite) { if (!DirectoryUtils.IsDirectoryExists(_directoryPath)) { return; } var filePaths = DirectoryUtils.GetFilePaths(_directoryPath); foreach (var filePath in filePaths) { var feed = AtomFeed.Load(FileUtils.GetFileStreamReadOnly(filePath)); var title = AtomUtility.GetDcElementContent(feed.AdditionalElements, new List <string> { nameof(RelatedField.Title), "RelatedFieldName" }); var relatedFieldInfo = new RelatedField { Id = 0, Title = title, SiteId = _site.Id }; var srcRelatedFieldInfo = await _databaseManager.RelatedFieldRepository.GetRelatedFieldAsync(_site.Id, title); if (srcRelatedFieldInfo != null) { if (overwrite) { await _databaseManager.RelatedFieldRepository.DeleteAsync(srcRelatedFieldInfo.Id); } else { relatedFieldInfo.Title = await _databaseManager.RelatedFieldRepository.GetImportTitleAsync(_site.Id, relatedFieldInfo.Title); } } var relatedFieldId = await _databaseManager.RelatedFieldRepository.InsertAsync(relatedFieldInfo); var lastInertedLevel = 1; var lastInsertedParentId = 0; var lastInsertedId = 0; foreach (AtomEntry entry in feed.Entries) { var itemName = AtomUtility.GetDcElementContent(entry.AdditionalElements, nameof(RelatedFieldItem.Label)); var itemValue = AtomUtility.GetDcElementContent(entry.AdditionalElements, nameof(RelatedFieldItem.Value)); var level = TranslateUtils.ToInt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "Level")); var parentId = 0; if (level > 1) { parentId = level != lastInertedLevel ? lastInsertedId : lastInsertedParentId; } var relatedFieldItemInfo = new RelatedFieldItem { Id = 0, RelatedFieldId = relatedFieldId, Label = itemName, Value = itemValue, ParentId = parentId, Taxis = 0 }; lastInsertedId = await _databaseManager.RelatedFieldItemRepository.InsertAsync(relatedFieldItemInfo); lastInsertedParentId = parentId; lastInertedLevel = level; } } }
private static async Task AddAtomEntryAsync(IDatabaseManager databaseManager, AtomFeed feed, int siteId, RelatedFieldItem relatedFieldItem, int level) { var entry = AtomUtility.GetEmptyEntry(); AtomUtility.AddDcElement(entry.AdditionalElements, new List <string> { nameof(RelatedFieldItem.Id), "ID" }, relatedFieldItem.Id.ToString()); AtomUtility.AddDcElement(entry.AdditionalElements, new List <string> { nameof(RelatedFieldItem.RelatedFieldId), "RelatedFieldID" }, relatedFieldItem.RelatedFieldId.ToString()); AtomUtility.AddDcElement(entry.AdditionalElements, nameof(RelatedFieldItem.Label), relatedFieldItem.Label); AtomUtility.AddDcElement(entry.AdditionalElements, nameof(RelatedFieldItem.Value), relatedFieldItem.Value); AtomUtility.AddDcElement(entry.AdditionalElements, new List <string> { nameof(RelatedFieldItem.ParentId), "ParentID" }, relatedFieldItem.ParentId.ToString()); AtomUtility.AddDcElement(entry.AdditionalElements, nameof(RelatedFieldItem.Taxis), relatedFieldItem.Taxis.ToString()); AtomUtility.AddDcElement(entry.AdditionalElements, "Level", level.ToString()); feed.Entries.Add(entry); var relatedFieldItemInfoList = await databaseManager.RelatedFieldItemRepository.GetRelatedFieldItemsAsync(siteId, relatedFieldItem.RelatedFieldId, relatedFieldItem.Id); foreach (var itemInfo in relatedFieldItemInfoList) { await AddAtomEntryAsync(databaseManager, feed, siteId, itemInfo, level + 1); } }
public async Task <bool> UpdateAsync(RelatedFieldItem info) { return(await _repository.UpdateAsync(info, Q.CachingRemove(GetCacheKey(info.SiteId)))); }