diff --git a/src/models/Donor.ts b/src/models/Donor.ts index 0ed60da..db80082 100644 --- a/src/models/Donor.ts +++ b/src/models/Donor.ts @@ -13,5 +13,5 @@ export class Donor extends Participant { */ @Column() @IsBoolean() - receiptNeeded = false; + receiptNeeded: boolean; } \ No newline at end of file diff --git a/src/models/GroupContact.ts b/src/models/GroupContact.ts index 3ed4e63..58a07a7 100644 --- a/src/models/GroupContact.ts +++ b/src/models/GroupContact.ts @@ -1,12 +1,86 @@ -import { Entity, OneToMany } from "typeorm"; -import { Participant } from "./Participant"; +import { PrimaryGeneratedColumn, Column, OneToMany, ManyToOne, Entity } from "typeorm"; +import { + IsEmail, + IsInt, + IsNotEmpty, + IsOptional, + IsPhoneNumber, + IsString, +} from "class-validator"; +import { Address } from "./Address"; +import { Donation } from "./Donation"; import { RunnerGroup } from "./RunnerGroup"; /** * Defines a group's contact. */ @Entity() -export class GroupContact extends Participant{ +export class GroupContact { + /** + * Autogenerated unique id (primary key). + */ + @PrimaryGeneratedColumn() + @IsOptional() + @IsInt() + id: number; + + /** + * The contact's first name. + */ + @Column() + @IsNotEmpty() + @IsString() + firstname: string; + + /** + * The contact's middle name. + * Optional + */ + @Column() + @IsOptional() + @IsString() + middlename?: string; + + /** + * The contact's last name. + */ + @Column() + @IsOptional() + @IsString() + lastname: string; + + /** + * The contact's address. + * Optional + */ + @IsOptional() + @ManyToOne(() => Address, address => address.participants) + address?: Address; + + /** + * The contact's phone number. + * Optional + */ + @Column() + @IsOptional() + @IsPhoneNumber("DE") + phone?: string; + + /** + * The contact's email address. + * Optional + */ + @Column() + @IsOptional() + @IsEmail() + email?: string; + + /** + * Used to link the contact as the donor of a donation. + */ + @OneToMany(() => Donation, donation => donation.donor) + donations: Donation[]; + /** * Used to link runners to donations. */ diff --git a/src/models/RunnerCard.ts b/src/models/RunnerCard.ts index e751506..2796f4c 100644 --- a/src/models/RunnerCard.ts +++ b/src/models/RunnerCard.ts @@ -45,7 +45,7 @@ export class RunnerCard { */ @Column() @IsBoolean() - enabled = true; + enabled: boolean; /** * Used to link cards to a track scans. diff --git a/src/models/RunnerGroup.ts b/src/models/RunnerGroup.ts index 52f478f..a7c199b 100644 --- a/src/models/RunnerGroup.ts +++ b/src/models/RunnerGroup.ts @@ -43,10 +43,4 @@ export abstract class RunnerGroup { */ @OneToMany(() => Runner, runner => runner.group) runners: Runner[]; - - /** - * Used to link teams to runner groups. - */ - @OneToMany(() => RunnerTeam, team => team.parentGroup) - teams: RunnerTeam[]; } \ No newline at end of file diff --git a/src/models/RunnerOrganisation.ts b/src/models/RunnerOrganisation.ts index 22fe8a5..958b363 100644 --- a/src/models/RunnerOrganisation.ts +++ b/src/models/RunnerOrganisation.ts @@ -1,7 +1,8 @@ -import { Entity, Column, ManyToOne } from "typeorm"; +import { Entity, Column, ManyToOne, OneToMany } from "typeorm"; import { IsOptional,} from "class-validator"; import { RunnerGroup } from "./RunnerGroup"; import { Address } from "./Address"; +import { RunnerTeam } from "./RunnerTeam"; /** * Defines a runner organisation (business or school for example). @@ -16,4 +17,10 @@ export class RunnerOrganisation extends RunnerGroup { @IsOptional() @ManyToOne(() => Address, address => address.groups) address?: Address; + + /** + * Used to link teams to runner groups. + */ + @OneToMany(() => RunnerTeam, team => team.parentGroup) + teams: RunnerTeam[]; } \ No newline at end of file diff --git a/src/models/RunnerTeam.ts b/src/models/RunnerTeam.ts index e716e27..f12c5eb 100644 --- a/src/models/RunnerTeam.ts +++ b/src/models/RunnerTeam.ts @@ -1,6 +1,7 @@ import { Entity, Column, ManyToOne } from "typeorm"; import { IsNotEmpty } from "class-validator"; import { RunnerGroup } from "./RunnerGroup"; +import { RunnerOrganisation } from "./RunnerOrganisation"; /** * Defines a runner team (class or deparment for example). @@ -13,6 +14,6 @@ export class RunnerTeam extends RunnerGroup { * Optional */ @IsNotEmpty() - @ManyToOne(() => RunnerGroup, group => group.teams) - parentGroup?: RunnerGroup; + @ManyToOne(() => RunnerOrganisation, org => org.teams) + parentGroup?: RunnerOrganisation; } \ No newline at end of file diff --git a/src/models/Scan.ts b/src/models/Scan.ts index 6c2dccc..db41242 100644 --- a/src/models/Scan.ts +++ b/src/models/Scan.ts @@ -40,5 +40,5 @@ export abstract class Scan { */ @Column() @IsBoolean() - valid = true; + valid: boolean; } diff --git a/src/models/ScanStation.ts b/src/models/ScanStation.ts index c89a3a4..4cd0246 100644 --- a/src/models/ScanStation.ts +++ b/src/models/ScanStation.ts @@ -50,7 +50,7 @@ export class ScanStation { */ @Column() @IsBoolean() - enabled = true; + enabled: boolean; /** * Used to link track scans to a scan station.