Skip to content

Instantly share code, notes, and snippets.

@Anwesh43
Created November 13, 2015 21:22
Show Gist options
  • Save Anwesh43/8265d491c2fb21890198 to your computer and use it in GitHub Desktop.
Save Anwesh43/8265d491c2fb21890198 to your computer and use it in GitHub Desktop.
var teamAndCohortPeerLevels = ['DOA - MONTH ONE','D0B - SIMULATIONS','D0C - SIMULATIONS'];
var peerLevels = ['D1 Jr Consultant','D2 Consultant','D2 Consultant','D2 Consultant'];
var handleError = function(err,res) {
logger.error(err);
res.status(500).json(err);
};
var createPeersFromFellows = function(fellows,peers,fellow) {
_.each(fellows, function(peer) {
if (peer.uid !== fellow.uid) {
peers.push(peer);
}
})
};
var peers = function(req, res) {
var peers = [];
models.Fellow
.findById(req.params.id)
.then(function(fellow) {
if (fellow) {
if(teamAndCohortPeerLevels.indexOf(fellow.level) != -1) {
fetchTeamAndCohortPeers(req, res, fellow, peers);
}
else if(peerLevels.indexOf(fellow.level) != -1) {
fetchPeers(req, res, fellow, peers);
}
} else {
res.status(404).json({
message: 'Fellow does not exist'
});
}
})
.catch(function(err) {
handleError(err,res);
});
}
};
var fetchTeamAndCohortPeers = function(req, res, fellow, peers) {
models.Team
.findById(fellow.team_id, {
include: [ models.Fellow ]
})
.then(function(team) {
if (team) {
createPeersFromFellows(team.Fellows,peers,fellow);
fetchCohortPeers(req, res, fellow, peers);
}
else {
fetchCohortPeers(req, res, fellow, peers);
}
})
.catch(function(err) {
handleError(err,res);
});
};
var fetchCohortPeers = function(req, res, fellow, peers) {
models.Cohort
.findById(fellow.cohort_id, {
include: [ models.Fellow ]
})
.then(function(cohort) {
if (cohort) {
createPeersFromFellows(cohort.Fellows,peers,fellow);
res.status(200).json(peers);
}
else {
res.status(404).json({
message: 'Cohort does not exist'
});
}
})
.catch(function(err) {
handleError(err,res);
});
};
var fetchPeers = function(req, res, fellow, peers) {
var orConditions = [];
_.each(peerLevels,function(peerLevel){
var orCondition = {level:peerLevel};
orConditions.push(orCondition);
});
var where = {
$or: orConditions
}
models.Fellow
.findAll({
where: where,
order: 'first_name ASC'
})
.then(function(fellows) {
if (fellows) {
createPeersFromFellows(fellows,peers,fellow);
res.status(200).json(peers);
}
else {
res.status(404).json({
message: 'Peers does not exist'
});
}
})
.catch(function(err) {
handleError(err,res);
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment