001package com.studentgui.apphelpers.dto;
002
003import java.util.Arrays;
004
005/**
006 * Typed payload for assessment-style pages (codes + scores).
007 */
008public class AssessmentPayload implements SessionPayload {
009    /** Database session id for this payload. */
010    public int sessionId;
011    /** Array of part codes (e.g. "P1_1"). */
012    public String[] codes;
013    /** Parallel array of integer scores. */
014    public int[] scores;
015
016    /** No-arg constructor for Jackson and tests. */
017    public AssessmentPayload() {}
018
019    /**
020     * Create an assessment payload.
021     *
022    * @param sessionIdParam numeric DB session id
023    * @param codesParam array of part codes
024    * @param scoresParam array of scores
025     */
026    public AssessmentPayload(final int sessionIdParam, final String[] codesParam, final int[] scoresParam) {
027        this.sessionId = sessionIdParam;
028        this.codes = codesParam;
029        this.scores = scoresParam;
030    }
031
032    @Override
033    /**
034     * Return the numeric database session id associated with this payload.
035     *
036     * @return the session id stored in this payload
037     */
038    public int getSessionId() {
039        return this.sessionId;
040    }
041
042    @Override
043    /**
044     * Return a compact, human-readable representation of this payload suitable
045     * for logging and diagnostics.
046     *
047     * @return a one-line string describing the payload contents
048     */
049
050    public String toString() {
051        return "AssessmentPayload{sessionId=" + sessionId + ", codes=" + Arrays.toString(codes) + ", scores=" + Arrays.toString(scores) + "}";
052    }
053}