Ejemplo n.º 1
0
        /// <summary>
        /// 指定した既存データIDとタグを関連付ける。
        /// 既存の関連付け状況に関わらず、指定されたタグのみが紐づいている状況にする(他の紐づけはすべて削除する)
        /// </summary>
        /// <remarks>
        /// 親無しになるタグのチェックは行わない。
        /// </remarks>
        /// <param name="dataId">データID</param>
        /// <param name="inputTags">関連付けるタグ</param>
        public async Task EditDataTagsAsync(long dataId, IEnumerable <string> inputTags)
        {
            //まずは既存のタグをすべて削除
            tagRepository.DeleteAllDataTag(dataId);

            foreach (var inputTag in inputTags.Distinct())
            {
                if (string.IsNullOrEmpty(inputTag) == false)
                {
                    //タグを付与する。既存タグは削除済みなので、重複チェックはしない。
                    await tagRepository.AddDataTagAsync(dataId, inputTag, false);
                }
            }
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> AttachTag(long id, string tag, [FromServices] ITagRepository tagRepository)
        {
            //データの存在チェック
            var data = await dataRepository.GetByIdAsync(id);

            if (data == null)
            {
                return(JsonNotFound($"Data ID {id} is not found."));
            }

            await tagRepository.AddDataTagAsync(data.Id, tag);

            //結果を取り直す
            var result = await dataRepository.GetDataIncludeAllAsync(data.Id);

            return(JsonOK(new DetailsOutputModel(result)));
        }