/// <summary> /// データセットに指定したエントリを紐づける。 /// エントリが空になっている前提。 /// </summary> /// <param name="dataSet">データセット</param> /// <param name="entries">エントリ</param> /// <param name="isCreated">新規作成か否か</param> private async Task <IActionResult> InsertDataSetEntryAsync(DataSet dataSet, Dictionary <string, IEnumerable <CreateInputModel.Entry> > entries, bool isCreated) { //データ種別の指定が名前のため、名前からIDを引けるようにキャッシュしておく var dataTypes = new Dictionary <string, DataType>(); foreach (var dataType in dataTypeRepository.GetAllWithOrderby(d => d.SortOrder, true)) { dataTypes.Add(dataType.Name, dataType); } foreach (var dataLists in entries) { //DataTypeがなかった場合の処理 if (dataTypes.ContainsKey(dataLists.Key) == false) { return(JsonNotFound($"DataType {dataLists.Key} is not found.")); } var dataType = dataTypes[dataLists.Key]; foreach (var entry in dataLists.Value) { //Dataがなかった場合の処理 if (await dataRepository.ExistsAsync(d => d.Id == entry.Id) == false) { return(JsonNotFound($"Data ID {entry.Id} is not found.")); } dataSetRepository.AddEntry(dataSet, dataType.Id, entry.Id, isCreated); } } unitOfWork.Commit(); if (isCreated) { return(JsonCreated(new IndexOutputModel(dataSet))); } else { return(JsonOK(new IndexOutputModel(dataSet))); } }