package fi.otavanopisto.muikku.schooldata;
import java.util.Date;
import java.util.List;
import fi.otavanopisto.muikku.schooldata.entity.CompositeAssessmentRequest;
import fi.otavanopisto.muikku.schooldata.entity.CompositeGradingScale;
import fi.otavanopisto.muikku.schooldata.entity.GradingScale;
import fi.otavanopisto.muikku.schooldata.entity.GradingScaleItem;
import fi.otavanopisto.muikku.schooldata.entity.TransferCredit;
import fi.otavanopisto.muikku.schooldata.entity.WorkspaceAssessment;
import fi.otavanopisto.muikku.schooldata.entity.WorkspaceAssessmentRequest;
public interface GradingSchoolDataBridge {
/**
* Returns school data source identifier
*
* @return school data source identifier
*/
public String getSchoolDataSource();
/* Grades */
/**
* Lists all available grades.
*
* @return All available grades
*/
public List<CompositeGradingScale> listCompositeGradingScales();
/* GradingScales */
public GradingScale findGradingScale(String identifier);
public List<GradingScale> listGradingScales() throws SchoolDataBridgeInternalException;
/* GradingScaleItems */
public GradingScaleItem findGradingScaleItem(String gradingScaleIdentifier, String identifier);
public List<GradingScaleItem> listGradingScaleItems(String gradingScaleIdentifier);
/* Workspace Assessments */
/**
* Creates new workspace assessment
*
* @param workspaceUserIdentifier
* identifier of student to be assessed
* @param workspaceUserSchoolDataSource
* school data source of student to be assessed
* @param assessingUserIdentifier
* identifier of assessing user
* @param assessingUserSchoolDataSource
* school data source of assessing user
* @param gradeIdentifier
* identifier of grade
* @param gradeSchoolDataSource
* school data source of grade
* @param verbalAssessment
* verbal assessment
* @param date
* assessment date
* @return created workspace assessment
*/
public WorkspaceAssessment createWorkspaceAssessment(String workspaceUserIdentifier, String workspaceUserSchoolDataSource, String WorkspaceIdentifier,
String studentIdentifier, String assessingUserIdentifier, String assessingUserSchoolDataSource, String gradeIdentifier, String gradeSchoolDataSource,
String gradingScaleIdentifier, String gradingScaleSchoolDataSource, String verbalAssessment, Date date);
/**
* Finds a workspace assessment
*
* @param identifier
* identifier of workspace assessment
* @param schoolDataSource
* school data source of workspace assessment
* @return found workspace assessment or null of non found
*/
public WorkspaceAssessment findWorkspaceAssessment(String identifier, String WorkspaceIdentifier, String studentIdentifier);
/**
* Lists workspace assessments by workspace and student
*
* @param workspaceIdentifier
* identifier of the workspace
* @param studentIdentifier
* identifier of student
* @return list of workspace assessments (empty if not found)
*/
public List<WorkspaceAssessment> listWorkspaceAssessments(String workspaceIdentifier, String studentIdentifier);
/**
* Updates a workspace assessment
*
* @param identifier
* identifier of workspace assessment
* @param schoolDataSource
* school data source of workspace assessment
* @param workspaceUserIdentifier
* identifier of student to be assessed
* @param workspaceUserSchoolDataSource
* school data source of student to be assessed
* @param assessingUserIdentifier
* identifier of assessing user
* @param assessingUserSchoolDataSource
* school data source of assessing user
* @param gradeIdentifier
* identifier of grade
* @param gradeSchoolDataSource
* school data source of grade
* @param verbalAssessment
* verbal assessment
* @param date
* assessment date
* @return updated workspace assessment
*/
public WorkspaceAssessment updateWorkspaceAssessment(String identifier, String workspaceUserIdentifier, String workspaceUserSchoolDataSource,
String workspaceIdentifier, String studentIdentifier, String assessingUserIdentifier, String assessingUserSchoolDataSource, String gradeIdentifier,
String gradeSchoolDataSource, String gradingScaleIdentifier, String gradingScaleSchoolDataSource, String verbalAssessment, Date date);
public void deleteWorkspaceAssessment(SchoolDataIdentifier workspaceIdentifier,
SchoolDataIdentifier studentIdentifier, SchoolDataIdentifier workspaceAssesmentIdentifier);
public WorkspaceAssessmentRequest createWorkspaceAssessmentRequest(String workspaceUserIdentifier, String workspaceUserSchoolDataSource, String workspaceIdentifier,
String studentIdentifier, String requestText, Date date);
public WorkspaceAssessmentRequest findWorkspaceAssessmentRequest(String identifier, String workspaceIdentifier, String studentIdentifier);
public List<WorkspaceAssessmentRequest> listWorkspaceAssessmentRequests(String workspaceIdentifier);
public List<WorkspaceAssessmentRequest> listWorkspaceAssessmentRequests(String workspaceIdentifier, String studentIdentifier);
public List<WorkspaceAssessmentRequest> listAssessmentRequestsByStudent(String studentIdentifier);
/**
* Returns the most recent workspace assessment given to the student, or <code>null</code> if none exists.
*
* @param studentIdentifier student identifier
*
* @return the most recent workspace assessment given to the student, or <code>null</code> if none exists
*/
public WorkspaceAssessment findLatestWorkspaceAssessmentByStudent(String studentIdentifier);
/**
* Returns the most recent assessment request sent by the given student, or <code>null</code> if none exists.
*
* @param studentIdentifier student identifier
*
* @return the most recent assessment request sent by the given student, or <code>null</code> if none exists
*/
public WorkspaceAssessmentRequest findLatestAssessmentRequestByStudent(String studentIdentifier);
/**
* Returns all assessment requests associated with the given staff member. For example, assessment request of
* a workspace that the staff member is teaching.
*
* @param staffMemberIdentifier Staff member identifier
*
* @return All assessment requests associated with the given staff member
*/
public List<CompositeAssessmentRequest> listCompositeAssessmentRequestsByStaffMember(String staffMemberIdentifier);
/**
* Returns all assessment requests associated with the given workspace, possibly filtered to match only the
* givne workspace students.
*
* @param workspaceIdentifier Workspace identifier
*
* @return All assessment requests associated with the given workspace
*/
public List<CompositeAssessmentRequest> listCompositeAssessmentRequestsByWorkspace(String workspaceIdentifier, List<String> workspaceStudentIdentifiers);
public WorkspaceAssessmentRequest updateWorkspaceAssessmentRequest(String identifier, String workspaceUserIdentifier, String workspaceUserSchoolDataSource,
String workspaceIdentifier, String studentIdentifier, String requestText, Date date, Boolean archived, Boolean handled);
public void deleteWorkspaceAssessmentRequest(String identifier, String workspaceIdentifier, String studentIdentifier);
public List<TransferCredit> listStudentTransferCredits(SchoolDataIdentifier studentIdentifier);
public Long countStudentWorkspaceAssessments(String studentIdentifier, Date fromDate, Date toDate,
boolean onlyPassingGrades);
}