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