klnodekb/routes/components.js

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;