EvaluationController.java
package edu.rit.coopeval.controller;
import javax.servlet.http.HttpSession;
import java.util.List;
import edu.rit.coopeval.authentication.beans.User;
import edu.rit.coopeval.dao.EvaluationRepository;
import edu.rit.coopeval.evaluation.EvaluationModel;
import edu.rit.coopeval.evaluation.EvaluationType;
import edu.rit.coopeval.model.*;
import edu.rit.coopeval.viewmodel.evaluation.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* Created by mhickson on 1/29/15.
*/
@RestController
@RequestMapping(value="/services/EvaluationService")
public class EvaluationController {
@Autowired
private EvaluationRepository evalRepo;
@Autowired
private EvaluationModel evalModel;
@RequestMapping(value = "/getStudentOverview", method = RequestMethod.GET)
public StudentOverviewViewModel getStudentOverview(@RequestParam(value="studentDCE", required = false) String studentDCE, HttpSession session) {
User currentUser = (User) session.getAttribute("currentUser");
StudentOverviewViewModel studentOverview = null;
if(studentDCE == null){
String suid = "";
if(currentUser != null){
suid = currentUser.getUid();
}
studentOverview = new StudentOverviewViewModel(evalRepo.findByStudentUid(suid));
}
else{
studentOverview = new StudentOverviewViewModel(evalRepo.findByStudentDCE(studentDCE));
}
return studentOverview;
}
@RequestMapping(value = "/getEmployerOverview", method = RequestMethod.GET)
public EmployerOverviewViewModel getEmployerOverview(HttpSession session) {
String email = "";
User currentUser = (User) session.getAttribute("currentUser");
if(currentUser != null){
email = currentUser.getUserName();
}
List<Evaluation> evaluations = evalRepo.findByEmployerEmail(email);
return new EmployerOverviewViewModel(evaluations);
}
@RequestMapping(value = "/getStudentEval", method = RequestMethod.GET)
public EvaluationViewModel getStudentEvaluation(@RequestParam(value="placementId") String placementId) {
Evaluation evaluation = evalRepo.findByPlacementId(placementId);
return new EvaluationViewModel(evaluation, true);
}
@RequestMapping(value = "/getEmployerEval", method = RequestMethod.GET)
public EvaluationViewModel getEmployerEvaluation(@RequestParam(value="placementId") String placementId) {
Evaluation evaluation = evalRepo.findByPlacementId(placementId);
return new EvaluationViewModel(evaluation, false);
}
@RequestMapping(value = "/saveEval", method = RequestMethod.PUT)
public void saveEvaluation(@RequestBody EvaluationViewModel updatedEval, HttpSession session) {
User currentUser = (User) session.getAttribute("currentUser");
Evaluation evaluation = evalRepo.findByPlacementId(updatedEval.getPlacementId());
if(currentUser!=null){
switch (currentUser.getAccountType()) {
case STUDENT:
evaluation = this.parseStudentAnswers(updatedEval, evaluation);
this.evalModel.save(evaluation, EvaluationType.STUDENT);
break;
case EMPLOYER:
evaluation = this.parseEmployerAnswers(updatedEval, evaluation);
this.evalModel.save(evaluation, EvaluationType.EMPLOYER);
break;
}
}
}
@RequestMapping(value = "/submitEval", method = RequestMethod.PUT)
public void submitEvaluation(@RequestBody EvaluationViewModel updatedEval, HttpSession session) {
User currentUser = (User) session.getAttribute("currentUser");
Evaluation evaluation = evalRepo.findByPlacementId(updatedEval.getPlacementId());
if(currentUser!=null){
switch (currentUser.getAccountType()) {
case STUDENT:
evaluation = this.parseStudentAnswers(updatedEval, evaluation);
this.evalModel.submit(evaluation, EvaluationType.STUDENT);
break;
case EMPLOYER:
evaluation = this.parseEmployerAnswers(updatedEval, evaluation);
this.evalModel.submit(evaluation, EvaluationType.EMPLOYER);
break;
}
}
}
@RequestMapping(value = "/approveEval", method = RequestMethod.PUT)
public void approveEvaluation(@RequestBody EvaluationViewModel eval, HttpSession session){
User currentUser = (User) session.getAttribute("currentUser");
if(eval.getPlacementId() != null){
this.evalModel.setCurrentUser(currentUser);
this.evalModel.approve(evalRepo.findByPlacementId(eval.getPlacementId()));
}
}
@RequestMapping(value = "/rejectEval", method = RequestMethod.PUT)
public void rejectEvaluation(@RequestBody EvaluationViewModel eval, HttpSession session){
User currentUser = (User) session.getAttribute("currentUser");
if(eval.getPlacementId() != null){
this.evalModel.setCurrentUser(currentUser);
this.evalModel.reject(evalRepo.findByPlacementId(eval.getPlacementId()));
}
}
public Evaluation parseStudentAnswers(EvaluationViewModel updatedEval, Evaluation evaluation){
for(QuestionGroupViewModel questionGroup: updatedEval.getQuestionGroups()){
for(QuestionViewModel updatedQuestion: questionGroup.getQuestions()){
for(StudentQuestionAnswer currentQuestionAnswer: evaluation.getStudentQuestionAnswersByEvaluationId()){
if(updatedQuestion.getQuestionAnswerId() == currentQuestionAnswer.getStudentQuestionAnswerId()){
currentQuestionAnswer.setAnswer(updatedQuestion.getAnswer());
if(currentQuestionAnswer.getFormQuestionByFormQuestionId().getIsCommentAllowed().equals("1")){
currentQuestionAnswer.setComment(updatedQuestion.getComment());
}
break;
}
}
}
}
return evaluation;
}
public Evaluation parseEmployerAnswers(EvaluationViewModel updatedEval, Evaluation evaluation){
for(QuestionGroupViewModel questionGroup: updatedEval.getQuestionGroups()){
for(QuestionViewModel updatedQuestion: questionGroup.getQuestions()){
for(EmployerQuestionAnswer currentQuestionAnswer: evaluation.getEmployerQuestionAnswersByEvaluationId()){
if(updatedQuestion.getQuestionAnswerId() == currentQuestionAnswer.getEmployerQuestionAnswerId()){
currentQuestionAnswer.setAnswer(updatedQuestion.getAnswer());
if(currentQuestionAnswer.getFormQuestionByFormQuestionId().getIsCommentAllowed().equals("1")){
currentQuestionAnswer.setComment(updatedQuestion.getComment());
}
break;
}
}
}
}
return evaluation;
}
}