public void AttachFilesToRequests(List <Request> requests, NiisWebContextMigration niisWebContext, ref int migratedFilesCount) { var documentFiles = _oldNiisDocumentDataService.GetDdDocumentDatas(requests.Select(r => r.Barcode).ToList()); if (documentFiles.Any() == false) { return; } foreach (var request in requests) { var documentData = documentFiles.SingleOrDefault(d => d.Id == request.Barcode); if (documentData == null) { continue; } if (string.IsNullOrWhiteSpace(documentData.FileName)) { documentData.FileName = $"{request.Barcode}.{FileTypes.Pdf}"; } var attachment = new Attachment { AuthorId = request.UserId ?? _appConfiguration.AuthorAttachmentDocumentId, ContentType = FileTypeHelper.GetContentType(documentData.FileName), BucketName = $"old-request-{request.Barcode}", IsMain = true, CopyCount = request.CopyCount, PageCount = request.PageCount, DateCreate = documentData.DateCreate, DateUpdate = documentData.DateUpdate, OriginalName = documentData.FileName, Length = documentData.File.Length, ValidName = documentData.FileName.MakeValidFileName(), Hash = _generateHash.GenerateFileHash(documentData.File) }; _newNiisAttachmentFileService = new NewNiisAttachmentFileService(niisWebContext); _newNiisAttachmentFileService.CreateAttachment(attachment); _fileStorage.AddAsync(attachment.BucketName, attachment.ValidName, documentData.File, attachment.ContentType).Wait(); request.MainAttachmentId = attachment.Id; niisWebContext.SaveChanges(); migratedFilesCount++; } }
private async Task <Attachment> CreateAttachment(DocumentData oldAttachment, int newDocumentId) { try { var fileName = oldAttachment.FileName; var file = oldAttachment.File; var documentInfo = SavedDocuments.FirstOrDefault(d => d.Id == newDocumentId); if (documentInfo == null) { return(null); } var extentionPath = GetDocumentTypeName((byte)documentInfo.DocumentType); var bucketName = GetBucketName(null, newDocumentId, null); if (string.IsNullOrWhiteSpace(fileName)) { fileName = $"{Guid.NewGuid()}.{FileTypes.Pdf}"; } var originalName = GetFolderWithOriginalName(null, newDocumentId, null, fileName, extentionPath); var validName = fileName.MakeValidFileName(); var contentType = FileTypeHelper.GetContentType(fileName); await _fileStorage.AddAsync(bucketName, originalName, file, contentType); var attachment = new Attachment { AuthorId = DeveloperUserId, ContentType = contentType, BucketName = bucketName, IsMain = true, CopyCount = documentInfo.CopyCount, PageCount = documentInfo.PageCount, DateCreate = DateTimeOffset.Now, DateUpdate = DateTimeOffset.Now, OriginalName = originalName, Length = file.Length, ValidName = validName, Hash = _generateHash.GenerateFileHash(file), ExternalId = documentInfo.ExternalId, DocumentId = newDocumentId, IsDeleted = false }; return(attachment); } catch (Exception) { return(null); } }
public void AttachFile(AttachedFileModel attachedFile, Document document) { var attachment = new Attachment { DateCreate = DateTimeOffset.Now, DocumentId = document.Id, IsMain = attachedFile.IsMain, CopyCount = attachedFile.CopyCount, Length = attachedFile.Length, AuthorId = _configuration.AuthorAttachmentDocumentId, PageCount = attachedFile.PageCount, OriginalName = "integration/" + GetDocumentTypeName(document.DocumentType) + "/" + Guid.NewGuid(), //attachedFile.Name, ValidName = attachedFile.Name.MakeValidFileName(), ContentType = FileTypeHelper.GetContentType(attachedFile.Name), Hash = _generateHash.GenerateFileHash(attachedFile.File), BucketName = "documents" }; var attachmentId = CreateAttachment(attachment); Task.Run(() => _fileStorage.AddAsync(attachment.BucketName, attachment.OriginalName, attachedFile.File, attachment.ContentType)).Wait(); document.MainAttachmentId = attachmentId; }