folder structure

This commit is contained in:
Julian Krauser 2025-01-05 14:14:00 +01:00
parent 5d3f8ea46a
commit 84e2ec72ac
242 changed files with 635 additions and 635 deletions

View file

@ -0,0 +1,56 @@
import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm";
import { member } from "./member";
import { communicationType } from "../../settings/communicationType";
@Entity()
export class communication {
@PrimaryColumn({ generated: "increment", type: "int" })
id: number;
@Column({ type: "boolean", default: false })
preferred: boolean;
@Column({ type: "boolean", default: false })
isSMSAlarming: boolean;
@Column({ type: "varchar", length: 255, nullable: true })
mobile: string;
@Column({ type: "varchar", length: 255, nullable: true })
email: string;
@Column({ type: "varchar", length: 255, nullable: true })
postalCode: string;
@Column({ type: "varchar", length: 255, nullable: true })
city: string;
@Column({ type: "varchar", length: 255, nullable: true })
street: string;
@Column({ type: "integer", nullable: true })
streetNumber: number;
@Column({ type: "varchar", length: 255, nullable: true })
streetNumberAddition: string;
@Column()
memberId: number;
@Column()
typeId: number;
@ManyToOne(() => communicationType, (communicationType) => communicationType.communications, {
nullable: false,
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
type: communicationType;
@ManyToOne(() => member, (member) => member.awards, {
nullable: false,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
member: member;
}

View file

@ -0,0 +1,72 @@
import { Column, Entity, JoinColumn, ManyToOne, OneToMany, OneToOne, PrimaryColumn } from "typeorm";
import { Salutation } from "../../../enums/salutation";
import { membership } from "./membership";
import { memberAwards } from "./memberAwards";
import { memberQualifications } from "./memberQualifications";
import { memberExecutivePositions } from "./memberExecutivePositions";
import { communication } from "./communication";
import { CommunicationViewModel } from "../../../viewmodel/admin/club/member/communication.models";
@Entity()
export class member {
@PrimaryColumn({ generated: "increment", type: "int" })
id: number;
@Column({
type: "varchar",
length: "255",
default: Salutation.none.toString(),
transformer: {
to(value: Salutation) {
return value.toString();
},
from(value: string) {
return Salutation[value as keyof typeof Salutation];
},
},
})
salutation: Salutation;
@Column({ type: "varchar", length: 255 })
firstname: string;
@Column({ type: "varchar", length: 255 })
lastname: string;
@Column({ type: "varchar", length: 255 })
nameaffix: string;
@Column({ type: "date" })
birthdate: Date;
@Column({ type: "varchar", length: 255, unique: true, nullable: true })
internalId?: string;
@OneToMany(() => communication, (communications) => communications.member)
communications: communication[];
@OneToOne(() => communication, {
nullable: true,
onDelete: "SET NULL",
onUpdate: "RESTRICT",
})
@JoinColumn()
sendNewsletter?: communication;
@OneToMany(() => membership, (membership) => membership.member)
memberships: membership[];
@OneToMany(() => memberAwards, (awards) => awards.member)
awards: memberAwards[];
@OneToMany(() => memberExecutivePositions, (executivePositions) => executivePositions.member)
positions: memberExecutivePositions[];
@OneToMany(() => memberQualifications, (qualifications) => qualifications.member)
qualifications: memberQualifications[];
firstMembershipEntry?: membership;
lastMembershipEntry?: membership;
preferredCommunication?: Array<communication>;
smsAlarming?: Array<communication>;
}

View file

@ -0,0 +1,38 @@
import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm";
import { member } from "./member";
import { award } from "../../settings/award";
@Entity()
export class memberAwards {
@PrimaryColumn({ generated: "increment", type: "int" })
id: number;
@Column({ type: "boolean", default: true })
given: boolean;
@Column({ type: "varchar", length: 255, nullable: true })
note?: string;
@Column({ type: "date" })
date: Date;
@Column()
memberId: number;
@Column()
awardId: number;
@ManyToOne(() => member, (member) => member.awards, {
nullable: false,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
member: member;
@ManyToOne(() => award, (award) => award.members, {
nullable: false,
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
award: award;
}

View file

@ -0,0 +1,38 @@
import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm";
import { member } from "./member";
import { executivePosition } from "../../settings/executivePosition";
@Entity()
export class memberExecutivePositions {
@PrimaryColumn({ generated: "increment", type: "int" })
id: number;
@Column({ type: "varchar", length: 255, nullable: true })
note?: string;
@Column({ type: "date" })
start: Date;
@Column({ type: "date", nullable: true })
end?: Date;
@Column()
memberId: number;
@Column()
executivePositionId: number;
@ManyToOne(() => member, (member) => member.awards, {
nullable: false,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
member: member;
@ManyToOne(() => executivePosition, (executivePosition) => executivePosition.members, {
nullable: false,
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
executivePosition: executivePosition;
}

View file

@ -0,0 +1,41 @@
import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm";
import { member } from "./member";
import { qualification } from "../../settings/qualification";
@Entity()
export class memberQualifications {
@PrimaryColumn({ generated: "increment", type: "int" })
id: number;
@Column({ type: "varchar", length: 255, nullable: true })
note?: string;
@Column({ type: "date" })
start: Date;
@Column({ type: "date", nullable: true })
end?: Date;
@Column({ type: "varchar", length: 255, nullable: true })
terminationReason?: string;
@Column()
memberId: number;
@Column()
qualificationId: number;
@ManyToOne(() => member, (member) => member.awards, {
nullable: false,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
member: member;
@ManyToOne(() => qualification, (qualification) => qualification.members, {
nullable: false,
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
qualification: qualification;
}

View file

@ -0,0 +1,46 @@
import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm";
import { member } from "./member";
import { membershipStatus } from "../../settings/membershipStatus";
@Entity()
export class membership {
@PrimaryColumn({ generated: "increment", type: "int" })
id: number;
/**
* @deprecated
*/
@Column({ type: "varchar", length: 255, unique: true, nullable: true })
internalId?: string;
@Column({ type: "date" })
start: Date;
@Column({ type: "date", nullable: true })
end?: Date;
@Column({ type: "varchar", length: 255, nullable: true })
terminationReason?: string;
@Column()
memberId: number;
@Column()
statusId: number;
@ManyToOne(() => member, (member) => member.memberships, {
nullable: false,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
@JoinColumn()
member: member;
@ManyToOne(() => membershipStatus, (membershipStatus) => membershipStatus.memberships, {
nullable: false,
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
@JoinColumn()
status: membershipStatus;
}