//console.log('Hello world!'); const express=require('express'); const path= require('path'); const mongoose=require('mongoose'); const bodyParser=require('body-parser'); const numeral = require('numeral'); const expressValidator = require('express-validator'); const flash = require('connect-flash'); const session = require('express-session'); const passport = require('passport'); const config = require('./config/database'); var fse = require('fs-extra'); var utils = require('./js/utils'); var logging=require('./js/helpers'); //const util = require('util'); //var currentWorkNumber=0; global.currentWorkNumber=0; mongoose.Promise = global.Promise; mongoose.connect('mongodb://nodeUser:Kutafaja1234@localhost/nodekb',{ useMongoClient: true }); //mongoose.connect('mongodb://admin:MarkoSn1Pb1@iotechnic.eu:27017/nodekb',{ useMongoClient: true }); let db = mongoose.connection; //autoIncrement.initialize(mongoose.connection); //TEST // set globals // Check for DB errors db.on('error', function(err) { console.log(err); }); // Check connection db.once('openUri', function(){ console.log('Connected to MongoDB') }); // Init app const app = express(); // Bring in models let Article = require('./models/article') let Work=require('./models/works') let User = require('./models/user'); let KifCert = require('./models/kifcerts'); let Log = require('./models/logmodel'); //let Tool = require('./models/tool') var wCounter=0; var findWorkQuery = Work.find({'workNumber': /EMSZ/ }).sort({workCounter : -1}).limit(1); var utils = require('./js/utils'); function ensureExists(path, mask, cb) { if (typeof mask == 'function') { // allow the `mask` parameter to be optional cb = mask; mask = 0777; } fs.mkdir(path, mask, function(err) { if (err) { if (err.code == 'EEXIST') cb(null); // ignore the error if the folder already exists else cb(err); // something else went wrong } else cb(null); // successfully created folder }); } // Új berendezés sorszám generálása function getNextWorkId(callback) { // Find last id var cnt=0; findWorkQuery.exec(function(err, maxResult){ if (err) { return callback(err); } if (maxResult[0]===undefined) { console.log('workCounter undefined...'); cnt=0; } else { if (maxResult[0].workCounter==undefined) { cnt=1; } else { cnt=maxResult[0].workCounter; } console.log(maxResult[0].workCounter); } cnt++; console.log('Új WorkID: ' + cnt.toString()); callback(null, cnt); }); } // Load view engine app.set('views',path.join(__dirname,'views')); app.set('view engine','pug'); // Body parser MW // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })) // parse application/json app.use(bodyParser.json()) // Set Public folder app.use(express.static(path.join(__dirname, 'public'))); app.use(express.static(path.join(__dirname, 'media'))); app.use(express.static(path.join(__dirname, 'docs'))); app.use(flash()); // Express session middlevare app.use(session({ secret: 'keyboard cat', resave: true, saveUninitialized: true })) // Express messages middleware app.use(require('connect-flash')()); app.use(function (req, res, next) { res.locals.messages = require('express-messages')(req, res); next(); }); app.use(expressValidator({ errorformatter: function(param, msg, value){ var namescape = param.split('.') , root = namespace.shift() , formParam = root; while(namespace.length){ formParam += '[' + namespace.shift() + ']'; } return { param : formParam, msg: msg, value: value }; } })); // Passport Config require('./config/passport')(passport); // Passport Middleware app.use(passport.initialize()); app.use(passport.session()); app.get('*', function(req, res, next){ res.locals.user = req.user || null; next(); }); // Admin check function checkUserAdmin2(req,callback) { // Find last id if(req.user) { //console.log(req.user); if(req.user.username==='admisJacica' & req.user.auth==='ADMIN') { callback(null, true); } else { callback(null, false); } } } // Works Route app.get('/', utils.ensureAuthenticated, function(req, res) { var admin=false; if(req.user) { checkUserAdmin2(req,function(err,res){ admin=res; console.log(admin); }); // if(req.user.username==='admisJacica') ad=true; } Work.find({},null,{sort: {workDate: -1}} ,function(err, works){ if (err) { console.log(err); } else { // lastId=articles.workNumber; res.render('index', { title: 'Munkák', works: works, rot:admin // articles: workSign }); } }); }); // Works Route app.get('/work/layout_table',utils.ensureAuthenticated, function(req, res) { res.render('layout_table', { title: 'Munkák' // articles: workSign }); }); // Edit Work Route app.get('/work/edit/:id', utils.ensureAuthenticated,function (req,res) { Work.findById(req.params.id,function(err,work){ if(err) { console.log(err); } else { var wnE=work.workNumber.substring(0,4); var wnY=work.workNumber.substring(5,9); var wnN=work.workNumber.substring(10,14); res.render('edit_work', { title: work.title+' módosítása:', work: work, wCustom: wnE, wYear: wnY, wNumber: wnN }); } }); }); // Update Work data app.post('/work/edit/:id', utils.ensureAuthenticated,function(req,res){ let work = {}; let query = {_id:req.params.id} work.title = req.body.title; work.author = req.user._id; work.body = req.body.body; Work.update(query, work, function(err){ if(err){ console.log(err); return; }else{ console.log(Work.db.name); logging.logAppend("Munka módosítása.",req.user,work.id,Work.db.name,'WORKEDIT'); req.flash('success',work.title+' adatai sikeresen szerkesztve'); res.redirect('/work/'+req.params.id); } }); //} }); // Add Work Route app.get('/work/add', utils.ensureAuthenticated,function (req,res) { var dt = new Date(); var devId; var wnY=dt.getFullYear(); var workDate= dt.toISOString().replace(/T/, ' ').replace(/\..+/, ''); // Find last id console.log('Keres'); var admin=false; if(req.user) { checkUserAdmin2(req,function(err,res){ admin=res; console.log(admin); }); } getNextWorkId(function(err,wid){ if(err) { console.log('Hiba: getNextDevId'); } else { //console.log('Kész W' +wid); devId=numeral(wid).format('0000'); wCounter=wid; res.render('add_work', { title: 'Munka Felvétele', workN: devId, workDate: workDate, dateYear: wnY, rot:admin }); } }); }); // Add Work Submit POST Route app.post('/works/add', utils.ensureAuthenticated,function(req,res){ req.checkBody('title','Munka megnevezése kötelező!').notEmpty(); req.checkBody('workNumber','Munkaszám formátuma nem megfelelő: pl.: 0001').matches('^[0-9][0-9][0-9][0-9]$');//.notEmpty(); // req.checkBody('author','Létrehozó nevének megadása kötelező!').notEmpty(); // req.check('workNumber','Munkaszám fotrmátumnak meg kell felllnie: ÉÉÉÉ/####').matches('^\d{3}$'); //req.checkBody('workSign','Berendezés jel megadása kötelező!').notEmpty(); var dt = new Date(); var wnY=dt.getFullYear(); // Get errors let errors = req.validationErrors(); if(errors) { var admin=false; if(req.user) { checkUserAdmin2(req,function(err,res){ admin=res; console.log(admin); }); } //var devId =numeral(wid).format('0000'); var workDate= dt.toISOString().replace(/T/, ' ').replace(/\..+/, ''); res.render('add_work', { title: 'Munka Felvétele', errors:errors, //workN: workN, workDate: workDate, dateYear: wnY, rot:admin }) } else { let work=new Work(); work.title = req.body.title; work.author = req.user._id; work.body = req.body.body; if (req.body.workNumberE==="EMSZ") { work.workNumber = "EMSZ-"+req.body.workNumberY+"/"+ req.body.workNumber; work.workCounter=wCounter; } else { work.workNumber = req.body.workNumberY+"/"+ req.body.workNumber; work.workCounter=0; } console.log(work.workNumber); work.workDate= req.body.workDate; //db.users.findOne({"username" : {$regex : ".*son.*"}}); Work.findOne({'workNumber': work.workNumber}, function(err,wn) // Megnézzük van e már { if (err){ console.log(err); } else { if (wn) { console.log("Már van ilyen munka"); req.flash('danger','A '+work.workNumber+' munkaszám már foglalt!'); res.redirect('/work/add'); } else { work.save(function(err){ if(err){ console.log(err); return; }else{ // Munka könyvtár létrehozása logging.logAppend("Munka hozzáadása.",req.user,work.id,Work.db.name,'WORKADD'); fse.mkdirs('/filedata/'+work._id, function(err){ if (err) return console.error(err); console.log("Könyvtár létrehozva! ->"+"/filedata/"+work._id); }); req.flash('success','Munka sikeresen felvéve.'); res.redirect('/'); } }); } } }); } }); // Get Single Work app.get('/work/:id',utils.ensureAuthenticated,function(req,res){ 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 }); } }); } ); }); }); //Devices Route app.get('/devices', utils.ensureAuthenticated,function(req, res) { Article.find({}, function(err, articles){ if (err) { console.log(err); } else { // lastId=articles.workNumber; res.render('devicesView', { title: 'Berendezés gyártási számok', articles: articles // articles: workSign }); } }); }); // Route Files let articles = require('./routes/articles'); let users = require('./routes/users'); //let tools = require('./routes/tools'); let certificates_kif = require('./routes/certificates_kif'); let certificates_tr = require('./routes/certificates_tr'); let certificates_mc = require('./routes/certificates_mc'); app.use('/articles', articles); app.use('/users', users); //app.use('/tools', tools); app.use('/certificates_kif',certificates_kif); app.use('/certificates_tr',certificates_tr); app.use('/certificates_mc',certificates_mc); /* app.delete('/devices/:id',utils.ensureAuthenticated,function(req,res){ let query = { _id:req.params.id} console.log('Miafasz?'); Article.remove(query, function(err){ if(err) { console.log(err); } res.send('Success'); }) }); */ app.listen(80,function functionName() { console.log('Server elindult a 80-es porton.'); }); //3. lecke 9:58