Пример #1
0
        /// <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)));
            }
        }