mirror of
https://github.com/Lissy93/happy-app.git
synced 2021-05-12 19:52:18 +03:00
Checks if user already submited, part 1
This commit is contained in:
@@ -17,6 +17,26 @@ class Helpers {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if a given date is today.
|
||||
* Returns true if it is, false if it isn't
|
||||
* @param date
|
||||
* @returns {boolean}
|
||||
*/
|
||||
static isDateToday(date){
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Puts a given string into uniform format by making it
|
||||
* lowercase and removing trailing spaces and funky symbols
|
||||
* @param str
|
||||
* @returns {string}
|
||||
*/
|
||||
static normaliseString(str) {
|
||||
return str.toLowerCase().replace(/\W/g, '');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module.exports = Helpers;
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
import Promise from "bluebird";
|
||||
import TeamMembersModel from "../api/teams/team-members.model";
|
||||
// const TeamRecordModel = require('../api/records/record.model');
|
||||
const TeamRecordModel = require('../api/records/record.model');
|
||||
|
||||
|
||||
import EmailAddressHasher from "./email-address-hasher";
|
||||
import Helpers from "./helpers";
|
||||
|
||||
const TeamRecordSchema = require("../api/records/record.model");
|
||||
|
||||
class ResponseSaver {
|
||||
|
||||
insertUserResponse(userResponse){
|
||||
@@ -15,54 +13,70 @@ class ResponseSaver {
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
/* Ensure that the input is of a valid format */
|
||||
if (!ResponseSaver.checkInputIsValidJson(userResponse)){
|
||||
/* Ensure that the input is of a valid format */
|
||||
if (!ResponseSaver.checkInputIsValidJson(userResponse)) {
|
||||
errorMessage = "Malformed input. Must be valid JSON.";
|
||||
return reject(new TypeError(errorMessage));
|
||||
}
|
||||
|
||||
/* Put input into valid format */
|
||||
// userResponse = this.putInputIntoValidFormat(userResponse);
|
||||
}
|
||||
|
||||
/* Put input into valid format */
|
||||
// userResponse = this.putInputIntoValidFormat(userResponse);
|
||||
resolve(userResponse);
|
||||
})
|
||||
.then((userResponse)=>{
|
||||
return new Promise(( resolve, reject) => {
|
||||
/* Check if user is part of a valid team*/
|
||||
ResponseSaver.checkIfUserFoundInTeam( userResponse.emailHash).then(
|
||||
(teamName)=> {
|
||||
if(!teamName){ // User was not found in any team :(
|
||||
errorMessage = "User cold not be found.";
|
||||
return reject(new TypeError(errorMessage));
|
||||
}
|
||||
|
||||
/* Check that the user has not yet responded already today */
|
||||
ResponseSaver.checkIfUserAlreadySubmittedToday(userResponse.emailHash, teamName,
|
||||
()=>{
|
||||
console.log("Ready for the next stage....")
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
// 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)
|
||||
: resolpve(saved);
|
||||
ResponseSaver.checkIfUserFoundInTeam(userResponse.emailHash).then(
|
||||
(teamName) => {
|
||||
if (!teamName) { // User was not found in any team :(
|
||||
errorMessage = "User cold not be found.";
|
||||
return reject(new TypeError(errorMessage));
|
||||
}
|
||||
return resolve(teamName);
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
})
|
||||
.then(
|
||||
(teamName)=> {
|
||||
return new Promise((resolve, reject) => {
|
||||
/* Check that the user has not yet responded already today */
|
||||
ResponseSaver.checkIfUserAlreadySubmittedToday(userResponse.emailHash, teamName).then(
|
||||
(userNotYetSubmitted) => {
|
||||
|
||||
console.log("userNotYetSubmitted ", userNotYetSubmitted);
|
||||
|
||||
if(userNotYetSubmitted){
|
||||
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
);
|
||||
});
|
||||
//
|
||||
// // 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)
|
||||
// : resolpve(saved);
|
||||
// });
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -100,12 +114,9 @@ class ResponseSaver {
|
||||
teams.forEach((team) => {
|
||||
let teamName = team.teamName;
|
||||
team.members.forEach((member) => {
|
||||
console.log(EmailAddressHasher.makeHash(member.email) + ' comparing to ' + userHash);
|
||||
console.log(EmailAddressHasher.checkEmailAgainstHash(member.email, userHash));
|
||||
if (EmailAddressHasher.checkEmailAgainstHash(member.email, userHash)) {
|
||||
console.log('user found');
|
||||
resolve(teamName)
|
||||
|
||||
}
|
||||
})
|
||||
});
|
||||
@@ -114,19 +125,35 @@ class ResponseSaver {
|
||||
});
|
||||
}
|
||||
|
||||
static checkIfUserAlreadySubmittedToday(userHash, teamName, cb){
|
||||
/* Get today's date */
|
||||
const today = Helpers.roundDate(new Date());
|
||||
// console.log("====>", TeamRecordModel);
|
||||
//
|
||||
//
|
||||
// TeamRecordModel.find({teamName: teamName}, function(err, teams) {
|
||||
// if (err) throw err;
|
||||
// const results = (teams.length > 0 ? teams[0] : {}); // always be's JSON
|
||||
// console.log(results)
|
||||
// });
|
||||
cb()
|
||||
}
|
||||
static checkIfUserAlreadySubmittedToday(userHash, teamName){
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
/* Get today's date */
|
||||
const today = Helpers.roundDate(new Date());
|
||||
|
||||
/* Make request */
|
||||
const TeamRecordModel = require('../api/records/record.model');
|
||||
TeamRecordModel.find({teamName: teamName}, function(err, teams) {
|
||||
if (err) reject(err);
|
||||
let teamData = (teams.length > 0 ? teams[0] : {}); // always be's JSON!
|
||||
|
||||
if(teamData.length > 1){ teamData = teamData[0]; }
|
||||
|
||||
if(Helpers.normaliseString(teamData.teamName) === Helpers.normaliseString(teamName)){
|
||||
teamData.data.forEach((dateBlock)=>{
|
||||
if( Helpers.isDateToday(dateBlock.date)) {
|
||||
dateBlock.userResults.forEach((userResult) => {
|
||||
if(userResult.userHash === userHash){ resolve(true);}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
resolve(false)
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user