Large set of changes - building the GUI for the data tracking app.

This commit is contained in:
Wynne Crisman
2016-08-17 17:54:59 -07:00
parent 08266cdd41
commit b3bbdc0c2a
47 changed files with 4186 additions and 158 deletions

View File

@@ -182,7 +182,7 @@ module.exports = function(app, rootPath, passport, smtpTransport, sequelize) {
});
});
app.get('/admin/user-data', isLoggedIn, function(req, res) {
app.get('/admin/user/list', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
sequelize.models.User.findAll().then(function(values) {
@@ -190,15 +190,450 @@ module.exports = function(app, rootPath, passport, smtpTransport, sequelize) {
});
}
else {
//TODO: Return some kind of error.
res.status(400).end();
}
}
catch(e) {console.log(e);}
});
app.post('/admin/createUser', isLoggedIn, function(req, res) {
app.post('/admin/user/create', isLoggedIn, function(req, res) {
try {
res.json({status: 'success'});
if(req.user.admin) {
var login = req.body.login;
var password = req.body.password;
sequelize.models.User.create({
login: login,
password: sequelize.models.User.generateHash(password),
admin: true
}).then(function(user) {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'duplicate'});
});
}
} catch(e) {console.log(e);}
});
app.post('/admin/user/delete', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var userId = req.body.id;
/* This isn't quite right.. the return of user.destroy() causes problems if the user is not found. Regardless, it is cleaner code to user the class method to destroy the instance rather than load it just to destroy it.
sequelize.models.User.findById(userId, {}).then(function(user) {
if(user) {
return user.destroy();
}
else {
res.json({result: 'failure'});
}
}).then(function() {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
*/
sequelize.models.User.destroy({where: {id: userId}}).then(function(count) {
if(count == 1) {
res.json({result: 'success'});
}
else {
res.json({result: 'failure'});
}
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
}
} catch(e) {console.log(e);}
});
app.post('/admin/user/changeLogin', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var userId = req.body.id;
var login = req.body.login;
sequelize.models.User.findById(userId, {}).then(function(user) {
user.login = login;
return user.save();
}).then(function() {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
}
} catch(e) {console.log(e);}
});
app.post('/admin/user/resetPassword', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var userId = req.body.id;
var password = req.body.password;
sequelize.models.User.findById(userId, {}).then(function(user) {
user.password = sequelize.models.User.generateHash(password);
return user.save();
}).then(function() {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
}
} catch(e) {console.log(e);}
});
app.get('/admin/venues/list', isLoggedIn, function(req, res) {
try {
var showDeleted = req.query.showDeleted == 'true';
sequelize.models.Venue.findAll({paranoid: !showDeleted}).then(function(values) {
res.json(values);
});
}
catch(e) {console.log(e);}
});
app.post('/admin/venues/create', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var name = req.body.name;
sequelize.models.Venue.create({
name: name
}).then(function(user) {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'duplicate'});
});
}
} catch(e) {console.log(e);}
});
app.post('/admin/venues/delete', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var id = req.body.id;
sequelize.models.Venue.destroy({where: {id: id}}).then(function(count) {
if(count == 1) {
res.json({result: 'success'});
}
else {
res.json({result: 'failure'});
}
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
}
} catch(e) {console.log(e);}
});
app.post('/admin/venues/edit', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var id = req.body.id;
var name = req.body.name;
sequelize.models.Venue.findById(id, {}).then(function(venue) {
venue.name = name;
return venue.save();
}).then(function() {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
}
} catch(e) {console.log(e);}
});
app.get('/admin/measures/list', isLoggedIn, function(req, res) {
try {
var showDeleted = req.query.showDeleted == 'true';
sequelize.models.Measure.findAll({paranoid: !showDeleted}).then(function(values) {
res.json(values);
});
}
catch(e) {console.log(e);}
});
app.post('/admin/measures/create', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var name = req.body.name;
var postfix = req.body.postfix;
sequelize.models.Measure.create({
name: name,
postfix: postfix
}).then(function(user) {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'duplicate'});
});
}
} catch(e) {console.log(e);}
});
app.post('/admin/measures/delete', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var id = req.body.id;
sequelize.models.Measure.destroy({where: {id: id}}).then(function(count) {
if(count == 1) {
res.json({result: 'success'});
}
else {
res.json({result: 'failure'});
}
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
}
} catch(e) {console.log(e);}
});
app.post('/admin/measures/edit', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var id = req.body.id;
var name = req.body.name;
var postfix = req.body.postfix;
sequelize.models.Measure.findById(id, {}).then(function(measure) {
measure.name = name;
measure.postfix = postfix;
return measure.save();
}).then(function() {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
}
} catch(e) {console.log(e);}
});
app.get('/admin/categories/list', isLoggedIn, function(req, res) {
try {
var showDeleted = req.query.showDeleted == 'true';
sequelize.models.Category.findAll({paranoid: !showDeleted}).then(function(values) {
res.json(values);
});
}
catch(e) {console.log(e);}
});
app.post('/admin/categories/create', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var name = req.body.name;
sequelize.models.Category.create({
name: name
}).then(function(user) {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'duplicate'});
});
}
} catch(e) {console.log(e);}
});
app.post('/admin/categories/delete', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var id = req.body.id;
sequelize.models.Category.destroy({where: {id: id}}).then(function(count) {
if(count == 1) {
res.json({result: 'success'});
}
else {
res.json({result: 'failure'});
}
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
}
} catch(e) {console.log(e);}
});
app.post('/admin/categories/edit', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var id = req.body.id;
var name = req.body.name;
sequelize.models.Category.findById(id, {}).then(function(category) {
category.name = name;
return category.save();
}).then(function() {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
}
} catch(e) {console.log(e);}
});
app.get('/admin/subcategories/list', isLoggedIn, function(req, res) {
try {
var showDeleted = req.query.showDeleted == 'true';
sequelize.models.Subcategory.findAll({paranoid: !showDeleted}).then(function(values) {
res.json(values);
});
}
catch(e) {console.log(e);}
});
app.post('/admin/subcategories/create', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var name = req.body.name;
sequelize.models.Subcategory.create({
name: name
}).then(function(user) {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'duplicate'});
});
}
} catch(e) {console.log(e);}
});
app.post('/admin/subcategories/delete', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var id = req.body.id;
sequelize.models.Subcategory.destroy({where: {id: id}}).then(function(count) {
if(count == 1) {
res.json({result: 'success'});
}
else {
res.json({result: 'failure'});
}
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
}
} catch(e) {console.log(e);}
});
app.post('/admin/subcategories/edit', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var id = req.body.id;
var name = req.body.name;
sequelize.models.Subcategory.findById(id, {}).then(function(subcategory) {
subcategory.name = name;
return subcategory.save();
}).then(function() {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
}
} catch(e) {console.log(e);}
});
app.get('/admin/items/list', isLoggedIn, function(req, res) {
try {
var showDeleted = req.query.showDeleted == 'true';
sequelize.models.Item.findAll({paranoid: !showDeleted}).then(function(values) {
res.json(values);
});
}
catch(e) {console.log(e);}
});
app.post('/admin/items/create', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var name = req.body.name;
var defaultPrice = req.body.defaultPrice;
var measures = req.body.measures;
sequelize.models.Item.create({
name: name,
defaultPrice: defaultPrice,
measures: measures
}).then(function(user) {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'duplicate'});
});
}
} catch(e) {console.log(e);}
});
app.post('/admin/items/delete', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var id = req.body.id;
sequelize.models.Item.destroy({where: {id: id}}).then(function(count) {
if(count == 1) {
res.json({result: 'success'});
}
else {
res.json({result: 'failure'});
}
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
}
} catch(e) {console.log(e);}
});
app.post('/admin/items/edit', isLoggedIn, function(req, res) {
try {
if(req.user.admin) {
var id = req.body.id;
var name = req.body.name;
var defaultPrice = req.body.defaultPrice;
var measures = req.body.measures;
sequelize.models.Item.findById(id, {}).then(function(item) {
item.name = name;
item.defaultPrice = defaultPrice;
item.measures = measures;
return item.save();
}).then(function() {
res.json({result: 'success'});
}).catch(function(err) {
console.log(err);
res.json({result: 'failure'});
});
}
} catch(e) {console.log(e);}
});