From 7e9e0ced4ffa52ed8a09d6e21fec83c0c305b443 Mon Sep 17 00:00:00 2001 From: jslightham <31053827+jslightham@users.noreply.github.com> Date: Wed, 10 Jun 2020 20:25:13 -0400 Subject: [PATCH] added multiple club feature --- attendancetracker/API/attendance.route.js | 5 +- attendancetracker/API/club.model.js | 13 ++ attendancetracker/API/club.route.js | 96 +++++++++ attendancetracker/API/server.js | 3 +- .../src/components/Attendance.vue | 75 ++++--- .../src/components/Attendees.vue | 44 ++-- attendancetracker/src/components/Calendar.vue | 41 ++-- attendancetracker/src/components/Clubs.vue | 189 ++++++++++++++++++ attendancetracker/src/components/Insights.vue | 36 ++-- attendancetracker/src/components/Login.vue | 11 +- attendancetracker/src/components/Register.vue | 71 ++++--- attendancetracker/src/main.js | 7 +- 12 files changed, 480 insertions(+), 111 deletions(-) create mode 100644 attendancetracker/API/club.model.js create mode 100644 attendancetracker/API/club.route.js create mode 100644 attendancetracker/src/components/Clubs.vue diff --git a/attendancetracker/API/attendance.route.js b/attendancetracker/API/attendance.route.js index b1093fc..0f9a262 100644 --- a/attendancetracker/API/attendance.route.js +++ b/attendancetracker/API/attendance.route.js @@ -5,12 +5,15 @@ let Att = require('./attendee.model'); attendanceRoute.route('/add').post(function (req, res) { let post = new Att(req.body); + //console.log(post); post.save() .then(() => { res.status(200).send("account created"); + //console.log("success"); }) .catch(() => { res.status(400).send("unable to save to database"); + //console.log("fail") }); }); @@ -40,7 +43,7 @@ let Att = require('./attendee.model'); attendanceRoute.route('/getarr').post(function (req, res) { - console.log(req.body.number); + //console.log(req.body.number); var id = req.body.number; //console.log(id) Att.findById(id, function (err, arr){ diff --git a/attendancetracker/API/club.model.js b/attendancetracker/API/club.model.js new file mode 100644 index 0000000..88c92ea --- /dev/null +++ b/attendancetracker/API/club.model.js @@ -0,0 +1,13 @@ +const mongoose = require('mongoose'); +const Schema = mongoose.Schema; + +let CInfo = new Schema({ + user: { type: String, required: true }, + clubname: { type: String, required: true }, + dates: {type: Array, required: false} +},{ + collection: 'cinfo' +} +); + +module.exports = mongoose.model('Club', CInfo); \ No newline at end of file diff --git a/attendancetracker/API/club.route.js b/attendancetracker/API/club.route.js new file mode 100644 index 0000000..118a46d --- /dev/null +++ b/attendancetracker/API/club.route.js @@ -0,0 +1,96 @@ +const express = require('express'); +const clubRoute = express.Router(); + +let CInfo = require('./club.model'); + +clubRoute.route('/clubs').post(function (req, res) { + let username = req.body.user; + //console.log(username) + CInfo.find({user: username}, function (err, posts){ + if(err) { + res.json(err); + } + res.json(posts); + }); + }); + + clubRoute.route('/add').post(function (req, res) { + let post = new CInfo(req.body); + console.log(req.body); + post.save() + .then(() => { + res.status(200).send("account created"); + + }) + .catch(() => { + res.status(400).send("unable to save to database"); + + }); + }); + + clubRoute.route('/delete').post(function (req, res) { + //console.log(req.body.id); + CInfo.findByIdAndRemove({_id: req.body.id}, function(err){ + if(err) res.json(err); + else res.json('Successfully removed'); + }); + }); + + clubRoute.route('/getone').post(function (req, res) { + let username = req.body.user; + console.log(username) + CInfo.findOne({user: username}, function (err, posts){ + if(err) { + res.json(err); + } + console.log(posts); + res.json(posts); + }); + }); + + clubRoute.route('/getbyID').post(function (req, res) { + //console.log(req.body.number); + var id = req.body.number; + //console.log(id) + CInfo.findById(id, function (err, arr){ + if(err) { + res.json(err); + } + res.json(arr); + //console.log(arr); + }); + }); + + clubRoute.route('/getdates').post(function (req, res) { + var username = req.body.user; + console.log(username); + CInfo.findOne({_id: username}, function (err, post){ + if(err) { + res.json(err); + } + res.json(post); + }); + }); + + clubRoute.route('/update').post(function (req, res){ + + var username = req.body.user; + var dates = req.body.dates; + + CInfo.findOne({_id: username}, function(err, post) { + if (!post) + res.status(404).send("data is not found"); + else { + //console.log(post); + post.dates = dates; + post.save().then(() => { + res.json('Update complete'); + }) + .catch(() => { + res.status(400).send("unable to update the database"); + }); + } + }); +}); + +module.exports = clubRoute; \ No newline at end of file diff --git a/attendancetracker/API/server.js b/attendancetracker/API/server.js index e384255..dfcc4fb 100644 --- a/attendancetracker/API/server.js +++ b/attendancetracker/API/server.js @@ -7,7 +7,7 @@ const mongoose = require('mongoose'); const config = require('./DB.js'); const attendanceRoute = require('./attendance.route'); const loginRoute = require('./login.route'); - +const clubsRoute = require('./club.route'); mongoose.Promise = global.Promise; @@ -22,6 +22,7 @@ app.use(bodyParser.json()); app.use('/login', loginRoute); app.use('/attendance', attendanceRoute); +app.use('/clubs', clubsRoute); app.listen(PORT, function(){ diff --git a/attendancetracker/src/components/Attendance.vue b/attendancetracker/src/components/Attendance.vue index 7c5eb70..0069129 100644 --- a/attendancetracker/src/components/Attendance.vue +++ b/attendancetracker/src/components/Attendance.vue @@ -2,7 +2,7 @@
- Attendance Tracker® + Attendance Tracker @@ -15,6 +15,7 @@ By Absences Manage Club Members + Select Club @@ -45,7 +46,7 @@
- Attendance Tracker® + Attendance Tracker @@ -76,7 +77,7 @@
-

Attendance for {{this.$route.params.id}}

+

{{club.clubname}} Attendance for {{this.$route.params.id}}

*Note: changes are denoted by a darker coloured row.
@@ -111,8 +112,9 @@
- +
Cancel
+ @@ -192,26 +194,6 @@ .absentcheckbox { background-color: #FF7F7F; } - - .buttone { - text-align: center; - border-bottom: none; - } - - .buttone button { - background-color: #3D5A80; - border: 1px #3D5A80; - border-radius: 5px; - padding: 1vh; - padding-left: 2vh; - padding-right: 2vh; - color: white; - font-family: Roboto, Open Sans, sans-serif; - } - - .buttone button:hover { - background-color: #293D56; - } \ No newline at end of file diff --git a/attendancetracker/src/components/Insights.vue b/attendancetracker/src/components/Insights.vue index 2e43460..202c089 100644 --- a/attendancetracker/src/components/Insights.vue +++ b/attendancetracker/src/components/Insights.vue @@ -4,7 +4,7 @@
- Attendance Tracker® + Attendance Tracker @@ -17,6 +17,7 @@ By Absences Manage Club Members + Select Club @@ -35,8 +36,8 @@
- -

{{ header }}

+

{{club.clubname}} Insights Page

+

{{ header }}

You have no members yet! Add some to get insights.
Chart Loading, please wait...
@@ -115,8 +116,15 @@ th{ export default { mounted() { - this.user = document.cookie.substring(document.cookie.indexOf("=")+1); - if(document.cookie == ""){ + this.user = document.cookie.substring(document.cookie.indexOf("=")+1, document.cookie.indexOf(";")); + this.selected = document.cookie.substring(document.cookie.indexOf(";")+7); + let url = 'http://192.168.1.11:4000/clubs/getbyID'; + let temp = {number: this.selected}; + this.axios.post(url, temp).then(res => { + this.club = res.data; + //console.log(this.clubs); + + if(document.cookie == ""){ this.$router.push({name: 'login'}); } @@ -132,7 +140,10 @@ export default { this.getAttByAbsenses(); } - console.log(this.$route.params.method) + //console.log(this.$route.params.method) + }) + + }, @@ -141,6 +152,7 @@ export default { attendees: [], user: "", header: "", + club: {}, chartData: [ ["User", "Attendances"] ], @@ -155,8 +167,8 @@ export default { }, methods: { getAttById(){ - var data = {user: this.user}; - let uri = 'http://localhost:4000/attendance/getById'; + var data = {user: this.selected}; + let uri = 'http://192.168.1.11:4000/attendance/getById'; this.axios.post(uri, data).then(res => { console.log(res); this.attendees = res.data; @@ -168,8 +180,8 @@ export default { }); }, getAttByPresences(){ - var data = {user: this.user}; - let uri = 'http://localhost:4000/attendance/getById'; + var data = {user: this.selected}; + let uri = 'http://192.168.1.11:4000/attendance/getById'; this.axios.post(uri, data).then(res => { console.log(res); this.attendees = res.data; @@ -182,8 +194,8 @@ export default { }); }, getAttByAbsenses(){ - var data = {user: this.user}; - let uri = 'http://localhost:4000/attendance/getById'; + var data = {user: this.selected}; + let uri = 'http://192.168.1.11:4000/attendance/getById'; this.axios.post(uri, data).then(res => { console.log(res); this.attendees = res.data; diff --git a/attendancetracker/src/components/Login.vue b/attendancetracker/src/components/Login.vue index 6335a23..beeb9e8 100644 --- a/attendancetracker/src/components/Login.vue +++ b/attendancetracker/src/components/Login.vue @@ -155,7 +155,7 @@ input:focus { }, methods: { add(){ - let uri = 'http://localhost:4000/login/post'; + let uri = 'http://192.168.1.11:4000/login/post'; this.axios.post(uri, this.post).then(res => { if(!res.data){ document.getElementById("incorrect").style.display = "block"; @@ -163,8 +163,15 @@ input:focus { document.getElementsByClassName("text-input")[1].style.border = "3px solid red"; }else{ document.getElementById("incorrect").style.display = "none"; - this.$router.push({name: 'calendar'}); + document.cookie = "user="+res.data.user; + + let url = 'http://192.168.1.11:4000/clubs/getone'; + this.axios.post(url, this.post).then(res2 => { + console.log(res2); + document.cookie = "club=" + res2.data._id + ";"; + this.$router.push({name: 'calendar'}); + }) } }); } diff --git a/attendancetracker/src/components/Register.vue b/attendancetracker/src/components/Register.vue index 8f76210..e3ddb8e 100644 --- a/attendancetracker/src/components/Register.vue +++ b/attendancetracker/src/components/Register.vue @@ -5,7 +5,7 @@