443 lines
15 KiB
JavaScript
443 lines
15 KiB
JavaScript
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!');// <a href="/articles/'+component.deviceID+'/'+component.workID+'"> Katt a megtekintéshez</a>.');
|
|
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!');// <a href="/articles/'+component.deviceID+'/'+component.workID+'"> Katt a megtekintéshez</a>.');
|
|
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!');// <a href="/articles/'+component.deviceID+'/'+component.workID+'"> Katt a megtekintéshez</a>.');
|
|
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!');// <a href="/articles/'+component.deviceID+'/'+component.workID+'"> Katt a megtekintéshez</a>.');
|
|
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;
|