Ajla Karisik / Mbed 2 deprecated Projekat

Dependencies:   mbed

Committer:
2019US_AjlaKarisik
Date:
Sun Jun 16 21:37:28 2019 +0000
Revision:
0:49a8d7cde9a3
rfid

Who changed what in which revision?

UserRevisionLine numberNew contents of line
2019US_AjlaKarisik 0:49a8d7cde9a3 1 const express = require('express');
2019US_AjlaKarisik 0:49a8d7cde9a3 2 const router = express.Router();
2019US_AjlaKarisik 0:49a8d7cde9a3 3
2019US_AjlaKarisik 0:49a8d7cde9a3 4 const User = require('../models/user');
2019US_AjlaKarisik 0:49a8d7cde9a3 5
2019US_AjlaKarisik 0:49a8d7cde9a3 6 router.post('/add', async (req, res) => {
2019US_AjlaKarisik 0:49a8d7cde9a3 7 if (!req.body.rfid || !req.body.firstName || !req.body.lastName) {
2019US_AjlaKarisik 0:49a8d7cde9a3 8 return res.status(400).send('All required data not found in header');
2019US_AjlaKarisik 0:49a8d7cde9a3 9 }
2019US_AjlaKarisik 0:49a8d7cde9a3 10
2019US_AjlaKarisik 0:49a8d7cde9a3 11 const newUser = new User({
2019US_AjlaKarisik 0:49a8d7cde9a3 12 rfID: req.body.rfid,
2019US_AjlaKarisik 0:49a8d7cde9a3 13 firstName: req.body.firstName,
2019US_AjlaKarisik 0:49a8d7cde9a3 14 lastName: req.body.lastName
2019US_AjlaKarisik 0:49a8d7cde9a3 15 });
2019US_AjlaKarisik 0:49a8d7cde9a3 16
2019US_AjlaKarisik 0:49a8d7cde9a3 17 await newUser.save();
2019US_AjlaKarisik 0:49a8d7cde9a3 18 return res.status(200).send('User saved in database');
2019US_AjlaKarisik 0:49a8d7cde9a3 19 });
2019US_AjlaKarisik 0:49a8d7cde9a3 20
2019US_AjlaKarisik 0:49a8d7cde9a3 21 router.post('/addBalance', async (req, res) => {
2019US_AjlaKarisik 0:49a8d7cde9a3 22 if (!req.body.rfid) {
2019US_AjlaKarisik 0:49a8d7cde9a3 23 return res.status(400).send('RFID ID not found in header');
2019US_AjlaKarisik 0:49a8d7cde9a3 24 }
2019US_AjlaKarisik 0:49a8d7cde9a3 25
2019US_AjlaKarisik 0:49a8d7cde9a3 26 User.findOne({ rfID: req.body.rfid }, (err, foundUser) => {
2019US_AjlaKarisik 0:49a8d7cde9a3 27 if (err) {
2019US_AjlaKarisik 0:49a8d7cde9a3 28 console.log(err);
2019US_AjlaKarisik 0:49a8d7cde9a3 29 return res.status(400).send('Some error occured');
2019US_AjlaKarisik 0:49a8d7cde9a3 30 }
2019US_AjlaKarisik 0:49a8d7cde9a3 31
2019US_AjlaKarisik 0:49a8d7cde9a3 32 if (foundUser === null) {
2019US_AjlaKarisik 0:49a8d7cde9a3 33 return res.status(400).send('User not found');
2019US_AjlaKarisik 0:49a8d7cde9a3 34 }
2019US_AjlaKarisik 0:49a8d7cde9a3 35
2019US_AjlaKarisik 0:49a8d7cde9a3 36 foundUser.addToBalance(req.body.amount);
2019US_AjlaKarisik 0:49a8d7cde9a3 37 return res.status(200).send('Balance updated');
2019US_AjlaKarisik 0:49a8d7cde9a3 38 });
2019US_AjlaKarisik 0:49a8d7cde9a3 39 });
2019US_AjlaKarisik 0:49a8d7cde9a3 40
2019US_AjlaKarisik 0:49a8d7cde9a3 41 router.post('/takeBalance', async (req, res) => {
2019US_AjlaKarisik 0:49a8d7cde9a3 42 if (!req.body.rfid) {
2019US_AjlaKarisik 0:49a8d7cde9a3 43 return res.status(400).send('RFID ID not found in header');
2019US_AjlaKarisik 0:49a8d7cde9a3 44 }
2019US_AjlaKarisik 0:49a8d7cde9a3 45
2019US_AjlaKarisik 0:49a8d7cde9a3 46 User.findOne({ rfID: req.body.rfid }, (err, foundUser) => {
2019US_AjlaKarisik 0:49a8d7cde9a3 47 if (err) {
2019US_AjlaKarisik 0:49a8d7cde9a3 48 console.log(err);
2019US_AjlaKarisik 0:49a8d7cde9a3 49 return res.status(400).send('Some error occured');
2019US_AjlaKarisik 0:49a8d7cde9a3 50 }
2019US_AjlaKarisik 0:49a8d7cde9a3 51
2019US_AjlaKarisik 0:49a8d7cde9a3 52 if (foundUser === null) {
2019US_AjlaKarisik 0:49a8d7cde9a3 53 return res.status(400).send('User not found');
2019US_AjlaKarisik 0:49a8d7cde9a3 54 }
2019US_AjlaKarisik 0:49a8d7cde9a3 55
2019US_AjlaKarisik 0:49a8d7cde9a3 56 //User.updateOne({ _id: foundUser._id }, ())
2019US_AjlaKarisik 0:49a8d7cde9a3 57
2019US_AjlaKarisik 0:49a8d7cde9a3 58 foundUser.takeFromBalance(req.body.amount);
2019US_AjlaKarisik 0:49a8d7cde9a3 59 return res.status(200).send('Balance updated');
2019US_AjlaKarisik 0:49a8d7cde9a3 60 });
2019US_AjlaKarisik 0:49a8d7cde9a3 61 });
2019US_AjlaKarisik 0:49a8d7cde9a3 62
2019US_AjlaKarisik 0:49a8d7cde9a3 63 router.post('/swipeCard', (req, res) => {
2019US_AjlaKarisik 0:49a8d7cde9a3 64 if (!req.body.rfid) {
2019US_AjlaKarisik 0:49a8d7cde9a3 65 return res.status(403).send('Access Unauthorized');
2019US_AjlaKarisik 0:49a8d7cde9a3 66 }
2019US_AjlaKarisik 0:49a8d7cde9a3 67
2019US_AjlaKarisik 0:49a8d7cde9a3 68 User.findOne({ rfID: req.body.rfid }, (err, foundUser) => {
2019US_AjlaKarisik 0:49a8d7cde9a3 69 if (err) {
2019US_AjlaKarisik 0:49a8d7cde9a3 70 console.log(err);
2019US_AjlaKarisik 0:49a8d7cde9a3 71 return res.status(400).send('Some error occured');
2019US_AjlaKarisik 0:49a8d7cde9a3 72 }
2019US_AjlaKarisik 0:49a8d7cde9a3 73
2019US_AjlaKarisik 0:49a8d7cde9a3 74 if ('timeEntered' in foundUser && foundUser['timeEntered'] !== null) {
2019US_AjlaKarisik 0:49a8d7cde9a3 75 const code = foundUser.checkout();
2019US_AjlaKarisik 0:49a8d7cde9a3 76 return res.sendStatus(code);
2019US_AjlaKarisik 0:49a8d7cde9a3 77 }
2019US_AjlaKarisik 0:49a8d7cde9a3 78
2019US_AjlaKarisik 0:49a8d7cde9a3 79 foundUser.checkin();
2019US_AjlaKarisik 0:49a8d7cde9a3 80 return res.status(200).send('User checked in');
2019US_AjlaKarisik 0:49a8d7cde9a3 81 });
2019US_AjlaKarisik 0:49a8d7cde9a3 82 });
2019US_AjlaKarisik 0:49a8d7cde9a3 83
2019US_AjlaKarisik 0:49a8d7cde9a3 84 router.get('/getUser', (req, res) => {
2019US_AjlaKarisik 0:49a8d7cde9a3 85 if (!req.query.rfid) {
2019US_AjlaKarisik 0:49a8d7cde9a3 86 return res.status(403).send('Access Unauthorized');
2019US_AjlaKarisik 0:49a8d7cde9a3 87 }
2019US_AjlaKarisik 0:49a8d7cde9a3 88
2019US_AjlaKarisik 0:49a8d7cde9a3 89 User.findOne({ rfID: req.query.rfid }).lean().exec((err, foundUser) => {
2019US_AjlaKarisik 0:49a8d7cde9a3 90 if (err) {
2019US_AjlaKarisik 0:49a8d7cde9a3 91 console.log(err);
2019US_AjlaKarisik 0:49a8d7cde9a3 92 return res.status(400).send('Some error occured');
2019US_AjlaKarisik 0:49a8d7cde9a3 93 }
2019US_AjlaKarisik 0:49a8d7cde9a3 94
2019US_AjlaKarisik 0:49a8d7cde9a3 95 res.status(200).json(foundUser);
2019US_AjlaKarisik 0:49a8d7cde9a3 96 });
2019US_AjlaKarisik 0:49a8d7cde9a3 97 });
2019US_AjlaKarisik 0:49a8d7cde9a3 98
2019US_AjlaKarisik 0:49a8d7cde9a3 99 module.exports = router;
2019US_AjlaKarisik 0:49a8d7cde9a3 100
2019US_AjlaKarisik 0:49a8d7cde9a3 101
2019US_AjlaKarisik 0:49a8d7cde9a3 102
2019US_AjlaKarisik 0:49a8d7cde9a3 103
2019US_AjlaKarisik 0:49a8d7cde9a3 104 var express = require('express');
2019US_AjlaKarisik 0:49a8d7cde9a3 105 var router = express.Router();
2019US_AjlaKarisik 0:49a8d7cde9a3 106
2019US_AjlaKarisik 0:49a8d7cde9a3 107 /* GET home page. */
2019US_AjlaKarisik 0:49a8d7cde9a3 108 router.get('/', function(req, res, next) {
2019US_AjlaKarisik 0:49a8d7cde9a3 109 res.render('index', { title: 'Express' });
2019US_AjlaKarisik 0:49a8d7cde9a3 110 });
2019US_AjlaKarisik 0:49a8d7cde9a3 111
2019US_AjlaKarisik 0:49a8d7cde9a3 112 module.exports = router;
2019US_AjlaKarisik 0:49a8d7cde9a3 113
2019US_AjlaKarisik 0:49a8d7cde9a3 114 const mongoose = require('mongoose');
2019US_AjlaKarisik 0:49a8d7cde9a3 115 const Schema = mongoose.Schema;
2019US_AjlaKarisik 0:49a8d7cde9a3 116
2019US_AjlaKarisik 0:49a8d7cde9a3 117 const userShema = new Schema({
2019US_AjlaKarisik 0:49a8d7cde9a3 118 rfID: {
2019US_AjlaKarisik 0:49a8d7cde9a3 119 type: String,
2019US_AjlaKarisik 0:49a8d7cde9a3 120 required: true
2019US_AjlaKarisik 0:49a8d7cde9a3 121 },
2019US_AjlaKarisik 0:49a8d7cde9a3 122 firstName: {
2019US_AjlaKarisik 0:49a8d7cde9a3 123 type: String,
2019US_AjlaKarisik 0:49a8d7cde9a3 124 required: true
2019US_AjlaKarisik 0:49a8d7cde9a3 125 },
2019US_AjlaKarisik 0:49a8d7cde9a3 126 lastName: {
2019US_AjlaKarisik 0:49a8d7cde9a3 127 type: String,
2019US_AjlaKarisik 0:49a8d7cde9a3 128 required: true
2019US_AjlaKarisik 0:49a8d7cde9a3 129 },
2019US_AjlaKarisik 0:49a8d7cde9a3 130 balance: {
2019US_AjlaKarisik 0:49a8d7cde9a3 131 type: Number,
2019US_AjlaKarisik 0:49a8d7cde9a3 132 required: true,
2019US_AjlaKarisik 0:49a8d7cde9a3 133 default: 0,
2019US_AjlaKarisik 0:49a8d7cde9a3 134 min: 0
2019US_AjlaKarisik 0:49a8d7cde9a3 135 },
2019US_AjlaKarisik 0:49a8d7cde9a3 136 timeEntered: {
2019US_AjlaKarisik 0:49a8d7cde9a3 137 type: Date,
2019US_AjlaKarisik 0:49a8d7cde9a3 138 required: false,
2019US_AjlaKarisik 0:49a8d7cde9a3 139 default: null
2019US_AjlaKarisik 0:49a8d7cde9a3 140 }
2019US_AjlaKarisik 0:49a8d7cde9a3 141 });
2019US_AjlaKarisik 0:49a8d7cde9a3 142
2019US_AjlaKarisik 0:49a8d7cde9a3 143 userShema.methods.addToBalance = function(amount) {
2019US_AjlaKarisik 0:49a8d7cde9a3 144 console.log(this.balance, Number(amount));
2019US_AjlaKarisik 0:49a8d7cde9a3 145 this.balance = this.balance + Number(amount);
2019US_AjlaKarisik 0:49a8d7cde9a3 146 this.save();
2019US_AjlaKarisik 0:49a8d7cde9a3 147 };
2019US_AjlaKarisik 0:49a8d7cde9a3 148
2019US_AjlaKarisik 0:49a8d7cde9a3 149 userShema.methods.takeFromBalance = function(amount) {
2019US_AjlaKarisik 0:49a8d7cde9a3 150 this.balance = this.balance - Number(amount);
2019US_AjlaKarisik 0:49a8d7cde9a3 151 this.save();
2019US_AjlaKarisik 0:49a8d7cde9a3 152 };
2019US_AjlaKarisik 0:49a8d7cde9a3 153
2019US_AjlaKarisik 0:49a8d7cde9a3 154 userShema.methods.checkin = function() {
2019US_AjlaKarisik 0:49a8d7cde9a3 155 this.timeEntered = Date.now();
2019US_AjlaKarisik 0:49a8d7cde9a3 156 this.save();
2019US_AjlaKarisik 0:49a8d7cde9a3 157 }
2019US_AjlaKarisik 0:49a8d7cde9a3 158
2019US_AjlaKarisik 0:49a8d7cde9a3 159 userShema.methods.checkout = function() {
2019US_AjlaKarisik 0:49a8d7cde9a3 160 const timeSpent = Math.round((Date.now() - this.timeEntered) / 1000 / 10) + 1;
2019US_AjlaKarisik 0:49a8d7cde9a3 161 console.log(timeSpent);
2019US_AjlaKarisik 0:49a8d7cde9a3 162 if (this.balance >= timeSpent) {
2019US_AjlaKarisik 0:49a8d7cde9a3 163 this.balance -= timeSpent;
2019US_AjlaKarisik 0:49a8d7cde9a3 164 this.timeEntered = null;
2019US_AjlaKarisik 0:49a8d7cde9a3 165 this.save();
2019US_AjlaKarisik 0:49a8d7cde9a3 166
2019US_AjlaKarisik 0:49a8d7cde9a3 167 return 200;
2019US_AjlaKarisik 0:49a8d7cde9a3 168 }
2019US_AjlaKarisik 0:49a8d7cde9a3 169
2019US_AjlaKarisik 0:49a8d7cde9a3 170 return 400;
2019US_AjlaKarisik 0:49a8d7cde9a3 171 }
2019US_AjlaKarisik 0:49a8d7cde9a3 172
2019US_AjlaKarisik 0:49a8d7cde9a3 173 const User = mongoose.model('user', userShema);
2019US_AjlaKarisik 0:49a8d7cde9a3 174
2019US_AjlaKarisik 0:49a8d7cde9a3 175 module.exports = User;