klnodekb/routes/warehouse.js

408 lines
12 KiB
JavaScript

const express = require('express');
const router = express.Router();
// User Model
let User = require('../models/user');
var utils = require('../js/utils');
const path = require('path');
var formidable = require('formidable');
let busboy = require('connect-busboy');
let Item = require('../models/item');
let Client = require('../models/client');
let Warehouse = require('../models/warehouse');
var csv = require("fast-csv");
const checkUserAdmin3 = require('../js/helperFuncs');
var fs = require('fs');
// Get Single Work
router.get('/barcode:id',utils.ensureAuthenticated,function(req,res){
console.log(req.params.id);
/*
var man=new Manufacturer();
man.name='ABB Mérnöki, Kereskedelmi és Szolgáltató Kft.';
man.shortName='ABB';
man.author='Kutafaja';
man.body='1134 Budapest, Kassák Lajos u, 19-25. Tel.: +(36-1)443-2100 Fax: +(36-1)443-2211 Levélcím: 1558 Budapest, 139., Pf. 129';
man.manufacturerDiscount=60;
man.save(function(err){
if(err){
console.log(err);
return;
}else{
res.send('Barcode: '+req.params.id);
}
});
*/
/*var item=new Item();
item.title='RVT2-12 Automatika, REG F5/6 V100/440';
item.author='Kutafaja';
item.body='nincs';
item.itemNumber='2GCA291721A0050';
item.typeCode='2GCA291721A0050';
item.netListPrice=368250;
item.discount=0;
item.manufacturer='5af83985d896d920042c19ac';
item.save(function(err){
if(err){
console.log(err);
return;
}
});*/
res.send('Barcode: '+req.params.id);
/* Work.findById(req.params.id,function(err,work) // Munka keresése sz ID-je alapján
{
currentWorkNumber=work.workNumber;
console.log(work.devicesArray);
Article.find({
'_id': { $in: work.devicesArray
//mongoose.Types.ObjectId("5a5a0dd6a0bc231270e9fe91"),
//mongoose.Types.ObjectId('4ed3f117a844e0471100000d'),
//mongoose.Types.ObjectId('4ed3f18132f50c491100000e')
}
}, function(err, docs)
{
User.findById(work.author, function(err,user){
if (err)
{
res.render('work',
{
work: work,
articles: docs,
author: 'Ismeretlen'
});
}else {
//console.log(docs);
res.render('work',
{
work: work,
articles: docs,
author: user.name
});
}
});
}
);
});*/
});
// Find Tools on keypress
router.post('/find', utils.ensureAuthenticated,function (req,res) {
let man=new Item();
var findman=Item.findOne( {'name' : req.body.content});
var q = Item.find({'itemNumber': new RegExp(req.body.content, 'i')}).limit(20);
var response = {
status : 200,
data : 'null'
}
/* tool.productCode=req.body.itemCode;
tool.title=req.body.itemTitle;
tool.barCode=req.body.itemBarCode;
tool.quantity=req.body.itemQty;
*/
if (req.body.findBy==='Name')
//findTool.exec(function(err,t){
//Item.find({'itemNumber' : new RegExp(req.body.content, 'i')},function(err,t){
q.exec(function(err,t){
if (err)
{
console.log(err);
return;
}
if (t)
{
t.forEach(function(tetel){
//console.log('Tools find:' +tetel.name);
})
response = {
status : 200,
data : t
}
}
else
{
response = {
status : 200,
data : null
}
console.log('Tools find: null');
}
res.send(response);
});
});
router.get('/uploadnew', utils.ensureAuthenticated,function(req,res){
Client.find({}, function(err,manuf)
{
var admin=false;
if (err)
{
console.log(err);
res.send('Hiba történt az oldal betöltése során. ');
}
else
{
if(req.user)
{
checkUserAdmin3(req,function(err,res){
admin=res;
});
}
manuf.forEach(element => {
console.log('Gyártó: '+element.name);
});
res.render('uploadWarehouse', {
title: 'Gyártói árlista feltöltés',
manufacturers: manuf,
rot:admin,
//wid:req.params.wid
//artice: workSign
});
}
});
});
router.post('/uploadnew/:id', function (req, res){
var form = new formidable.IncomingForm();
form.parse(req);
/* form.on('fileBegin', function (name, file){
file.path = __dirname + '/uploads/' + file.name;
});*/
form.on('file', function (name, file)
{
console.log('Uploaded ' +file.path);
var stream = fs.createReadStream(file.path);
Client.findById(req.params.id, function(err,manuf)
{
if (err)
{
console.log(err);
res.send('Hiba történt az oldal betöltése során. ');
}
else
{
var items=[];
console.log('Kiválasztott gyártó: '+manuf.shortName);
console.log('Kiválasztott fájl: '+file.name);
csv
.fromStream(stream, {delimiter:';',headers : ["itemTypeCode","itemNumber","title","netListPrice","author","body","manufacturer","discount"]})
.on("data", function(data){
var item= new Item();
item.title=data.title;
item.author=req.user.id;
item.body="none";
item.manufacturer=manuf.id;
item.itemNumber=data.itemNumber;
item.itemTypeCode=data.itemTypeCode;
item.netListPrice=data.netListPrice;
item.discount=req.body.manufacturerDiscount;
items.push(item);
// console.log(data);
})
.on("end", function(){
console.log("Start import...");
console.log("Remove old entries of "+manuf.name);
Item.deleteMany({'manufacturer':manuf._id},function(err, result){
if (err)
{
req.flash('error','Hiba a feltöltés során');
console.log("Removing error!");
res.redirect('/warehouse/uploadnew');
}
else
{
console.log("Removing Ok.");
console.log("Start importing...");
console.log("Sikeres import!");
req.flash('success','Árlista sikeresen hozzáadva');
res.redirect('/warehouse/uploadnew');
Item.insertMany(items,function(err){
if(err){
console.log(err);
return;
}/*else
{
console.log("Sikeres import!");
req.flash('success','Árlista sikeresen hozzáadva');
res.redirect('/warehouse/uploadnew');
}*/
});
console.log("done");
}
});
});
}
});
});
/* csv
.fromStream(stream, {delimiter:';',headers : ["itemTypeCode","itemNumber","title","netListPrice","author","body","manufacturer","discount"]})
.on("data", function(data){
console.log(data);
})
.on("end", function(){
console.log("done");
});*/
/* var fs = require('fs');
fs.readFile(file.path, 'utf8', function(err, contents) {
//console.log(contents);
var item=new Item();
item.title='RVT2-12 Automatika, REG F5/6 V100/440';
item.author='Kutafaja';
item.body='nincs';
item.itemNumber='2GCA291721A0050';
item.typeCode='2GCA291721A0050';
item.netListPrice=368250;
item.discount=0;
item.manufacturer='5af83985d896d920042c19ac';
item.save(function(err){
if(err){
console.log(err);
return;
}
});
});*/
// });
//res.redirect('/warehouse/uploadnew');
});
/*
router.post('/uploadnew', function(req, res) {
var form = new formidable.IncomingForm();
//var fs = require('fs');
// request.files is an object where fieldname is the key and value is the array of files
form.parse(req, function(err, fields, files) {
// `file` is the name of the <input> field of type `file`
var old_path = files.file.path,
file_size = files.file.size,
file_ext = files.file.name.split('.').pop(),
index = old_path.lastIndexOf('/') + 1,
file_name = old_path.substr(index),
new_path = path.join(process.env.PWD, '/uploads/', file_name + '.' + file_ext);
fs.readFile(old_path, function(err, data) {
fs.writeFile(new_path, data, function(err) {
fs.unlink(old_path, function(err) {
if (err) {
res.status(500);
res.json({'success': false});
} else {
res.status(200);
res.json({'success': true});
}
});
});
});
});
//Generating thumbnails
});*/
// Új raktár létrehozás
router.get('/newwarehouse', utils.ensureAuthenticated,function(req,res){
Warehouse.find({}, function(err,warehouses)
{
var admin=false;
if (err)
{
console.log(err);
res.send('Hiba történt az oldal betöltése során. ');
}
else
{
if(req.user)
{
checkUserAdmin3(req,function(err,res){
admin=res;
});
}
res.render('newwarehouse', {
title: 'Új raktár létrehozás',
warehouses: warehouses,
rot: admin
});
}
});
});
router.post('/newwarehouse', function (req, res){
Warehouse.findOne({name: req.body.warehouseName},function(err,warehouse){
if (err)
{
req.flash('error','Raktár létrehozása sikertelen!');
res.redirect('/warehouse/newwarehouse');
}
else
{
if(!warehouse)
{
var wh=new Warehouse();
wh.name=req.body.warehouseName;
wh.save(function(err){
if(err){
console.log(err);
return;
}else{
req.flash('success','Raktár sikeresen létrehozva');
res.redirect('/warehouse/newwarehouse');
}
});
}
else
{
req.flash('error','Már van ilyen nevű raktár!');
res.redirect('/warehouse/newwarehouse');
}
}
})
});
module.exports = router;