import { IsDateString, IsNotEmpty } from "class-validator";
import { RunnerCard } from '../entities/RunnerCard';
import { ScanStation } from '../entities/ScanStation';
import { TrackScan } from '../entities/TrackScan';
import { ResponseScan } from './ResponseScan';
import { ResponseTrack } from './ResponseTrack';

/**
 * Defines the trackScan response.
*/
export class ResponseTrackScan extends ResponseScan {
    /**
   * The scan's associated track.
   */
    @IsNotEmpty()
    track: ResponseTrack;

    /**
     * The runnerCard associated with the scan.
     */
    @IsNotEmpty()
    card: RunnerCard;

    /**
     * The scanning station that created the scan.
     */
    @IsNotEmpty()
    station: ScanStation;

    /**
     * The scan's creation timestamp.
     */
    @IsDateString()
    @IsNotEmpty()
    timestamp: string;

    /**
     * Creates a ResponseTrackScan object from a scan.
     * @param scan The trackSscan the response shall be build for.
     */
    public constructor(scan: TrackScan) {
        super(scan);
        this.track = new ResponseTrack(scan.track);
        this.card = scan.card;
        this.station = scan.station;
        this.timestamp = scan.timestamp;
    }
}
