diff --git a/services/user.js b/services/user.js index 8b920ff..b788aeb 100644 --- a/services/user.js +++ b/services/user.js @@ -3,7 +3,8 @@ const jalali = require("jalali-moment"); const persianjs = require('persianjs') const docxTemp = require('../tools/docxtemp') const imageResizer = require('../tools/imageResizer') -const addImageToWord = require('../tools/addImageToWord') +const addImageToWord = require('../tools/addImageToWord'); +const { result } = require('lodash'); let methods = {} @@ -43,7 +44,7 @@ methods.addUser = (userInfo,imgOriginalName) => { imageResizer(imgOriginalName) .then(()=>{ - models.User.create(userInfo) + return models.User.create(userInfo) }).then((user) => { resolve(user) @@ -60,10 +61,11 @@ methods.addUser = (userInfo,imgOriginalName) => { methods.completeForm =(userId)=>{ return new Promise((resolve, reject) => { + let userInfo; privates.findUser(userId) .then(user=>{ - let userInfo = user + userInfo = user userInfo.fullName = user.firstName + ' ' + user.lastName @@ -88,7 +90,9 @@ methods.completeForm =(userId)=>{ return docxTemp(userInfo, userInfo.fileName) }).then(docxFileName=>{ - addImageToWord(docxFileName, userInfo.fileName + '.png') + return addImageToWord(docxFileName, userInfo.imageFileName + '.png') + }).then(result=>{ + resolve(`localhost:3000/users/download/${result}`) }).catch(err => { if (err.eText) { diff --git a/template/Hform4.docx b/template/Hform4.docx index de8daba..628eb82 100644 Binary files a/template/Hform4.docx and b/template/Hform4.docx differ diff --git a/tools/addImageToWord.js b/tools/addImageToWord.js index 5a6f243..854b7c9 100644 --- a/tools/addImageToWord.js +++ b/tools/addImageToWord.js @@ -1,16 +1,47 @@ const exec = require('child-process-promise').exec; +const fsPromises = require('fs').promises; +const path = require('path') -module.exports = function (docxFile, image){ - return new Promise ((resolve, reject)=>{ - exec('mkdir word/media') - .then(function (result) { - var stdout = result.stdout; - var stderr = result.stderr; - console.log('stdout: ', stdout); - console.log('stderr: ', stderr); +module.exports = function (docxFile, image) { + return new Promise((resolve, reject) => { + let zipName = docxFile.slice(0, -5) + '.zip' + let filePath = path.join(__dirname + '/../public/files') + exec('mkdir -p word/media') + .then(function (result) { + + return Promise.all([ + fsPromises.copyFile(path.join(__dirname + '/../public/images/resized/' + image), + path.join(__dirname + '/../public/files/word/media/image2.png')), + + fsPromises.rename(path.join(__dirname + '/../public/files/' + docxFile), + path.join(__dirname + '/../public/files/' + zipName)) + + ]) + + }).then((result) => { + + return exec(`zip -d ${zipName} ./word/media/image2.png`, { + cwd: filePath + }) + }).then((result) => { + return exec(`zip -u ${zipName} ./word/media/image2.png`, { + cwd: filePath + }) + }).then((result) => { + + return fsPromises.rename(path.join(__dirname + '/../public/files/' + zipName), + path.join(__dirname + '/../public/files/' + docxFile)) + }).then(() => { + resolve(docxFile) + }) + + .catch(function (err) { + + reject({ + eCode: 500, + eText: err + }) + + }); }) - .catch(function (err) { - console.error('ERROR: ', err); - }); - } - )} \ No newline at end of file +} \ No newline at end of file