コード例 #1
0
        private async Task <DataFileInfo> GetDataFileInfo(Guid releaseId, File dataFile)
        {
            // Files should exists in storage but if not then allow user to delete
            var blobExists =
                await _blobStorageService.CheckBlobExists(PrivateReleaseFiles, dataFile.Path());

            if (!blobExists)
            {
                return(await GetFallbackDataFileInfo(releaseId, dataFile));
            }

            var blob = await _blobStorageService.GetBlob(PrivateReleaseFiles, dataFile.Path());

            var metaFile = await GetAssociatedMetaFile(releaseId, dataFile);

            await _contentDbContext.Entry(dataFile)
            .Reference(f => f.CreatedBy)
            .LoadAsync();

            return(new DataFileInfo
            {
                Id = dataFile.Id,
                FileName = dataFile.Filename,
                Name = await GetSubjectName(releaseId, dataFile),
                Size = blob.Size,
                MetaFileId = metaFile.Id,
                MetaFileName = metaFile.Filename,
                ReplacedBy = dataFile.ReplacedById,
                Rows = blob.GetNumberOfRows(),
                UserName = dataFile.CreatedBy?.Email ?? "",
                Status = await _dataImportService.GetStatus(dataFile.Id),
                Created = dataFile.Created,
                Permissions = await _userService.GetDataFilePermissions(dataFile)
            });
        }
コード例 #2
0
        private async Task <Either <ActionResult, Unit> > CheckCanDeleteDataFiles(Guid releaseId, File file)
        {
            var importStatus = await _dataImportService.GetStatus(file.Id);

            if (!importStatus.IsFinished())
            {
                return(ValidationActionResult(CannotRemoveDataFilesUntilImportComplete));
            }

            if (!CanUpdateDataFiles(releaseId))
            {
                return(ValidationActionResult(CannotRemoveDataFilesOnceReleaseApproved));
            }

            return(Unit.Instance);
        }