Пример #1
0
        public async Task <IActionResult> EditEntries([FromRoute] long?id, [FromBody] EditEntriesInputModel model)
        {
            //データの入力チェック
            if (!ModelState.IsValid || id == null)
            {
                return(JsonBadRequest("Invalid inputs."));
            }
            //データの存在チェック
            var dataSet = await dataSetRepository.GetByIdAsync(id.Value);

            if (dataSet == null)
            {
                return(JsonNotFound($"DataSet Id {id.Value} is not found."));
            }

            //学習に使われていたら更新できない
            if (dataSet.IsLocked)
            {
                return(JsonConflict($"DataSet {dataSet.Name} has been used by training."));
            }

            //メタデータ編集
            EditDataSet(dataSet, model);

            //何も考えず、全Delete&Insertする。

            //まずは全削除
            dataSetRepository.DeleteAllEntries(dataSet.Id);

            //値があれば登録
            if ((dataSet.IsFlat && model.FlatEntries == null) ||
                (!dataSet.IsFlat && model.Entries == null))
            {
                unitOfWork.Commit();
                return(JsonOK(new IndexOutputModel(dataSet)));
            }

            if (dataSet.IsFlat)
            {
                model.Entries.Clear();
                model.Entries[dummyDataType] = model.FlatEntries;
            }

            return(await InsertDataSetEntryAsync(dataSet, model.Entries, false));
        }