From 1b4a6f1e5be6b6b25acde47fae2b304465178ddf Mon Sep 17 00:00:00 2001 From: bucsybeni <bucsy.beni@gmail.com> Date: Tue, 21 Apr 2020 23:04:32 +0200 Subject: [PATCH] hf5 started --- config/db.js | 2 +- config/globalConfig.js | 10 ++++ date.js | 8 +++ middleware/bunker/getBunker.js | 44 +++++++++++++--- middleware/bunker/getBunkerList.js | 82 ++++++++++++++++-------------- middleware/common/auth.js | 4 +- middleware/common/inverseAuth.js | 4 +- middleware/common/requireOption.js | 14 +++++ models/bunker.js | 1 + mongo.js | 59 +++++++++++++++++++++ package-lock.json | 5 ++ package.json | 1 + routes/bunker.js | 6 +-- routes/common.js | 6 +-- routes/foods.js | 6 +-- routes/index.js | 17 +++++-- routes/storage.js | 4 +- 17 files changed, 203 insertions(+), 70 deletions(-) create mode 100644 config/globalConfig.js create mode 100644 date.js create mode 100644 middleware/common/requireOption.js create mode 100644 mongo.js diff --git a/config/db.js b/config/db.js index b85e1a5..6cf5bef 100644 --- a/config/db.js +++ b/config/db.js @@ -1,3 +1,3 @@ const mongoose = require('mongoose'); -mongoose.connect('mongodb://localhost/EQN34F', { useNewUrlParser: true }); +mongoose.connect('mongodb://localhost/EQN34F', { useNewUrlParser: true ,useUnifiedTopology: true}); module.exports = mongoose; \ No newline at end of file diff --git a/config/globalConfig.js b/config/globalConfig.js new file mode 100644 index 0000000..542814c --- /dev/null +++ b/config/globalConfig.js @@ -0,0 +1,10 @@ + +const config = { + + useAuthentication: false + +}; + + + +module.exports = config; \ No newline at end of file diff --git a/date.js b/date.js new file mode 100644 index 0000000..f94ec94 --- /dev/null +++ b/date.js @@ -0,0 +1,8 @@ +const moment = require('moment'); + + +var datetime = '2020-04-19T09:29:05.000Z'; +var otherTime = moment(datetime); +let today = moment(); + +console.log(today.diff(otherTime,"day")); diff --git a/middleware/bunker/getBunker.js b/middleware/bunker/getBunker.js index 55e6417..4c221a6 100644 --- a/middleware/bunker/getBunker.js +++ b/middleware/bunker/getBunker.js @@ -1,14 +1,44 @@ - - +const moment = require('moment'); +const requireOption = require('../common/requireOption'); /** * Gets bunker information from bunkerid param, puts info in res.locals.bunker * -- if no bunker found, redirects to /bunkers */ module.exports = function (objectrepository) { + + const BunkerModel = requireOption(objectrepository, 'BunkerModel'); + + return function (req, res, next) { - - res.locals.bunker = { + + console.log(req.params.bunkerid); + BunkerModel.findOne({_id: req.params.bunkerid}) + .populate('stock') + .exec() + .then(bunker => { + console.log(bunker); + for(let item of bunker.stock) + item.style = getStockStyle(item.lasts); + res.locals.bunker = bunker; + }) + .then(next) + .catch(err => next(err)); + + } +} + +function getStockStyle (lasts) { + const today = moment(); + let diff = today.diff(lasts,'days'); + + console.log(diff); + + return 'text-danger'; + +} + + /* res.locals.bunker = { _id: 'bnkr2', name: 'Bunker2', adress: 'Teszt utca 2', @@ -40,7 +70,5 @@ module.exports = function (objectrepository) { }; - return next(); - }; - - }; \ No newline at end of file + + };*/ \ No newline at end of file diff --git a/middleware/bunker/getBunkerList.js b/middleware/bunker/getBunkerList.js index 2594743..896030a 100644 --- a/middleware/bunker/getBunkerList.js +++ b/middleware/bunker/getBunkerList.js @@ -1,46 +1,54 @@ +const moment = require('moment'); +const requireOption = require('../common/requireOption'); + /** *Gets list of bunkers, puts list on res.locals.bunkers */ - module.exports = function (objectrepository) { + const BunkerModel = requireOption(objectrepository, 'BunkerModel'); + return function (req, res, next) { - res.locals.bunkers = [ - { - _id: 'bnkr1', - name: 'Bunker1', - stock_dur: 365, - warning: { - level: 0, - message: '-', - class: 'text-secondary' - } - }, - { - _id: 'bnkr2', - name: 'Bunker2', - stock_dur: 400, - warning: { - level: 1, - message: 'Fél éven belűl romlandó étel', - class: 'text-warning' - } - }, - { - _id: 'bnkr3', - name: 'Bunker3', - stock_dur: 150, - warning: { - level: 2, - message: 'Romlott étel ', - class: 'text-danger' - } - }, - ]; - - return next(); + BunkerModel.find({}).exec() + .then(bunkers =>{ + for(let bunker of bunkers) + bunker.warning = GetWarningLabel(bunker.nextExpDate); + res.locals.bunkers = bunkers; + }) + .then(next) + .catch(err => next(err)) }; - - }; \ No newline at end of file + +} + + +//TODO: Ezt szebben meg kéne oldani +function GetWarningLabel(nextExpireDate) { + const today = new moment(); + console.log(nextExpireDate); + let diff = -today.diff(nextExpireDate,'days'); + + console.log(diff); + + if( diff > 180){ + return { + message: '-', + class: 'text-secondary' + } + } + else if (diff <= 180 && diff > 0){ + return { + message: 'Fél éven belűl romlandó étel', + class: 'text-warning' + } + } + else{ + return { + message: 'Romlott étel ', + class: 'text-danger' + } + } + +} \ No newline at end of file diff --git a/middleware/common/auth.js b/middleware/common/auth.js index e92696c..20ec9f6 100644 --- a/middleware/common/auth.js +++ b/middleware/common/auth.js @@ -1,4 +1,6 @@ +const global = require('../../config/globalConfig'); + /** * If the user is not logged in, redirects to '/' */ @@ -6,7 +8,7 @@ module.exports = function (objectrepository) { return function (req, res, next) { - if(! req.session.user) + if(global.UseAuthentication && ! req.session.user) return res.redirect('/'); next(); diff --git a/middleware/common/inverseAuth.js b/middleware/common/inverseAuth.js index a14d6c8..46e6685 100644 --- a/middleware/common/inverseAuth.js +++ b/middleware/common/inverseAuth.js @@ -1,4 +1,6 @@ +const globalConfig = require('../../config/globalConfig'); + /** * If the user is logged in, redirects to '/bunkers' */ @@ -6,7 +8,7 @@ module.exports = function (objectrepository) { return function (req, res, next) { - if(typeof req.session.user != 'undefined'){ + if(!globalConfig.useAuthentication || typeof req.session.user != 'undefined'){ return res.redirect('/bunkers'); } return next(); diff --git a/middleware/common/requireOption.js b/middleware/common/requireOption.js new file mode 100644 index 0000000..eef3542 --- /dev/null +++ b/middleware/common/requireOption.js @@ -0,0 +1,14 @@ +/** + * Load a dependency from an object repository + * @param objectRepository object repository + * @param propertyName dependency name + * @returns {*} + */ +function requireOption(objectRepository, propertyName) { + if (objectRepository && objectRepository[propertyName]) { + return objectRepository[propertyName]; + } + throw new TypeError(`${propertyName} required`); +} + +module.exports = requireOption; \ No newline at end of file diff --git a/models/bunker.js b/models/bunker.js index d0646f8..d76b9f1 100644 --- a/models/bunker.js +++ b/models/bunker.js @@ -6,6 +6,7 @@ const Bunker = db.model('Bunker', { adress: String, capacity: Number, stock_dur: Number, + nextExpDate: Date, stock:[{ type: Schema.Types.ObjectId, ref: 'StorageItem' diff --git a/mongo.js b/mongo.js new file mode 100644 index 0000000..af57478 --- /dev/null +++ b/mongo.js @@ -0,0 +1,59 @@ + + +const FoodModel = require('./models/food'); +const BunkerModel = require('./models/bunker'); +const StorageItemModel = require('./models/storageItem'); + +let dF = FoodModel.deleteMany({}).exec(); +let dB = BunkerModel.deleteMany({}).exec(); +let dS = StorageItemModel.deleteMany().exec(); + +Promise.all([dF,dB,dS]).then(fillDB).catch(err => console.log(err)).then(res=>{ + console.log('done'); + return process.exit() +}); + +async function fillDB(){ + + let food1 = new FoodModel(); + + + food1.name = "Sajtos csirkefarhát"; + food1.kcal = 100; + food1.lasts = 500; + + await food1.save(); + + let storage1 = new StorageItemModel({ + type: food1.name, + quantity: 50, + dop: new Date(), + lasts: new Date(2020,8,16) + }); + + await storage1.save(); + + let storage2 = new StorageItemModel({ + type: food1.name, + quantity: 500, + dop: new Date(2019,10,23), + lasts: new Date(2020,8,16) + }); + + await storage2.save(); + + let Bunker = new BunkerModel({ + name: "SCH", + adress: "Next to BME", + capacity: 1000, + stock_dur: 10000, + stock:[storage1._id,storage2._id], + nextExpDate: new Date(2020,4,20) + }); + + await Bunker.save(); + +} + + + diff --git a/package-lock.json b/package-lock.json index 9543acd..3e161a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -786,6 +786,11 @@ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, "mongodb": { "version": "3.5.6", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.6.tgz", diff --git a/package.json b/package.json index b7955d7..81404fc 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "ejs": "^3.0.1", "express": "^4.17.1", "express-session": "^1.17.0", + "moment": "^2.24.0", "mongoose": "^5.9.10" }, "devDependencies": { diff --git a/routes/bunker.js b/routes/bunker.js index 89572c7..499e40e 100644 --- a/routes/bunker.js +++ b/routes/bunker.js @@ -8,11 +8,7 @@ var getBunkerMW = require('../middleware/bunker/getBunker'); var deleteBunkerMW = require('..//middleware/bunker/deleteBunker'); -module.exports = function (app) { - var objectRepository = { - - }; - +module.exports = function (app, objectRepository) { app.get('/bunkers', authMW(objectRepository), diff --git a/routes/common.js b/routes/common.js index aca914c..4eca464 100644 --- a/routes/common.js +++ b/routes/common.js @@ -6,10 +6,8 @@ var loginMW = require('../middleware/common/login'); var inversAuthMW = require('../middleware/common/inverseAuth'); var logoutMW = require('..//middleware/common/logout'); -module.exports = function (app) { - var objectRepository = { - - }; +module.exports = function (app, objectRepository) { + app.get('/', diff --git a/routes/foods.js b/routes/foods.js index 9d2098d..49ea60f 100644 --- a/routes/foods.js +++ b/routes/foods.js @@ -8,11 +8,7 @@ var saveFoodMW = require('../middleware/food/saveFood'); var getFoodMW = require('../middleware/food/getFood'); var deleteFoodMW = require('../middleware/food/deleteFood'); -module.exports = function (app) { - var objectRepository = { - - }; - +module.exports = function (app, objectRepository) { app.get('/foods', authMW(objectRepository), diff --git a/routes/index.js b/routes/index.js index e15dae9..95d50f9 100644 --- a/routes/index.js +++ b/routes/index.js @@ -1,15 +1,22 @@ +const BunkerModel = require('../models/bunker'); +const StorageItemModel = require('../models/storageItem') +const FoodModel = require('../models/food'); //szimplán összefogja a többi routot, hogy az express applikációban szépen egy sorba be lehessen importálni module.exports = function (app) { - //u + var objectRepository = { + BunkerModel: BunkerModel, + StorageItemModel: StorageItemModel, + FoodModel: FoodModel + }; - require('./common')(app); - require('./bunker')(app); - require('./storage')(app); - require('./foods')(app); + require('./common')(app,objectRepository); + require('./bunker')(app,objectRepository); + require('./storage')(app,objectRepository); + require('./foods')(app,objectRepository); diff --git a/routes/storage.js b/routes/storage.js index a7c1370..c402f9f 100644 --- a/routes/storage.js +++ b/routes/storage.js @@ -9,10 +9,8 @@ var addStorageItemMW = require('../middleware/storage/addStorageItem'); var deletStorageItemMW = require('../middleware/storage/deleteStorageItem'); -module.exports = function (app) { - var objectRepository = { +module.exports = function (app,objectRepository) { - }; app.use('/bunkers/storage/add/:bunkerid', authMW(objectRepository), -- GitLab