| @@ -1,5 +1,5 @@ | ||||
| import { Entity, Column, ManyToOne } from "typeorm"; | ||||
| import { IsInt, IsNotEmpty, IsPositive,} from "class-validator"; | ||||
| import { Entity, Column, ManyToOne, ChildEntity } from "typeorm"; | ||||
| import { IsInt, IsNotEmpty, IsPositive, } from "class-validator"; | ||||
| import { Donation } from "./Donation"; | ||||
| import { Runner } from "./Runner"; | ||||
|  | ||||
| @@ -7,7 +7,7 @@ import { Runner } from "./Runner"; | ||||
|  * Defines a distance based donation. | ||||
|  * Here people donate a certain amout per kilometer | ||||
| */ | ||||
| @Entity() | ||||
| @ChildEntity() | ||||
| export class DistanceDonation extends Donation { | ||||
|   /** | ||||
|    * The runner associated. | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { PrimaryGeneratedColumn, Column, ManyToOne, Entity } from "typeorm"; | ||||
| import { PrimaryGeneratedColumn, Column, ManyToOne, Entity, TableInheritance } from "typeorm"; | ||||
| import { | ||||
|   IsInt, | ||||
|   IsNotEmpty, | ||||
| @@ -11,6 +11,7 @@ import { Participant } from "./Participant"; | ||||
|  * Defines the donation interface. | ||||
| */ | ||||
| @Entity() | ||||
| @TableInheritance({ column: { name: "type", type: "varchar" } }) | ||||
| export abstract class Donation { | ||||
|   /** | ||||
|    * Autogenerated unique id (primary key). | ||||
|   | ||||
| @@ -1,11 +1,11 @@ | ||||
| import { Entity, Column } from "typeorm"; | ||||
| import { Entity, Column, ChildEntity } from "typeorm"; | ||||
| import { IsBoolean } from "class-validator"; | ||||
| import { Participant } from "./Participant"; | ||||
|  | ||||
| /** | ||||
|  * Defines a donor. | ||||
| */ | ||||
| @Entity() | ||||
| @ChildEntity() | ||||
| export class Donor extends Participant { | ||||
|   /** | ||||
|    * Does this donor need a receipt?. | ||||
|   | ||||
| @@ -1,11 +1,11 @@ | ||||
| import { Entity, Column } from "typeorm"; | ||||
| import { IsInt, IsPositive,} from "class-validator"; | ||||
| import { Entity, Column, ChildEntity } from "typeorm"; | ||||
| import { IsInt, IsPositive, } from "class-validator"; | ||||
| import { Donation } from "./Donation"; | ||||
|  | ||||
| /** | ||||
|  * Defines a fixed donation. | ||||
| */ | ||||
| @Entity() | ||||
| @ChildEntity() | ||||
| export class FixedDonation extends Donation { | ||||
|  | ||||
|   /** | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { PrimaryGeneratedColumn, Column, OneToMany, ManyToOne, Entity } from "typeorm"; | ||||
| import { PrimaryGeneratedColumn, Column, OneToMany, ManyToOne, Entity, TableInheritance } from "typeorm"; | ||||
| import { | ||||
|   IsEmail, | ||||
|   IsInt, | ||||
| @@ -15,6 +15,7 @@ import { Donation } from "./Donation"; | ||||
|  * Defines the participant interface. | ||||
| */ | ||||
| @Entity() | ||||
| @TableInheritance({ column: { name: "type", type: "varchar" } }) | ||||
| export abstract class Participant { | ||||
|   /** | ||||
|    * Autogenerated unique id (primary key). | ||||
| @@ -36,7 +37,7 @@ export abstract class Participant { | ||||
|    * The participant's middle name. | ||||
|    * Optional | ||||
|    */ | ||||
|   @Column({nullable: true}) | ||||
|   @Column({ nullable: true }) | ||||
|   @IsOptional() | ||||
|   @IsString() | ||||
|   middlename?: string; | ||||
| @@ -60,7 +61,7 @@ export abstract class Participant { | ||||
|    * The participant's phone number. | ||||
|    * Optional | ||||
|    */ | ||||
|   @Column({nullable: true}) | ||||
|   @Column({ nullable: true }) | ||||
|   @IsOptional() | ||||
|   @IsPhoneNumber("DE") | ||||
|   phone?: string; | ||||
| @@ -69,7 +70,7 @@ export abstract class Participant { | ||||
|    * The participant's email address. | ||||
|    * Optional | ||||
|    */ | ||||
|   @Column({nullable: true}) | ||||
|   @Column({ nullable: true }) | ||||
|   @IsOptional() | ||||
|   @IsEmail() | ||||
|   email?: string; | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| import { Entity, Column, OneToMany, ManyToOne } from "typeorm"; | ||||
| import { IsInt, IsNotEmpty,} from "class-validator"; | ||||
| import { Entity, Column, OneToMany, ManyToOne, ChildEntity } from "typeorm"; | ||||
| import { IsInt, IsNotEmpty, } from "class-validator"; | ||||
| import { Participant } from "./Participant"; | ||||
| import { RunnerGroup } from "./RunnerGroup"; | ||||
| import { DistanceDonation } from "./DistanceDonation"; | ||||
| @@ -9,7 +9,7 @@ import { Scan } from "./Scan"; | ||||
| /** | ||||
|  * Defines a runner. | ||||
| */ | ||||
| @Entity() | ||||
| @ChildEntity() | ||||
| export class Runner extends Participant { | ||||
|   /** | ||||
|    * The runner's associated group. | ||||
| @@ -17,7 +17,7 @@ export class Runner extends Participant { | ||||
|   @IsNotEmpty() | ||||
|   @ManyToOne(() => RunnerGroup, group => group.runners, { nullable: true }) | ||||
|   group: RunnerGroup; | ||||
|    | ||||
|  | ||||
|   /** | ||||
|    * Used to link runners to donations. | ||||
|    */ | ||||
| @@ -36,9 +36,9 @@ export class Runner extends Participant { | ||||
|   @OneToMany(() => Scan, scan => scan.runner, { nullable: true }) | ||||
|   scans: Scan[]; | ||||
|  | ||||
|   @IsInt()  | ||||
|   public get distance() : number { | ||||
|   @IsInt() | ||||
|   public get distance(): number { | ||||
|     return this.scans.filter(scan => scan.valid === true).reduce((sum, current) => sum + current.distance, 0); | ||||
|   } | ||||
|    | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { PrimaryGeneratedColumn, Column, ManyToOne, Entity } from "typeorm"; | ||||
| import { PrimaryGeneratedColumn, Column, ManyToOne, Entity, TableInheritance } from "typeorm"; | ||||
| import { | ||||
|   IsBoolean, | ||||
|   IsInt, | ||||
| @@ -12,6 +12,7 @@ import { Runner } from "./Runner"; | ||||
|  * Defines the scan interface. | ||||
| */ | ||||
| @Entity() | ||||
| @TableInheritance({ column: { name: "type", type: "varchar" } }) | ||||
| export abstract class Scan { | ||||
|   /** | ||||
|    * Autogenerated unique id (primary key). | ||||
| @@ -35,10 +36,10 @@ export abstract class Scan { | ||||
|   @IsPositive() | ||||
|   abstract distance: number; | ||||
|  | ||||
|     /** | ||||
|    * Is the scan valid (for fraud reasons). | ||||
|    * Default: true | ||||
|    */ | ||||
|   /** | ||||
|  * Is the scan valid (for fraud reasons). | ||||
|  * Default: true | ||||
|  */ | ||||
|   @Column() | ||||
|   @IsBoolean() | ||||
|   valid: boolean = true; | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { PrimaryGeneratedColumn, Column, ManyToOne, Entity } from "typeorm"; | ||||
| import { PrimaryGeneratedColumn, Column, ManyToOne, Entity, ChildEntity } from "typeorm"; | ||||
| import { | ||||
|   IsBoolean, | ||||
|   IsDateString, | ||||
| @@ -16,7 +16,7 @@ import { ScanStation } from "./ScanStation"; | ||||
| /** | ||||
|  * Defines the scan interface. | ||||
| */ | ||||
| @Entity() | ||||
| @ChildEntity() | ||||
| export class TrackScan extends Scan { | ||||
|   /** | ||||
|    * The associated track. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user