klnodekb/js/kabelCertApi.js

154 lines
4.8 KiB
JavaScript

let KabelCert = require('../models/kabelcert');
const asyncHandler = require('express-async-handler');
const moment = require('moment');
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": "674ec583ac87012afa6d5897" }
},
{
$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');
})