From be029ee054bac4464462d9617d0570e0449ce701 Mon Sep 17 00:00:00 2001 From: Schneider Roland Date: Fri, 2 Jan 2026 13:11:26 +0100 Subject: [PATCH] feat: Add max slot count to event type entity, migration, and admin form. --- .../event-type-form.component.html | 23 ++++++++++++------- .../event-type-form.component.ts | 21 +++++++++-------- .../event-type/models/event-type.model.ts | 1 + server/src/entity/event-type.entity.ts | 7 +++++- ...308125-add_max_slot_count_to_event_type.ts | 15 ++++++++++++ 5 files changed, 48 insertions(+), 19 deletions(-) create mode 100644 server/src/migration/1763106308125-add_max_slot_count_to_event_type.ts diff --git a/admin/src/app/features/event-type/components/event-type-form/event-type-form.component.html b/admin/src/app/features/event-type/components/event-type-form/event-type-form.component.html index 0b4149d..b9fb984 100644 --- a/admin/src/app/features/event-type/components/event-type-form/event-type-form.component.html +++ b/admin/src/app/features/event-type/components/event-type-form/event-type-form.component.html @@ -10,15 +10,22 @@
-
-
+
+ +
-
-
+
+ +
-
-
+
+ +
+ +
+ +
Cancel @@ -29,4 +36,4 @@
- + \ No newline at end of file diff --git a/admin/src/app/features/event-type/components/event-type-form/event-type-form.component.ts b/admin/src/app/features/event-type/components/event-type-form/event-type-form.component.ts index 86dcb94..8fa4107 100644 --- a/admin/src/app/features/event-type/components/event-type-form/event-type-form.component.ts +++ b/admin/src/app/features/event-type/components/event-type-form/event-type-form.component.ts @@ -33,7 +33,7 @@ export class EventTypeFormComponent implements OnInit { isEditMode = false; id: number | null = null; - private numericFields = []; + private numericFields = ['max_slot_count']; constructor( private fb: FormBuilder, @@ -43,9 +43,10 @@ export class EventTypeFormComponent implements OnInit { private cdr: ChangeDetectorRef ) { this.form = this.fb.group({ - name: [null], - description: [null], - color: [null] + name: [null], + description: [null], + color: [null], + max_slot_count: [null] }); } @@ -89,15 +90,15 @@ export class EventTypeFormComponent implements OnInit { const payload = { ...this.form.value }; - for (const field of this.numericFields) { - if (payload[field] != null && payload[field] !== '') { - payload[field] = parseFloat(payload[field]); - } - } + for (const field of this.numericFields) { + if (payload[field] != null && payload[field] !== '') { + payload[field] = parseFloat(payload[field]); + } + } let action$: Observable; - if (this.isEditMode && this.id) { + if (this.isEditMode && this.id) { action$ = this.eventTypeService.update(this.id, payload); } else { action$ = this.eventTypeService.create(payload); diff --git a/admin/src/app/features/event-type/models/event-type.model.ts b/admin/src/app/features/event-type/models/event-type.model.ts index 8fd02bb..f925d1e 100644 --- a/admin/src/app/features/event-type/models/event-type.model.ts +++ b/admin/src/app/features/event-type/models/event-type.model.ts @@ -6,6 +6,7 @@ export interface EventType { name: string; description: string; color: string; + max_slot_count?: number; } export interface PaginatedResponse { diff --git a/server/src/entity/event-type.entity.ts b/server/src/entity/event-type.entity.ts index 166e2b6..24b0774 100644 --- a/server/src/entity/event-type.entity.ts +++ b/server/src/entity/event-type.entity.ts @@ -2,7 +2,7 @@ import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm'; import { Event } from './event.entity'; -import { IsString, IsOptional } from 'class-validator'; +import { IsString, IsOptional, IsNumber } from 'class-validator'; @Entity({ name: 'event_type' }) export class EventType { @@ -23,6 +23,11 @@ export class EventType { @IsString() color: string | null; + @Column({ type: 'integer', nullable: true }) + @IsOptional() + @IsNumber() + max_slot_count: number | null; + @OneToMany(() => Event, (event) => event.eventType) events: Event[]; } diff --git a/server/src/migration/1763106308125-add_max_slot_count_to_event_type.ts b/server/src/migration/1763106308125-add_max_slot_count_to_event_type.ts new file mode 100644 index 0000000..cfdc3c0 --- /dev/null +++ b/server/src/migration/1763106308125-add_max_slot_count_to_event_type.ts @@ -0,0 +1,15 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class AddMaxSlotCountToEventType1763106308125 implements MigrationInterface { + name = 'AddMaxSlotCountToEventType1763106308125'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "event_type" ADD COLUMN "max_slot_count" integer NULL`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "event_type" DROP COLUMN "max_slot_count"`); + } +}