let KabelCert = require('../models/kabelcert'); const asyncHandler = require('express-async-handler'); const moment = require('moment'); const { mongo } = require('mongoose'); exports.apiSaveKabelCert=asyncHandler(async (req,res)=>{ const {megrendelo, id, wn,targy, tipus,userid, keresztmetszet, feszultseg, hossz, nyomvonal }=req.body; const kabelcert = new KabelCert({ deviceId: id, author: userid, jkvTitle: targy, megrendelo: megrendelo, hossz:hossz, tipus: tipus, munkaszam: wn, feszultseg: feszultseg, nyomvonal: nyomvonal, keresztmetszet: keresztmetszet }) await kabelcert.save(); res.setHeader('Content-Type', 'application/json'); res.send({'response':'ok','message':'Sikeresen létrehozva!','id':id}); }); exports.apiEditKabelCert=asyncHandler(async (req,res)=>{ const {megrendelo, id, modify, wn,targy, tipus,userid, keresztmetszet, feszultseg, hossz, nyomvonal }=req.body; const kabelcert = { //deviceId: id, //author: userid, jkvTitle: targy, megrendelo: megrendelo, hossz:hossz, tipus: tipus, //munkaszam: wn, feszultseg: feszultseg, nyomvonal: nyomvonal, keresztmetszet: keresztmetszet } await KabelCert.findByIdAndUpdate(modify,kabelcert) res.setHeader('Content-Type', 'application/json'); res.send({'response':'ok','message':'Sikeresen létrehozva!','id':id}); }); exports.apiGetKabelCerts=asyncHandler(async (req,res)=>{ const { id }=req.params; const certs = //await KabelCert.find({'deviceId':id}) await KabelCert.aggregate([ { "$match": { "deviceId": mongo.ObjectID(id) } }, { $lookup: { from: "users", localField: "author", foreignField: "_id", as: "user", } }, { "$unwind": "$user" }, /*{ "$project": { "user.name": 1, } }*/ ]) res.status(200).send(certs); }); exports.apiDeleteKabelCerts=asyncHandler(async (req,res,next)=>{ const { id }=req.params; const result= await KabelCert.deleteOne({_id:id}) if (!result) { res.setHeader('Content-Type', 'application/json'); res.send({'response':'Fail','message':'Művelet sikertelen!'}); } else { res.setHeader('Content-Type', 'application/json'); res.send({'response':'ok','message':'Sikeresen törölve!'}); } }); exports.apiGenerateKabelCert=asyncHandler(async(req,res,next)=>{ const { id }=req.params; const cert=await KabelCert.findById(id); if (!cert) { res.setHeader('Content-Type', 'application/json'); res.send({'response':'Fail','message':'Művelet sikertelen!'}); return; } var deviceDate= new Date().toISOString().replace(/-/g, '.').substring(0,10); const PizZip = require("pizzip"); var Docxtemplater = require('docxtemplater'); var fs = require('fs'); var path = require('path'); //Load the docx file as a binary var content = fs .readFileSync(__dirname+'/../docs/templates/kof/kof_kabelvizsgalat.docx', 'binary'); const zip = new PizZip(content); var doc = new Docxtemplater(); doc.loadZip(zip); var year=new Date().getFullYear(); //set the templateVariables var gyev=cert.gyariszam.substring(0,4); //console.log('Megvan!'); doc.setData({ jkvszam: 1, megrendelo: cert.megrendelo, datum:moment().format("YYYY.MM.DD"), vizsgalattargya: cert.targy, tipus:cert.tipus, keresztmetszet:cert.keresztmetszet, feszultseg: cert.feszultseg, hossz:cert.hossz, }); try { // render the document (replace all occurences of {first_name} by John, {last_name} by Doe, ...) //console.log('Generálás kész!'); doc.render(); } catch (error) { var e = { message: error.message, name: error.name, stack: error.stack, properties: error.properties, } console.log(JSON.stringify({error: e})); // The error thrown here contains additional information when logged with JSON.stringify (it contains a property object). throw error; } var buf = doc.getZip() .generate({type: 'nodebuffer'}); //logging.logAppend("Jegyzőkönyv módosítva.",req.user,kofmb.id,KifCert.db.name,'CERTEDIT'); fs.writeFileSync(__dirname+'/../docs/kabelcert.docx', buf); //req.flash('success','Berendezés sikeresen hozzáadva'); res.download(path.normalize(__dirname+'/../docs/kabelcert.docx'),'KÖF_Kabel_szigetelesvizsgalat.docx'); })