public async Task <IActionResult> AddFileToDocument(IFormFile attachmentFile, [FromHeader] Guid personUniqueId, [FromQuery] string uniqueCode,
                                                            [FromServices] FileStorageProvider fileStorageProvider, [FromServices] DocumentsManager manager)
        {
            var existAttachmentFile = await manager.CheckExistAttachmentFile(User.Identity.Name, uniqueCode, personUniqueId, attachmentFile);

            if (existAttachmentFile)
            {
                return(Json(ApiResponse.Success(false)));
            }
            var bucket     = fileStorageProvider.GetDocumentBucket();
            var fileStream = new MemoryStream();
            await attachmentFile.CopyToAsync(fileStream);

            var metadata = new AttachmentFileMetadata {
                FileName    = attachmentFile.FileName,
                ContentType = attachmentFile.ContentType,
                Size        = fileStream.Length,
                Uploaded    = DateTime.Now,
                ContentHash = Helper.CalculateSha1Hash(fileStream.ToArray())
            };

            fileStream.Position = 0;
            var id = await bucket.UploadFromStreamAsync(attachmentFile.FileName, fileStream, new GridFSUploadOptions()
            {
                Metadata = metadata.ToBsonDocument()
            });

            var result = await manager.AddAttachmentFileToDraft(User.Identity.Name, uniqueCode, personUniqueId, new FileAttachmentResponse { FileId = id.ToString(), FileName = attachmentFile.FileName });

            return(Json(ApiResponse.Success(result)));
        }
        public async Task <IActionResult> Post(IFormFile attachmentFile, [FromServices] FileStorageProvider fileStorageProvider)
        {
            var bucket     = fileStorageProvider.GetDocumentBucket();
            var fileStream = new MemoryStream();
            await attachmentFile.CopyToAsync(fileStream);

            var metadata = new AttachmentFileMetadata {
                FileName    = attachmentFile.FileName,
                ContentType = attachmentFile.ContentType,
                Size        = fileStream.Length,
                Uploaded    = DateTime.Now,
                ContentHash = Helper.CalculateSha1Hash(fileStream.ToArray())
            };

            fileStream.Position = 0;
            var id = await bucket.UploadFromStreamAsync(attachmentFile.FileName, fileStream, new GridFSUploadOptions()
            {
                Metadata = metadata.ToBsonDocument()
            });

            var result = new FileAttachmentResponse()
            {
                FileName = attachmentFile.FileName, FileId = id.ToString()
            };

            return(Json(ApiResponse.Success(result)));
        }