ohif-viewer/Packages/lesiontracker/server/reviewers.js

67 lines
2.3 KiB
JavaScript

Meteor.methods({
setReviewer: function (studyInstanceUid) {
var study = Studies.findOne({
studyInstanceUid: studyInstanceUid
});
if (!study) {
return;
}
var timepoint = Timepoints.findOne({
timepointId: study.timepointId
});
if (!timepoint) {
return;
}
var reviewerTimepoint = Reviewers.findOne({timepointId: timepoint.timepointId});
var user = Meteor.users.findOne(Meteor.userId());
if (reviewerTimepoint) {
if (reviewerTimepoint.reviewers) {
// Check whether the user exists
var isReviewerFound = reviewerTimepoint.reviewers.filter(function ( reviewer ) {
return reviewer.userId === user._id;
})[0];
// Return if user eixistes for related timepoint
if (isReviewerFound) {
return;
}
var existedReviewers = reviewerTimepoint.reviewers;
existedReviewers.push({userId: user._id, userName: user.profile.fullName});
// Update reviewers array after pushing the user
Reviewers.update(reviewerTimepoint._id, {$set: {reviewers: existedReviewers}});
} else {
Reviewers.update(reviewerTimepoint._id, {$set: {reviewers: [{userId: user._id, userName: user.profile.fullName}]}});
}
} else {
Reviewers.insert({timepointId: timepoint.timepointId, reviewers: [{userId: user._id, userName: user.profile.fullName}]});
}
},
removeReviewer: function (timepointId) {
var reviewerTimepoint = Reviewers.findOne({timepointId: timepointId});
if (!reviewerTimepoint || !reviewerTimepoint.reviewers) {
return;
}
// Initalize a new array without the current user
var reviewers = reviewerTimepoint.reviewers.filter(function ( reviewer ) {
return reviewer.userId !== Meteor.userId();
});
Reviewers.update(reviewerTimepoint._id, {$set: {reviewers: reviewers}});
},
removeUserFromReviewers: function(userId) {
Reviewers.find().map(function (timepoint) {
Reviewers.update({_id: timepoint._id}, {"$pull": {"reviewers": {"userId": userId}}});
});
}
});