private List <TagItem> selectTagItems(Guid guid, SelectTagItemByType selectTagItemType) { var tagItems = new List <TagItem>(); switch (selectTagItemType) { case SelectTagItemByType.RelatedItem: tagItems = TagRepository.GetTagItemsByRelatedItemGuid(siteSettings.SiteGuid, guid); break; case SelectTagItemByType.Extra: tagItems = TagRepository.GetTagItemsByExtraGuid(siteSettings.SiteGuid, guid); break; } return(tagItems); }
/// <summary> /// Gets list of TagModel which has the tag text, guid, and selected properties. /// </summary> /// <param name="guid">The RelatedItemGuid or ExtraGuid.</param> /// <param name="selectTagItemType">RelatedItem or Extra</param> /// <returns>List<TagModel></returns> public List <TagModel> GetTagListWithSelections(Guid guid, SelectTagItemByType selectTagItemType) { var tags = selectTags(); var tagItems = selectTagItems(guid, selectTagItemType); var returnModel = new List <TagModel>(); foreach (var tag in tags) { var tagModel = new TagModel { TagText = tag.TagText, TagGuid = tag.Guid, Selected = tagItems.Where(tagItem => tagItem.TagGuid == tag.Guid).Count() > 0 }; returnModel.Add(tagModel); } return(returnModel); }
/// <summary> /// Creates new TagItem /// </summary> /// <param name="tagGuid">The related TagGuid of the TagItem to create.</param> /// <param name="guid">The RelatedItemGuid or ExtraGuid.</param> /// <param name="selectTagItemType">RelatedItem or Extra</param> public void CreateTagItem(Guid tagGuid, Guid guid, SelectTagItemByType selectTagItemType) { if (!allowed) { return; } var tagItem = new TagItem { SiteGuid = siteSettings.SiteGuid, FeatureGuid = _featureGuid, ModuleGuid = _moduleGuid, RelatedItemGuid = (selectTagItemType == SelectTagItemByType.RelatedItem) ? guid : Guid.Empty, ExtraGuid = (selectTagItemType == SelectTagItemByType.Extra) ? guid : Guid.Empty, TagGuid = tagGuid, TaggedBy = currentUser.UserGuid }; TagRepository.SaveTagItem(tagItem, out bool result); }
/// <summary> /// Takes a list of TagModel and creates/deletes any tags based on what already exists in the DB. /// </summary> /// <param name="guid">The RelatedItemGuid or ExtraGuid.</param> /// <param name="selectTagItemType">RelatedItem or Extra</param> /// <param name="returnedTags">List of the tags returned to this method.</param> public void UpdateTags(Guid guid, SelectTagItemByType selectTagItemType, List <TagModel> returnedTags) { if (!allowed) { return; } var tagItems = selectTagItems(guid, selectTagItemType); var selectedTags = returnedTags.Where(tag => tag.Selected).ToList(); var tagItemsToSave = getTagsToSave(selectedTags, tagItems); var tagItemsToDelete = getTagItemsToDelete(selectedTags, tagItems); // Create new TagItems foreach (var tag in tagItemsToSave) { CreateTagItem(tag.TagGuid, guid, selectTagItemType); } // Delete TagItems foreach (var tag in tagItemsToDelete) { DeleteTagItem(tag.TagItemGuid); } }