From e9202b483af10b78dfafe05adcb5c509d3d45fbf Mon Sep 17 00:00:00 2001 From: Bohan Huang Date: Sat, 29 Oct 2016 10:11:32 +0800 Subject: [PATCH 1/8] add data exist? check for update user --- controllers/userController.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/controllers/userController.js b/controllers/userController.js index c41a7db..3d6f937 100644 --- a/controllers/userController.js +++ b/controllers/userController.js @@ -30,6 +30,12 @@ exports.getUser = function(req, res) { exports.updateUser = function(req, res) { var query = { '_id': req.user._id }; + if (!req.body.newData) { + res.send({ + status: "error", + error: "Please input data for update" + }); + } User.findOneAndUpdate(query, req.body.newData, { upsert:true }, function(err, user) { if (err) { return res.status(500).json({ From 3e01eea6e0cb68f68ecabeb9ce6ea66daa2f6b65 Mon Sep 17 00:00:00 2001 From: Bohan Huang Date: Thu, 3 Nov 2016 21:01:47 +0800 Subject: [PATCH 2/8] update User get method to return experience --- controllers/userController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/userController.js b/controllers/userController.js index 3d6f937..1ce9f2d 100644 --- a/controllers/userController.js +++ b/controllers/userController.js @@ -9,7 +9,7 @@ exports.getUser = function(req, res) { { 'facebookId': req.params.id }, - '_id username facebookId level health health_limit agility appearance strength spritename stamina skillInUse', + '_id username facebookId level health health_limit agility appearance strength spritename stamina skillInUse experience', function(err, user) { if (err) { return res.status(500).json({ From 69ce752871d2393cebdff65931e87fdccaea04ca Mon Sep 17 00:00:00 2001 From: Bohan Huang Date: Thu, 3 Nov 2016 21:02:07 +0800 Subject: [PATCH 3/8] update backend routes --- routes/routes.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/routes/routes.js b/routes/routes.js index 74e7e81..014f2c3 100644 --- a/routes/routes.js +++ b/routes/routes.js @@ -28,15 +28,19 @@ router.get('/me', verifyToken, authCtrl.refreshToken, function(req, res) { router.get('/users/friends', verifyToken, authCtrl.refreshToken, userCtrl.getFriends); // Get user router.get('/users/:id', verifyToken, authCtrl.refreshToken, userCtrl.getUser); -// Update user -router.post('/users', verifyToken, authCtrl.refreshToken, userCtrl.updateUser); +// Update user spritename +router.post('/users/spritename', verifyToken, authCtrl.refreshToken, userCtrl.updateUserSpritename); +// Update user mi attributes (strength, stamina, agility, health, healthLimit) +router.post('/users/attributes', verifyToken, authCtrl.refreshToken, userCtrl.updateUserAttributes); +// Update user skills is used in use +router.post('/users/skills', verifyToken, authCtrl.refreshToken, userCtrl.updateUserSkills); +// Update user appearance +router.post('/users/appearance', verifyToken, authCtrl.refreshToken, userCtrl.updateUserAppearance); +// Update user level and experience +router.post('/users/level_experience', verifyToken, authCtrl.refreshToken, userCtrl.updateUserLevelExperience); // Add combat router.post('/combats/create', verifyToken, authCtrl.refreshToken, combatCtrl.createCombat); // Get combat router.get('/combats/:id', verifyToken, authCtrl.refreshToken, combatCtrl.getCombat); -// Add combat -router.post('/skills/create', verifyToken, authCtrl.refreshToken, skillCtrl.createSkill); -// Add combat -router.get('/skills/:id', verifyToken, authCtrl.refreshToken, skillCtrl.getSkill); module.exports = router; From 84fa4c9e9f6ca61ed8a2ca18b55caa696a29ebe0 Mon Sep 17 00:00:00 2001 From: Bohan Huang Date: Thu, 3 Nov 2016 21:02:36 +0800 Subject: [PATCH 4/8] update Skill model to include "unlockLevel" attributes --- models/skill.js | 1 + 1 file changed, 1 insertion(+) diff --git a/models/skill.js b/models/skill.js index 6daf885..dcef714 100644 --- a/models/skill.js +++ b/models/skill.js @@ -5,6 +5,7 @@ var mongoose = require('mongoose'); // Skill Schema var SkillSchema = new mongoose.Schema({ name: String, + unlockLevel: Number, strengthFactor: Number, staminaFactor: Number, agilityFactor: Number From 2dccb6d240b9edc164b2de3022e875652378a25f Mon Sep 17 00:00:00 2001 From: Bohan Huang Date: Thu, 3 Nov 2016 21:19:17 +0800 Subject: [PATCH 5/8] add data validation check for level and experience for User model --- models/user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/user.js b/models/user.js index 6e8d731..a5dfadc 100644 --- a/models/user.js +++ b/models/user.js @@ -16,9 +16,9 @@ var UserSchema = new mongoose.Schema({ agility: Number, health: Number, healthLimit: Number, - experience: Number, + experience: { type: Number, min: 0 }, appearance: String, - level: Number, + level: { type: Number, min: 0 }, skillInUse: [String], updatedAt: Date, createdAt: Date, From 3fc2ba90f6258b90fa6fded2d395631c0de880f1 Mon Sep 17 00:00:00 2001 From: Bohan Huang Date: Thu, 3 Nov 2016 21:45:02 +0800 Subject: [PATCH 6/8] update get user method to return healthLimit --- controllers/userController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/userController.js b/controllers/userController.js index 1ce9f2d..5fba9fb 100644 --- a/controllers/userController.js +++ b/controllers/userController.js @@ -9,7 +9,7 @@ exports.getUser = function(req, res) { { 'facebookId': req.params.id }, - '_id username facebookId level health health_limit agility appearance strength spritename stamina skillInUse experience', + '_id username facebookId level health health_limit agility appearance strength spritename stamina skillInUse experience healthLimit', function(err, user) { if (err) { return res.status(500).json({ From e9b9bb3f5b8567fa8685fca8322f4dd46bb06fc1 Mon Sep 17 00:00:00 2001 From: Bohan Huang Date: Thu, 3 Nov 2016 21:45:58 +0800 Subject: [PATCH 7/8] remove typo in get user method --- controllers/userController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/userController.js b/controllers/userController.js index 5fba9fb..0f34823 100644 --- a/controllers/userController.js +++ b/controllers/userController.js @@ -9,7 +9,7 @@ exports.getUser = function(req, res) { { 'facebookId': req.params.id }, - '_id username facebookId level health health_limit agility appearance strength spritename stamina skillInUse experience healthLimit', + '_id username facebookId level health agility appearance strength spritename stamina skillInUse experience healthLimit', function(err, user) { if (err) { return res.status(500).json({ From 318c0cdfd9198b814835c482e0046eda5c762c01 Mon Sep 17 00:00:00 2001 From: Bohan Huang Date: Thu, 3 Nov 2016 21:46:18 +0800 Subject: [PATCH 8/8] update post update user method --- controllers/userController.js | 137 ++++++++++++++++++++++++++++++---- 1 file changed, 123 insertions(+), 14 deletions(-) diff --git a/controllers/userController.js b/controllers/userController.js index 0f34823..ee016b8 100644 --- a/controllers/userController.js +++ b/controllers/userController.js @@ -28,24 +28,133 @@ exports.getUser = function(req, res) { }); }; -exports.updateUser = function(req, res) { - var query = { '_id': req.user._id }; - if (!req.body.newData) { +exports.updateUserSpritename = function(req, res) { + var query = { '_id': req.user._id }; + if (!req.body.spritename) { res.send({ status: "error", - error: "Please input data for update" + error: "Please input new spritename for update" }); } - User.findOneAndUpdate(query, req.body.newData, { upsert:true }, function(err, user) { - if (err) { - return res.status(500).json({ - message: err.message - }) - } - res.send({ - status: "ok", - }); - }); + var updateAttributes = { "spritename":req.body.spritename } + User.findOneAndUpdate(query, updateAttributes, { upsert:true }, function(err, user) { + if (err) { + return res.status(500).json({ + message: err.message + }) + } + res.send({ + status: "ok", + }); + }); +} + +//(strength, stamina, agility, health, healthLimit) +exports.updateUserAttributes = function(req, res) { + var query = { '_id': req.user._id }; + var updateAttributes = {} + if (req.body.strength) { + updateAttributes['strength'] = req.body.strength + } + if (req.body.stamina) { + updateAttributes['stamina'] = req.body.stamina + } + if (req.body.agility) { + updateAttributes['agility'] = req.body.agility + } + if (req.body.health) { + updateAttributes['health'] = req.body.health + } + if (req.body.healthLimit) { + updateAttributes['healthLimit'] = req.body.healthLimit + } + if (!updateAttributes.strength && !updateAttributes.stamina && !updateAttributes.agility && !updateAttributes.health && !updateAttributes.healthLimit) { + res.send({ + status: "error", + error: "Please input attributes for update" + }); + } + + User.findOneAndUpdate(query, updateAttributes, { upsert:true }, function(err, user) { + if (err) { + return res.status(500).json({ + message: err.message + }) + } + res.send({ + status: "ok", + }); + }); +} + +exports.updateUserSkills = function(req, res) { + var query = { '_id': req.user._id }; + if (!req.body.skills) { + res.send({ + status: "error", + error: "Please input skills in used for update" + }); + } + var updateAttributes = { "skillInUse":req.body.skills } + User.findOneAndUpdate(query, updateAttributes, { upsert:true }, function(err, user) { + if (err) { + return res.status(500).json({ + message: err.message + }) + } + res.send({ + status: "ok", + }); + }); +} + +exports.updateUserAppearance = function(req, res) { + var query = { '_id': req.user._id }; + if (!req.body.appearance) { + res.send({ + status: "error", + error: "Please input appearance for update" + }); + } + var updateAttributes = { "appearance":req.body.appearance } + User.findOneAndUpdate(query, updateAttributes, { upsert:true }, function(err, user) { + if (err) { + return res.status(500).json({ + message: err.message + }) + } + res.send({ + status: "ok", + }); + }); +} + +exports.updateUserLevelExperience = function(req, res) { + var query = { '_id': req.user._id }; + var updateAttributes = {} + if (req.body.level) { + updateAttributes['level'] = req.body.level + } + if (req.body.experience) { + updateAttributes['experience'] = req.body.experience + } + if (!updateAttributes.level && !updateAttributes.experience) { + res.send({ + status: "error", + error: "Please input level / experience for update" + }); + } + + User.findOneAndUpdate(query, updateAttributes, { upsert:true }, function(err, user) { + if (err) { + return res.status(500).json({ + message: err.message + }) + } + res.send({ + status: "ok", + }); + }); } exports.getFriends = function(req, res) {