/// <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); } } }
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))); }