const express = require('express'); const router = express.Router(); let Article = require('../models/article'); let Work=require('../models/works'); let itemGroup=require('../models/itemgroup'); // User Model let User = require('../models/user'); var utils = require('../js/utils'); let ComponentBase= require('../models/componentbase'); var logging=require('../js/helpers'); let Client = require('../models/client'); var formidable = require('formidable'); var csv = require("fast-csv"); var fs = require('fs'); // GetClients Midleware // Beteszi a req.clients térbe a klienslistát function getClients(req, res, next) { // Process the data received in req.body // instead of res.redirect('/'); Client.find({} ,function(err, clients){ if (err) { console.log(err); } else { req.clients = clients; return next(); } }); } // Cikkcsoport lekérés middleware function getItemGroups(req, res, next) { // Process the data received in req.body // instead of res.redirect('/'); itemGroup.find({} ,function(err, igroups){ if (err) { console.log(err); } else { req.itemGroups = igroups; return next(); } }); } var tsep5 = function (num) { var i=0; var num_parts = num.toString().split("."); num_parts[0] = num_parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, " "); return num_parts.join("."); }; // Ajax keresés // Add ItemGroups AJAX router.post('/addItemGroup', 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' } var itemGrp=new itemGroup(); itemGrp.name=req.body.content; itemGroup.find({'name': { $regex: "^"+req.body.content+"$", $options: '-i' }},function(err, components){ if (err) { console.log('DB ERR find item group.'); response = { status : 200, data : null } res.send(response); } else { if (components.length>0) { console.log('Már van ilyen cikkcsoport!'); response = { status : 200, data : null } res.send(response); } else { console.log('content: '+itemGrp.name); itemGrp.save(function(err){ if(err){ console.log(err); response = { status : 200, data : null } res.send(response); }else{ console.log('Cikk csoport sikeresen hozzáadva'); response = { status : 200, data : {'id':itemGrp._id,'name':itemGrp.name} } res.send(response); } }); } } }) }); // 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' } ComponentBase.find({$or: [{'ean1': new RegExp(req.body.content, 'i')},{'itemNumber': new RegExp(req.body.content, 'i')},{'parameters': new RegExp(req.body.content, 'i')},{'name': new RegExp(req.body.content, 'i')}]}).limit(200).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); }); }); // Cikk keresése // Find ItemsBy Number on keypress router.post('/findByEan', utils.ensureAuthenticated,function (req,res) { //console.log(req.body.content); var fb=req.body.findBy; console.log(fb+req.body.content); if (fb==='ean1') { var q = ComponentBase.findOne({'ean1' : req.body.content});//.limit(20); } if (fb==='itemNumber') var q = ComponentBase.findOne({'itemNumber': req.body.content});//.limit(20); q.exec(function(err,t){ if (err) { console.log(err); return; } if (t) { response = { status : 200, result : 'OK', data : t } } else { response = { status : 200, result : 'Not Found', data : null } //console.log('Tools find: null'); } res.send(response); }); }); router.get('/uploadnew', utils.ensureAuthenticated,function(req,res){ res.render('components_base_upload', { title: 'Árlista feltöltés', rot: req.user.isAdmin, }); }); router.post('/uploadnew', function (req, res){ var form = new formidable.IncomingForm(); form.parse(req); form.on('file', function (name, file) { console.log('Uploaded ' +file.path); var stream = fs.createReadStream(file.path); var items=[]; console.log('Kiválasztott fájl: '+file.name); csv .fromStream(stream, {delimiter:';',headers : ["parameters","itemNumber","name","ean","price"]}) .on("data", function(data){ var item= new ComponentBase(); item.manufacturer='ABB'; item.itemNumber=data.itemNumber; item.name=data.name; item.ean1=data.ean; item.price=data.price; item.parameters=data.parameters; item.itemUnit='db'; item.itemGroup='KIF'; item.valuta='HUF'; item.stock=0; item.minimumStock=10; item.supplierId='5c3e1a59bef5ae0a203482e6'; items.push(item); // console.log(data); }) .on("end", function(){ console.log("Start import..."); console.log("Remove old entries of "); ComponentBase.deleteMany({},function(err, result){ if (err) { req.flash('error','Hiba a feltöltés során'); console.log("Removing error!"); res.redirect('/components_base/uploadnew'); } else { console.log("Removing Ok."); console.log("Start importing..."); console.log("Sikeres import!"); req.flash('success','Árlista sikeresen hozzáadva'); var response = { status : 200, data : null } res.send(response); //res.redirect('/components_base/uploadnew'); ComponentBase.insertMany(items,function(err){ if(err){ console.log(err); return; } }); console.log("done"); } }); }); }); }); // Komponens lista router.get('/list', utils.ensureAuthenticated,function(req, res) { //ComponentBase.find({}).populate('deviceID').populate('workID').exec(function(err, components){ ComponentBase.find({}).limit(200).exec(function(err, components){ if (err) { console.log(err); } else { res.render('components_base_list', { //res.render('table', { title: 'Komponens lista', tsep5:tsep5, componentsList:components }); } }); }); // Komponens lista router.get('/data-source', utils.ensureAuthenticated,function(req, res) { ComponentBase.find({},function(err, components){ if (err) { console.log(err); } else { var response = { status : 200, data : components } //res.render('components_base_list', { res.send(response); } }); }); // Komponens hozzáadása az adatbázishoz router.get('/new', utils.ensureAuthenticated,getClients,getItemGroups, function (req,res) { res.render('compbase_add', { title: 'Új komponens felvétele az adatbázisba', igroups: req.itemGroups, clients: req.clients, deviceID: req.params.aid, workID: req.params.wid, rot: req.user.isAdmin, }); }); // Komponens hozzáadása az adatbázishoz router.post('/new',utils.ensureAuthenticated,getClients,getItemGroups, function(req,res){ req.checkBody('compName','Komponens megnevezése kötelező!').notEmpty(); req.checkBody('compParams','Paraméterek megadása kötelező!').notEmpty(); req.checkBody('ean1','EAN kód kötelező!').notEmpty(); req.checkBody('supplierId','Beszállító nem lehet üres!').notEmpty(); req.checkBody('itemGroupName','Cikkcsoport nem lehet üres!').notEmpty(); // Get errors let errors = req.validationErrors(); if(errors) { var component={name:'',parameters:''}; res.render('compbase_add', { title: 'Komponensek felvétele', errors:errors, igroups: req.itemGroups, clients: req.clients, rot: req.user.isAdmin, user: req.user, comp: component, }); } else { ComponentBase.findOne({itemNumber: req.body.itemNumber,supplierId: req.body.supplierId},function(err,component) { //console.log(certs); if (err) { console.log(err); return; } if (component) { req.flash('error','Ez a cikkszám már szerepel az '+req.body.supplier+' beszállító adatbázisban!');// Katt a megtekintéshez.'); console.log('Már létező componentID: '+component._id); res.render('compbase_add', { title: 'Komponensek felvétele', errors:errors, igroups: req.itemGroups, rot: req.user.isAdmin, user: req.user, clients: req.clients, // comp: component, }); } else { let component=new ComponentBase(); component.manufacturer=req.body.manufacturer; component.name=req.body.compName; component.parameters=req.body.compParams; component.itemUnit=req.body.itemUnit; component.itemNumber=req.body.itemNumber; component.itemGroup=req.body.itemGroupName; component.ean1=req.body.ean1.replace('ö','0'); component.valuta=req.body.valuta; component.price=req.body.itemPrice; component.stock=0; component.options='OWN'; component.minimumStock=req.body.minStock; component.supplierId=req.body.supplierId; component.save(function(err){ if(err){ console.log(err); return; }else{ if (req.body.action==='save') { req.flash('success','Komponenes sikeresen hozzáadva.'); res.redirect('/'); } if (req.body.action==='saveAndNew') { req.flash('success','Komponenes sikeresen hozzáadva.'); res.redirect('/components_base/new'); } } }); } }); } }); module.exports = router;