Пример #1
0
        public async Task <IActionResult> DeleteDataSet(long id)
        {
            var dataSet = await aquariumDataSetRepository.GetByIdAsync(id);

            if (dataSet == null)
            {
                return(JsonNotFound($"AquariumDataSet ID {id} is not found."));
            }
            if (await experimentRepository.ExistsAsync(x => x.DataSetId == id))
            {
                return(JsonConflict($"AquariumDataSet ID {id} has been used by experiment."));
            }
            if (await experimentPreprocessRepository.ExistsAsync(x => x.DataSetId == id))
            {
                return(JsonConflict($"AquariumDataSet ID {id} has been used by experiment preprocess."));
            }

            var dataSetIds = new HashSet <long>();

            foreach (var dataSetVersion in aquariumDataSetVersionRepository.FindAll(x => x.AquariumDataSetId == id))
            {
                dataSetIds.Add(dataSetVersion.DataSetId);
            }
            aquariumDataSetRepository.Delete(dataSet);
            unitOfWork.Commit();

            foreach (var x in dataSetIds)
            {
                await dataSetLogic.ReleaseLockAsync(x);
            }
            unitOfWork.Commit();

            return(JsonNoContent());
        }