EvaluationViewModel.java

package edu.rit.coopeval.viewmodel.evaluation;


import edu.rit.coopeval.model.EmployerQuestionAnswer;
import edu.rit.coopeval.model.Evaluation;
import edu.rit.coopeval.model.StudentQuestionAnswer;

import java.util.List;
import java.util.ArrayList;

/**
 * Created by mhickson on 3/5/15.
 */
public class EvaluationViewModel {
    private Long evaluationId;
    private String placementId;
    private String studentFirstName;
    private String studentLastName;
    private String studentEmail;
    private String departmentCode;
    private String gradYear;
    private String advisorFirstName;
    private String advisorLastName;
    private String companyName;
    private String companyPhoneNumber;
    private String companyLocation;
    private String jobTitle;
    private String termCode;
    private EvaluationApprovalViewModel evaluationApproval;
    private List<QuestionGroupViewModel> questionGroups;

    public EvaluationViewModel(){}

    public EvaluationViewModel(Evaluation evaluationEntity, boolean isStudentEval){
        this.evaluationId=evaluationEntity.getEvaluationId();
        this.placementId=evaluationEntity.getPlacementId();
        this.studentFirstName=evaluationEntity.getStudentFirstName();
        this.studentLastName=evaluationEntity.getStudentLastName();
        this.studentEmail=evaluationEntity.getStudentEmail();
        this.departmentCode=evaluationEntity.getDepartmentByDepartmentId().getDepartmentCode();
        this.gradYear=evaluationEntity.getGradYear();
        this.advisorFirstName=evaluationEntity.getAdvisorFirstName();
        this.advisorLastName=evaluationEntity.getAdvisorLastName();
        this.companyName=evaluationEntity.getEmployerUserByEmployerUserId().getCompanyName();
        this.companyPhoneNumber=evaluationEntity.getCompanyPhoneNumber();
        this.companyLocation=evaluationEntity.getCompanyLocation();
        this.jobTitle=evaluationEntity.getJobTitle();
        this.termCode=evaluationEntity.getTermByTermId().getTermCode();
        this.evaluationApproval=new EvaluationApprovalViewModel(evaluationEntity.getEvaluationApprovalByEvaluationId());
        if(isStudentEval){
            this.questionGroups=createQuestionGroupArrayForStudent(evaluationEntity);
        }
        else{
            this.questionGroups=createQuestionGroupArrayForEmployer(evaluationEntity);
        }
    }

    public Long getEvaluationId() {
        return evaluationId;
    }

    public String getPlacementId() {
        return placementId;
    }

    public void setPlacementId(String placementId) {
        this.placementId = placementId;
    }

    public void setEvaluationId(Long evaluationId) {
        this.evaluationId = evaluationId;
    }

    public String getStudentFirstName() {
        return studentFirstName;
    }

    public void setStudentFirstName(String studentFirstName) {
        this.studentFirstName = studentFirstName;
    }

    public String getStudentLastName() {
        return studentLastName;
    }

    public void setStudentLastName(String studentLastName) {
        this.studentLastName = studentLastName;
    }

    public String getStudentEmail() {
        return studentEmail;
    }

    public void setStudentEmail(String studentEmail) {
        this.studentEmail = studentEmail;
    }

    public String getDepartmentCode() {
        return departmentCode;
    }

    public void setDepartmentCode(String departmentCode) {
        this.departmentCode = departmentCode;
    }

    public String getGradYear() {
        return gradYear;
    }

    public void setGradYear(String gradYear) {
        this.gradYear = gradYear;
    }

    public String getAdvisorFirstName() {
        return advisorFirstName;
    }

    public void setAdvisorFirstName(String advisorFirstName) {
        this.advisorFirstName = advisorFirstName;
    }

    public String getAdvisorLastName() {
        return advisorLastName;
    }

    public void setAdvisorLastName(String advisorLastName) {
        this.advisorLastName = advisorLastName;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public String getCompanyPhoneNumber() {
        return companyPhoneNumber;
    }

    public void setCompanyPhoneNumber(String companyPhoneNumber) {
        this.companyPhoneNumber = companyPhoneNumber;
    }

    public String getCompanyLocation() {
        return companyLocation;
    }

    public void setCompanyLocation(String companyLocation) {
        this.companyLocation = companyLocation;
    }

    public String getJobTitle() {
        return jobTitle;
    }

    public void setJobTitle(String jobTitle) {
        this.jobTitle = jobTitle;
    }

    public String getTermCode() {
        return termCode;
    }

    public void setTermCode(String termCode) {
        this.termCode = termCode;
    }

    public List<QuestionGroupViewModel> getQuestionGroups() {
        return questionGroups;
    }

    public void setQuestionGroups(List<QuestionGroupViewModel> questionGroups) {
        this.questionGroups = questionGroups;
    }

    public EvaluationApprovalViewModel getEvaluationApproval() {
        return evaluationApproval;
    }

    public void setEvaluationApproval(EvaluationApprovalViewModel evaluationApproval) {
        this.evaluationApproval = evaluationApproval;
    }

    public List<QuestionGroupViewModel> createQuestionGroupArrayForStudent(Evaluation evaluationEntity) {
        List<QuestionGroupViewModel> studentQuestionGroups = new ArrayList<QuestionGroupViewModel>();
        Long pastGroupId = null;
        Long currentGroupId = null;
        QuestionGroupViewModel currentQuestionGroup = null;
        for(StudentQuestionAnswer studentQuestionAnswer: evaluationEntity.getStudentQuestionAnswersByEvaluationId()){
            currentGroupId = studentQuestionAnswer.getFormQuestionByFormQuestionId()
                    .getQuestionGroupByQuestionQuestionId().getQuestionGroupId();
            if((pastGroupId == null) || (pastGroupId != currentGroupId)){
                currentQuestionGroup = new QuestionGroupViewModel(studentQuestionAnswer.getFormQuestionByFormQuestionId()
                        .getQuestionGroupByQuestionQuestionId());
                studentQuestionGroups.add(currentQuestionGroup);
                currentQuestionGroup.addQuestion(new QuestionViewModel(studentQuestionAnswer));
                pastGroupId = currentGroupId;
            }
            else{
                currentQuestionGroup.addQuestion(new QuestionViewModel(studentQuestionAnswer));
            }
        }
        return studentQuestionGroups;
    }

    public List<QuestionGroupViewModel> createQuestionGroupArrayForEmployer(Evaluation evaluationEntity) {
        List<QuestionGroupViewModel> employerQuestionGroups = new ArrayList<QuestionGroupViewModel>();
        Long pastGroupId = null;
        Long currentGroupId = null;
        QuestionGroupViewModel currentQuestionGroup = null;
        for(EmployerQuestionAnswer employerQuestionAnswer: evaluationEntity.getEmployerQuestionAnswersByEvaluationId()){
            currentGroupId = employerQuestionAnswer.getFormQuestionByFormQuestionId()
                    .getQuestionGroupByQuestionQuestionId().getQuestionGroupId();
            if((pastGroupId == null) || (pastGroupId != currentGroupId)){
                currentQuestionGroup = new QuestionGroupViewModel(employerQuestionAnswer.getFormQuestionByFormQuestionId()
                        .getQuestionGroupByQuestionQuestionId());
                employerQuestionGroups.add(currentQuestionGroup);
                currentQuestionGroup.addQuestion(new QuestionViewModel(employerQuestionAnswer));
                pastGroupId = currentGroupId;
            }
            else{
                currentQuestionGroup.addQuestion(new QuestionViewModel(employerQuestionAnswer));
            }
        }
        return employerQuestionGroups;
    }
}