package fi.otavanopisto.muikku.plugins.assessmentrequest; import java.util.Date; import java.util.List; import javax.enterprise.context.Dependent; import javax.inject.Inject; import fi.otavanopisto.muikku.model.workspace.WorkspaceEntity; import fi.otavanopisto.muikku.model.workspace.WorkspaceUserEntity; import fi.otavanopisto.muikku.plugins.communicator.CommunicatorController; import fi.otavanopisto.muikku.plugins.communicator.model.CommunicatorMessageId; import fi.otavanopisto.muikku.schooldata.GradingController; import fi.otavanopisto.muikku.schooldata.SchoolDataIdentifier; import fi.otavanopisto.muikku.schooldata.entity.GradingScale; import fi.otavanopisto.muikku.schooldata.entity.GradingScaleItem; import fi.otavanopisto.muikku.schooldata.entity.WorkspaceAssessment; import fi.otavanopisto.muikku.schooldata.entity.WorkspaceAssessmentRequest; import fi.otavanopisto.muikku.users.WorkspaceUserEntityController; @Dependent public class AssessmentRequestController { @Inject private AssessmentRequestMessageIdDAO assessmentRequestMessageIdDAO; @Inject private CommunicatorController communicatorController; @Inject private WorkspaceUserEntityController workspaceUserEntityController; @Inject private GradingController gradingController; public WorkspaceAssessmentRequest createWorkspaceAssessmentRequest(WorkspaceUserEntity workspaceUserEntity, String requestText) { String dataSource = workspaceUserEntity.getWorkspaceEntity().getDataSource().getIdentifier(); WorkspaceEntity workspaceEntity = workspaceUserEntity.getWorkspaceEntity(); return gradingController.createWorkspaceAssessmentRequest( dataSource, workspaceUserEntity.getIdentifier(), dataSource, workspaceEntity.getIdentifier(), workspaceUserEntity.getUserSchoolDataIdentifier().getIdentifier(), requestText, new Date()); } public WorkspaceAssessmentRequest findWorkspaceAssessmentRequest(SchoolDataIdentifier assessmentRequestIdentifier, SchoolDataIdentifier workspaceIdentifier, SchoolDataIdentifier studentIdentifier) { return gradingController.findWorkspaceAssessmentRequest(assessmentRequestIdentifier.getDataSource(), assessmentRequestIdentifier.getIdentifier(), workspaceIdentifier.getIdentifier(), studentIdentifier.getIdentifier()); } public List<WorkspaceAssessmentRequest> listByWorkspace(WorkspaceEntity workspaceEntity) { return gradingController.listWorkspaceAssessmentRequests(workspaceEntity.getDataSource().getIdentifier(), workspaceEntity.getIdentifier()); } public List<WorkspaceAssessmentRequest> listByWorkspaceUser(WorkspaceUserEntity workspaceUserEntity) { WorkspaceEntity workspaceEntity = workspaceUserEntity.getWorkspaceEntity(); return gradingController.listWorkspaceAssessmentRequests( workspaceEntity.getDataSource().getIdentifier(), workspaceEntity.getIdentifier(), workspaceUserEntity.getUserSchoolDataIdentifier().getIdentifier()); } public WorkspaceAssessmentState getWorkspaceAssessmentState(WorkspaceUserEntity workspaceUserEntity) { WorkspaceEntity workspaceEntity = workspaceUserEntity.getWorkspaceEntity(); List<WorkspaceAssessment> workspaceAssessments = gradingController.listWorkspaceAssessments( workspaceEntity.getDataSource().getIdentifier(), workspaceEntity.getIdentifier(), workspaceUserEntity.getUserSchoolDataIdentifier().getIdentifier()); if (workspaceAssessments.isEmpty()) { List<WorkspaceAssessmentRequest> assessmentRequests = gradingController.listWorkspaceAssessmentRequests( workspaceEntity.getDataSource().getIdentifier(), workspaceEntity.getIdentifier(), workspaceUserEntity.getUserSchoolDataIdentifier().getIdentifier()); if (assessmentRequests.isEmpty()) { return WorkspaceAssessmentState.UNASSESSED; } else { return WorkspaceAssessmentState.PENDING; } } else { WorkspaceAssessment assessment = workspaceAssessments.get(0); GradingScale gradingScale = gradingController.findGradingScale(assessment.getGradingScaleIdentifier()); GradingScaleItem grade = gradingController.findGradingScaleItem(gradingScale, assessment.getGradeIdentifier()); if (grade.isPassingGrade()) return WorkspaceAssessmentState.PASS; else return WorkspaceAssessmentState.FAIL; } } public void deleteWorkspaceAssessmentRequest(WorkspaceUserEntity workspaceUserEntity, SchoolDataIdentifier assessmentRequestIdentifier) { gradingController.deleteWorkspaceAssessmentRequest( assessmentRequestIdentifier.getDataSource(), assessmentRequestIdentifier.getIdentifier(), workspaceUserEntity.getWorkspaceEntity().getIdentifier(), workspaceUserEntity.getUserSchoolDataIdentifier().getIdentifier()); } public CommunicatorMessageId findCommunicatorMessageId(WorkspaceUserEntity workspaceUserEntity) { AssessmentRequestMessageId assessmentRequestMessageId = assessmentRequestMessageIdDAO.findByWorkspaceUser(workspaceUserEntity); if (assessmentRequestMessageId != null) return communicatorController.findCommunicatorMessageId(assessmentRequestMessageId.getCommunicatorMessageId()); else return null; } public void setCommunicatorMessageId(WorkspaceAssessmentRequest assessmentRequest, CommunicatorMessageId communicatorMessageId) { SchoolDataIdentifier workspaceUserIdentifier = new SchoolDataIdentifier( assessmentRequest.getWorkspaceUserIdentifier(), assessmentRequest.getWorkspaceUserSchoolDataSource()); WorkspaceUserEntity workspaceUserEntity = workspaceUserEntityController.findWorkspaceUserEntityByWorkspaceUserIdentifier(workspaceUserIdentifier); AssessmentRequestMessageId requestMessageId = assessmentRequestMessageIdDAO.findByWorkspaceUser(workspaceUserEntity); if (requestMessageId == null) assessmentRequestMessageIdDAO.create(workspaceUserEntity, communicatorMessageId); else assessmentRequestMessageIdDAO.updateMessageId(requestMessageId, communicatorMessageId); } }