80 lines
1.7 KiB
JavaScript
80 lines
1.7 KiB
JavaScript
Reports = new Mongo.Collection("reports");
|
|
|
|
Schemas.Report = new SimpleSchema({
|
|
owner: {
|
|
type: String,
|
|
regEx: SimpleSchema.RegEx.Id,
|
|
},
|
|
title: {
|
|
type: String,
|
|
trim: false,
|
|
optional: true,
|
|
},
|
|
description: {
|
|
type: String,
|
|
trim: false,
|
|
optional: true,
|
|
},
|
|
type: {
|
|
type: String,
|
|
allowedValues: ["General Feedback", "Bug", "Suggested Change", "Feature Request"],
|
|
defaultValue: "General Feedback",
|
|
},
|
|
//the immediate impact of doing this action (eg. -1 rages)
|
|
severity: {
|
|
type: Number,
|
|
defaultValue: 5,
|
|
min: 1,
|
|
max: 10,
|
|
},
|
|
metaData: {
|
|
type: Object,
|
|
blackbox: true,
|
|
},
|
|
});
|
|
|
|
Reports.attachSchema(Schemas.Report);
|
|
|
|
Meteor.methods({
|
|
insertReport: function(report) {
|
|
check(report, {
|
|
title: String,
|
|
description: String,
|
|
type: String,
|
|
severity: Number,
|
|
metaData: Object,
|
|
});
|
|
report.owner = this.userId;
|
|
var id = Reports.insert(report);
|
|
var user = Meteor.users.findOne(this.userId);
|
|
var sender = user &&
|
|
user.emails &&
|
|
user.emails[0] &&
|
|
user.emails[0].address ||
|
|
user.services &&
|
|
user.services.google &&
|
|
user.services.google.email ||
|
|
"reports@dicecloud.com";
|
|
var bodyText = "Report ID: " + id +
|
|
"\nSeverity: " + report.severity +
|
|
"\nType: " + report.type +
|
|
"\n\n" + report.description;
|
|
Email.send({
|
|
from: sender,
|
|
to: "stefan.zermatten@gmail.com",
|
|
subject: "DiceCloud feedback - " + report.title,
|
|
text: bodyText,
|
|
});
|
|
},
|
|
deleteReport: function(id) {
|
|
var user = Meteor.users.findOne(this.userId);
|
|
if (!_.contains(user.roles, "admin")){
|
|
throw new Meteor.Error(
|
|
"not admin",
|
|
"The user must be an administrator to delete feedback"
|
|
);
|
|
}
|
|
Reports.remove(id);
|
|
},
|
|
});
|