Response saving will happen in an external file now, to keep stuff cleaner

This commit is contained in:
Alicia Sykes
2018-01-22 23:19:38 +00:00
parent 807f15610c
commit d6d74bd022
2 changed files with 67 additions and 31 deletions

View File

@@ -1,4 +1,5 @@
import Promise from "bluebird";
const ResponseSaver = require("../../commons/response-saver");
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
@@ -17,37 +18,15 @@ let teamRecordSchema = new Schema({
]
});
function checkInputIsValidJson(input) {
return (/^[\],:{}\s]*$/.test(input.replace(/\\["\\\/bfnrtu]/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, '')));
}
teamRecordSchema.statics.insertUserResponse = (userResponse) => {
return new Promise((resolve, reject) => {
// TODO check if valid json object
// TODO check if userhash is part of a valid team
// TODO check user has not already responded today
// TODO update record with new response
// TODO return appropriate message
let teamUserResponse = {
teamName: "demo",
data: [
{
date: new Date(),
userResults: [ userResponse ]
}
]
};
const _userResponse = new TeamRecordSchema(teamUserResponse);
_userResponse.save((err, saved) => {
err ? reject(err)
: resolve(saved);
});
});
const rs = new ResponseSaver();
return rs.insertUserResponse(userResponse);
};

View File

@@ -0,0 +1,57 @@
import Promise from "bluebird";
import TeamMembersModel from "../api/teams/team-members.model";
import EmailAddressHasher from "./email-address-hasher";
const TeamRecordSchema = require("../api/records/record.model");
class ResponseSaver {
insertUserResponse(userResponse){
let errorMessage = "Can't fetch error message."; // This will be overridden with correct err message
return new Promise((resolve, reject) => {
// if (!checkInputIsValidJson(userResponse)){
// errorMessage = "Malformed input. Must be valid JSON.";
// return reject(new TypeError(errorMessage));
// }
// TODO check if userhash is part of a valid team
TeamMembersModel.find({ }, function(err, teams) {
teams.forEach((team)=>{
let teamName = team.teamName;
team.members.forEach((member)=>{
console.log(EmailAddressHasher.checkEmailAgainstHash(member.email));
if(EmailAddressHasher.checkEmailAgainstHash(member.email)){
console.log('user found, in team '+teamName);
}
})
})
});
// TODO check user has not already responded today
// TODO update record with new response
// TODO return appropriate message
let teamUserResponse = {
teamName: "demo",
data: [
{
date: new Date(),
userResults: [ userResponse ]
}
]
};
const _userResponse = new TeamRecordSchema(teamUserResponse);
_userResponse.save((err, saved) => {
err ? reject(err)
: resolve(saved);
});
});
}
}
module.exports = ResponseSaver;