62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
import { IsBoolean, IsEAN, IsInt, IsNotEmpty, IsObject, IsString } from "class-validator";
|
|
import { RunnerCard } from '../entities/RunnerCard';
|
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
|
import { IResponse } from './IResponse';
|
|
import { ResponseRunner } from './ResponseRunner';
|
|
|
|
/**
|
|
* Defines the runner card response.
|
|
*/
|
|
export class ResponseRunnerCard implements IResponse {
|
|
/**
|
|
* The responseType.
|
|
* This contains the type of class/entity this response contains.
|
|
*/
|
|
responseType: ResponseObjectType = ResponseObjectType.RUNNERCARD;
|
|
|
|
/**
|
|
* The card's id.
|
|
*/
|
|
@IsInt()
|
|
id: number;;
|
|
|
|
/**
|
|
* The card's associated runner.
|
|
* This is important to link scans to runners.
|
|
*/
|
|
@IsObject()
|
|
runner: ResponseRunner | null;
|
|
|
|
/**
|
|
* The card's code.
|
|
*/
|
|
@IsEAN()
|
|
@IsString()
|
|
@IsNotEmpty()
|
|
code: string;
|
|
|
|
/**
|
|
* Is the enabled valid (for fraud reasons).
|
|
* The determination of validity will work differently for every child class.
|
|
*/
|
|
@IsBoolean()
|
|
enabled: boolean = true;
|
|
|
|
/**
|
|
* Creates a ResponseRunnerCard object from a runner card.
|
|
* @param card The card the response shall be build for.
|
|
*/
|
|
public constructor(card: RunnerCard) {
|
|
this.id = card.id;
|
|
if (!card.runner) { this.runner = null }
|
|
else { this.runner = card.runner.toResponse(); }
|
|
try {
|
|
this.code = card.code;
|
|
} catch (error) {
|
|
this.code = "0000000000000"
|
|
}
|
|
|
|
this.enabled = card.enabled;
|
|
}
|
|
}
|