90
									
								
								src/models/entities/GroupContact.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								src/models/entities/GroupContact.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,90 @@ | ||||
| import { PrimaryGeneratedColumn, Column, OneToMany, ManyToOne, Entity } from "typeorm"; | ||||
| import { | ||||
|   IsEmail, | ||||
|   IsInt, | ||||
|   IsNotEmpty, | ||||
|   IsOptional, | ||||
|   IsPhoneNumber, | ||||
|   IsPositive, | ||||
|   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 { | ||||
|     /** | ||||
|    * 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({nullable: true}) | ||||
|   @IsOptional() | ||||
|   @IsString() | ||||
|   middlename?: string; | ||||
|  | ||||
|   /** | ||||
|    * The contact's last name. | ||||
|    */ | ||||
|   @Column() | ||||
|   @IsNotEmpty() | ||||
|   @IsString() | ||||
|   lastname: string; | ||||
|  | ||||
|   /** | ||||
|    * The contact's address. | ||||
|    * Optional | ||||
|    */ | ||||
|   @IsOptional() | ||||
|   @ManyToOne(() => Address, address => address.participants, { nullable: true }) | ||||
|   address?: Address; | ||||
|  | ||||
|   /** | ||||
|    * The contact's phone number. | ||||
|    * Optional | ||||
|    */ | ||||
|   @Column({nullable: true}) | ||||
|   @IsOptional() | ||||
|   @IsPhoneNumber("DE") | ||||
|   phone?: string; | ||||
|  | ||||
|   /** | ||||
|    * The contact's email address. | ||||
|    * Optional | ||||
|    */ | ||||
|   @Column({nullable: true}) | ||||
|   @IsOptional() | ||||
|   @IsEmail() | ||||
|   email?: string; | ||||
|  | ||||
|   /** | ||||
|    * Used to link the contact as the donor of a donation. | ||||
|    */ | ||||
|   @OneToMany(() => Donation, donation => donation.donor, { nullable: true }) | ||||
|   donations: Donation[]; | ||||
|  | ||||
|   /** | ||||
|     * Used to link runners to donations. | ||||
|     */ | ||||
|   @OneToMany(() => RunnerGroup, group => group.contact, { nullable: true }) | ||||
|   groups: RunnerGroup[]; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user