const express = require('express'); const router = express.Router(); let Article = require('../models/article'); let Work=require('../models/works'); // User Model let User = require('../models/user'); var utils = require('../js/utils'); let Component= require('../models/component'); var logging=require('../js/helpers'); // Komponens szerkesztése router.get('/edit/:aid/:wid/:cid', utils.ensureAuthenticated,function (req,res) { Component.findById(req.params.cid, function(err,component){ if(err) { req.flash('error','Nem található komponens!');// Katt a megtekintéshez.'); console.log('Nem található komponens! componentID:'+req.params.cid); res.render('components_edit', { title: 'Komponens szerkesztése', deviceID: req.params.aid, workID: req.params.wid, component: component }); } else { res.render('components_edit', { title: 'Komponens szerkesztése', deviceID: req.params.aid, workID: req.params.wid, component: component }); } }); }); // Komponens módosítása POST router.post('/edit/:aid/:wid/:cid',utils.ensureAuthenticated, function(req,res){ req.checkBody('compName','Komponens megnevezése kötelező!').notEmpty(); req.checkBody('compParams','Paraméterek megadása kötelező!').notEmpty(); req.checkBody('compSerial','Sorozatszám vagy gyártási szám kötelező!').notEmpty(); // Get errors let errors = req.validationErrors(); if(errors) { res.render('components_edit', { title: 'Komponens szerkesztése', errors:errors, deviceID: req.params.aid, workID: req.params.wid, component: component }); } else { let comp={}; let query = {_id:req.params.cid} comp.name=req.body.compName; comp.parameters=req.body.compParams; comp.serial=req.body.compSerial; Component.update(query,comp,function(err){ if(err){ req.flash('error','Nem található komponens!');// Katt a megtekintéshez.'); console.log('Nem található komponens! componentID:'+req.params.cid); res.render('components_edit', { title: 'Komponens szerkesztése', deviceID: req.params.aid, workID: req.params.wid, component: component }); }else{ req.flash('success','Komponens adatok sikeresen módosítva'); res.redirect('/components/list/'+req.params.aid+'/'+req.params.wid); } }); } }); // Komponens hozzáadása router.get('/new/:aid/:wid', utils.ensureAuthenticated,function (req,res) { Article.findById(req.params.aid,function(err,article){ if (err){ req.flash('error','Nem található berendezés!');// Katt a megtekintéshez.'); console.log('Nem található berendezés! ArticleID:'+req.params.aid); res.render('components_add', { title: 'Komponens felvétele', article: article, deviceID: req.params.aid, workID: req.params.wid }); }else { res.render('components_add', { title: 'Komponens felvétele ', article: article, deviceID: req.params.aid, workID: req.params.wid }); } }) }); // Komponens hozzáadása munkához // Add To Work Submit POST Route router.post('/new/:aid/:wid',utils.ensureAuthenticated, function(req,res){ req.checkBody('itemName','Komponens megnevezése kötelező!').notEmpty(); req.checkBody('itemParams','Paraméterek megadása kötelező!').notEmpty(); //req.checkBody('itemSerial','Sorozatszám vagy gyártási szám kötelező!').notEmpty(); // Get errors let errors = req.validationErrors(); if(errors) { res.render('components_add', { title: 'Komponensek felvétele', user: req.user, errors:errors, deviceID: req.params.aid, workID: req.params.wid, }); } else { Component.findOne({serial: req.body.itemSerial},function(err,component) { //console.log(certs); if (err) { console.log(err); return; } if (component && component.serial!=='') { req.flash('error','Ezen a gyáriszámon már létezik komponens!');// Katt a megtekintéshez.'); console.log('Már létező componentID:'+component._id); res.render('components_add', { title: 'Komponensek felvétele', errors:errors, user: req.user, deviceID: req.params.aid, workID: req.params.wid, }); } else { let component=new Component(); component.deviceID=req.params.aid; component.workID=req.params.wid; component.name=req.body.itemName; component.itemNumber=req.body.itemNumber; component.ean1=req.body.ean; component.parameters=req.body.itemParams; component.serial=req.body.itemSerial; component.save(function(err){ if(err){ console.log(err); return; }else{ Article.update( {"_id": req.params.aid},{"$push": {"componentsArray": component._id}}, function(err){ if(err){ console.log(err); return; }else{ //logging.logAppend("Berendezés módosítva.",req.user,article.id,Article.db.name,'ARTICLEEDIT'); //req.flash('success','Komponenes sikeresen hozzáadva'); //res.redirect('/components/list/'+req.params.aid+'/'+req.params.wid+'/'+component._id); if (req.body.action==='save') { req.flash('success','Komponenes sikeresen hozzáadva.'); res.redirect('/components/list/'+req.params.aid+'/'+req.params.wid+'/'+component._id); } if (req.body.action==='saveAndNew') { req.flash('success','Komponenes sikeresen hozzáadva.'); res.redirect('/components/new/'+req.params.aid+'/'+req.params.wid); } } }); } }); } }); } }); router.get('/export/:aid/:wid/', utils.ensureAuthenticated,function (req,res,next) { const XlsxPopulate = require('xlsx-populate'); var ObjectId = require('mongoose').Types.ObjectId; // Load a new blank workbook var dt = new Date(); var bornDate= dt.toISOString().replace(/T/, ' ').replace(/\..+/, ''); Article.findById(req.params.aid,function(err,article){ if (err) { console.log(err); return; } Component.aggregate([{$match:{'deviceID': new ObjectId(req.params.aid)}},{'$group':{_id:'$itemNumber',ean1:{$first:'$ean1'}, parameters: {$first:'$parameters'},name: {$first:'$name'},count:{$sum:1}}}],function(err,result){ if (err) { console.log("AGGregation error!"); return; } //console.log(result); XlsxPopulate.fromBlankAsync() .then(workbook => { // Modify the workbook. workbook.sheet("Sheet1").cell("A1").value("Cikkszám"); workbook.sheet("Sheet1").cell("B1").value("EAN"); workbook.sheet("Sheet1").cell("C1").value("Típus"); workbook.sheet("Sheet1").cell("D1").value("Megnevezés"); workbook.sheet("Sheet1").cell("E1").value("Mennyiség"); result.forEach(function(element,i){ workbook.sheet("Sheet1").row(i+2).cell(1).value(element._id); workbook.sheet("Sheet1").row(i+2).cell(2).value(element.ean1); workbook.sheet("Sheet1").row(i+2).cell(3).value(element.parameters); workbook.sheet("Sheet1").row(i+2).cell(4).value(element.name); workbook.sheet("Sheet1").row(i+2).cell(5).value(element.count); }) workbook.sheet("Sheet1").column("A").width(27); workbook.sheet("Sheet1").column("B").width(27); workbook.sheet("Sheet1").column("C").width(27); workbook.sheet("Sheet1").column("D").width(150); workbook.sheet("Sheet1").column("E").width(14); workbook.sheet("Sheet1").name(article.title); // Write to file. return workbook.outputAsync();//toFileAsync("./out.xlsx"); }) .then(data => { // Set the output file name. res.attachment(article.title+'_'+bornDate+".xlsx"); // Send the workbook. res.send(data); }) .catch(next); }); }); }) /* var dt = new Date(); var bornDate= dt.toISOString().replace(/T/, ' ').replace(/\..+/, ''); Article.findById(req.params.aid,function(err,article){ if (err) { console.log(err); return; } Component.find({ '_id': { $in: article.componentsArray} }, function(err, docs){ if (err) { console.log(err); return; } //console.log(docs); XlsxPopulate.fromBlankAsync() .then(workbook => { // Modify the workbook. workbook.sheet("Sheet1").cell("A1").value("Cikkszám"); workbook.sheet("Sheet1").cell("B1").value("EAN"); workbook.sheet("Sheet1").cell("C1").value("Típus"); workbook.sheet("Sheet1").cell("D1").value("Megnevezés"); docs.forEach(function(element,i){ workbook.sheet("Sheet1").row(i+2).cell(1).value(element.itemNumber); workbook.sheet("Sheet1").row(i+2).cell(2).value(element.ean1); workbook.sheet("Sheet1").row(i+2).cell(3).value(element.parameters); workbook.sheet("Sheet1").row(i+2).cell(4).value(element.name); }) workbook.sheet("Sheet1").column("A").width(27); workbook.sheet("Sheet1").column("B").width(27); workbook.sheet("Sheet1").column("C").width(27); workbook.sheet("Sheet1").column("D").width(150); workbook.sheet("Sheet1").name(article.title); // Write to file. return workbook.outputAsync();//toFileAsync("./out.xlsx"); }) .then(data => { // Set the output file name. res.attachment(article.title+'_'+bornDate+".xlsx"); // Send the workbook. res.send(data); }) .catch(next); }); }) });*/ // Bizonylatok lekérdezése KOFCERT TR router.get('/list/:aid/:wid/:cid', utils.ensureAuthenticated,function (req,res) { Article.findById(req.params.aid,function(err,article){ if (err) { console.log(err); return; } Component.find({ '_id': { $in: article.componentsArray} //mongoose.Types.ObjectId("5a5a0dd6a0bc231270e9fe91"), //mongoose.Types.ObjectId('4ed3f117a844e0471100000d'), //mongoose.Types.ObjectId('4ed3f18132f50c491100000e') }, function(err, docs){ if (err) { console.log(err); return; } //console.log(docs); res.render('components_list', { title: 'Hozzáadott komponensek ' +article.title, deviceID: req.params.aid, workID: req.params.wid, article: article, user: req.user, components: docs, selectedcid: req.params.cid }); }); }) }); // Komponens törlése // Delete Article router.delete('/delete/:wid/:aid/:cid', function(req, res){ var ObjectId = require('mongoose').Types.ObjectId; let query = {_id:req.params.cid} Article.findByIdAndUpdate(req.params.aid, { $pull:{"componentsArray": new ObjectId(req.params.cid)}}, function (err, docs){ // Megkeressük melyik berendezésbe vettük fel if (err) { console.log(err); }else { logging.logAppend("Komponens törölve.",req.user,req.params.cid,Article.db.name,'COMPONENTREMOVE'); Component.remove(query, function(err){ // Töröljük a berendezést is if(err){ console.log(err); } res.send('Success'); }); } }); }); // Find Components on keypress AJAX router.post('/find', utils.ensureAuthenticated,function (req,res) { // let man=new Item(); // var findman=Item.findOne( {'name' : req.body.content}); // var q = Client.find({'name': new RegExp(req.body.content, 'i')}).limit(20); var response = { status : 200, data : 'null' } Component.find({'serial': new RegExp(req.body.content, 'i')}).limit(20).populate('deviceID').populate('workID').exec(function(err, components){ if (err) { console.log(err); return; } if(components) { response = { status : 200, data : components } } else { response = { status : 200, data : null } console.log('Tools find: null'); } res.send(response); }); }); //Komponens lista router.get('/listcomponents', utils.ensureAuthenticated,function(req, res) { Component.find({}).populate('deviceID').populate('workID').exec(function(err, components){ if (err) { console.log(err); } else { res.render('componentsView', { title: 'Komponens lista', componentsList:components }); } }); }); module.exports = router;