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) }); }
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); }