const models = require('../models') 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 { result } = require('lodash'); let methods = {} let privates = { findUser : (userId)=>{ return new Promise((resolve, reject) => { models.User.findByPk(userId) .then((user) => { if(user){ resolve(user.dataValues) }else{ reject({ eCode: 404, eText: 'کاربر یافت نشد' }) } }).catch(err => { reject({ eCode: 500, eText: err }) }) }) } } methods.addUser = (userInfo,imgOriginalName) => { return new Promise((resolve, reject) => { imageResizer(imgOriginalName) .then(()=>{ return models.User.create(userInfo) }).then((user) => { resolve(user) }).catch(err => { reject({ eCode: 500, eText: err }) }) }) } methods.completeForm =(userId)=>{ return new Promise((resolve, reject) => { let userInfo; privates.findUser(userId) .then(user=>{ userInfo = user userInfo.fullName = user.firstName + ' ' + user.lastName userInfo.codeMelli = persianjs(user.codeMelli).englishNumber().toString(); userInfo.workUnitCode = persianJs(user.workUnitCode).englishNumber().toString(); userInfo.obligationNumber = persianJs(user.obligationNumber).englishNumber().toString(); userInfo.requestNumber = persianJs(user.requestNumber).englishNumber().toString(); userInfo.writtenOrderNumber = persianJs(user.writtenOrderNumber).englishNumber().toString(); userInfo.deadline = persianJs(user.deadline).englishNumber().toString(); userInfo.deadlineAndUnit = userInfo.deadline + ' ' + userInfo.deadlineUnit userInfo.obligationDate = jalali( user.obligationDate, 'YYYY/MM/DD').locale('fa').format('DD/MM/YYYY') userInfo.requestDate = jalali( user.requestDate, 'YYYY/MM/DD').locale('fa').format('DD/MM/YYYY') userInfo.writtenOrderDate = jalali( user.writtenOrderDate, 'YYYY/MM/DD').locale('fa').format('DD/MM/YYYY') userInfo.obligationDate = persianJs(user.obligationDate).englishNumber().toString(); userInfo.requestDate = persianJs(user.requestDate).englishNumber().toString(); userInfo.writtenOrderDate = persianJs(user.writtenOrderDate).englishNumber().toString(); return docxTemp(userInfo, userInfo.fileName) }).then(docxFileName=>{ return addImageToWord(docxFileName, userInfo.imageFileName + '.png') }).then(result=>{ resolve(`localhost:3000/users/download/${result}`) }).catch(err => { if (err.eText) { if (typeof (err.eText) !== 'string') { err.eText = err.eText.toString() } reject({ eCode: err.eCode, eText: err.eText }) } else { reject({ eCode: 500, eText: err }) } }) }) } module.exports = methods