Esempio n. 1
0
        public async Task <IActionResult> RegistAttachedFile(long id, [FromBody] AddFileInputModel model)
        {
            //データの入力チェック
            if (!ModelState.IsValid)
            {
                return(JsonBadRequest("Invalid inputs."));
            }

            //データの存在チェック
            var trainingHistory = await trainingHistoryRepository.GetByIdAsync(id);

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

            //同じ名前のファイルは登録できない
            if (await trainingHistoryRepository.ExistsAttachedFileAsync(id, model.FileName))
            {
                return(JsonConflict($"Training {id} has already a file named {model.FileName}."));
            }

            var attachedFile = new TrainingHistoryAttachedFile
            {
                TrainingHistoryId = id,
                FileName          = model.FileName,
                Key        = ResourceType.TrainingHistoryAttachedFiles.ToString(), //model.Key ?? ResourceType.TrainingHistoryAttachedFiles.ToString();
                StoredPath = model.StoredPath
            };

            trainingHistoryRepository.AddAttachedFile(attachedFile);
            unitOfWork.Commit();

            return(JsonOK(new AttachedFileOutputModel(id, model.FileName, attachedFile.Id)));
        }
Esempio n. 2
0
        public async Task <IActionResult> AddFile(long id, [FromBody] AddFileInputModel model, [FromServices] IDataSetRepository dataSetRepository)
        {
            //データの入力チェック
            if (!ModelState.IsValid)
            {
                return(JsonBadRequest("Invalid inputs."));
            }

            //データの存在チェック
            var data = await dataRepository.GetDataIncludeAllAsync(id);

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

            var checkResult = await CheckDataIsLocked(data, dataSetRepository);

            if (checkResult != null)
            {
                return(checkResult);
            }

            //同じファイル名は登録できない
            var file = data.DataProperties.FirstOrDefault(d => d.Key == model.FileName);

            if (file != null)
            {
                return(JsonConflict($"Data {data.Name} has already a file named {model.FileName}."));
            }

            // データファイルの登録
            var property = dataRepository.AddFile(data, model.FileName, model.StoredPath);

            unitOfWork.Commit();

            return(JsonCreated(new DataFileOutputModel {
                Id = id, Key = property.Key, FileId = property.Id, FileName = model.FileName
            }));
        }