Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:49a8d7cde9a3, 2019-06-16 (annotated)
- Committer:
- 2019US_AjlaKarisik
- Date:
- Sun Jun 16 21:37:28 2019 +0000
- Revision:
- 0:49a8d7cde9a3
rfid
Who changed what in which revision?
User | Revision | Line number | New 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; |