diff --git a/admin/src/app/features/calendar/components/create-event-form/create-event-form.html b/admin/src/app/features/calendar/components/create-event-form/create-event-form.html index ef8c8ad..929005e 100644 --- a/admin/src/app/features/calendar/components/create-event-form/create-event-form.html +++ b/admin/src/app/features/calendar/components/create-event-form/create-event-form.html @@ -33,7 +33,7 @@
@if (isRecurring?.value === true) { diff --git a/admin/src/app/features/calendar/components/create-event-form/create-event-form.ts b/admin/src/app/features/calendar/components/create-event-form/create-event-form.ts index 5709b6b..ad97b48 100644 --- a/admin/src/app/features/calendar/components/create-event-form/create-event-form.ts +++ b/admin/src/app/features/calendar/components/create-event-form/create-event-form.ts @@ -76,7 +76,7 @@ export class CreateEventForm implements OnInit { description: [null], startTime: [null, Validators.required], endTime: [null, Validators.required], - is_recurring: [false], + isRecurring: [false], recurrenceRule: this.fb.group({ frequency: ['DAILY'],//'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY'; interval: [1],//number @@ -97,6 +97,16 @@ export class CreateEventForm implements OnInit { const interval = recurringRule?.get('interval'); if (isRecurring) { + if (this.frequency?.value === null || this.frequency?.value === undefined ){ + this.form.patchValue( + { + recurrenceRule: { + frequency: 'DAILY', + interval: 1, + }, + } + ) + } frequency?.setValidators([Validators.required]); interval?.setValidators([Validators.required, Validators.min(1)]); } else { @@ -139,7 +149,7 @@ export class CreateEventForm implements OnInit { startTime, endTime, eventTypeId: event?.eventType?.id, - is_recurring: event.isRecurring , + isRecurring: event.isRecurring , recurrenceRule: { frequency: event.recurrenceRule?.frequency, interval: event.recurrenceRule?.interval, @@ -216,7 +226,7 @@ export class CreateEventForm implements OnInit { const payload: EventFormDTO = { ...this.form.value }; - if (!payload.is_recurring) { + if (!payload.isRecurring) { delete payload.recurrenceRule; } @@ -264,7 +274,7 @@ export class CreateEventForm implements OnInit { } get isRecurring() { - return this.form.get('is_recurring'); + return this.form.get('isRecurring'); } get recurringRule() { diff --git a/admin/src/app/features/calendar/models/event-form-dto.model.ts b/admin/src/app/features/calendar/models/event-form-dto.model.ts index 0968091..3d6ae2e 100644 --- a/admin/src/app/features/calendar/models/event-form-dto.model.ts +++ b/admin/src/app/features/calendar/models/event-form-dto.model.ts @@ -22,7 +22,7 @@ export interface EventFormDTO { description?: string; start_time?: Date; end_time?: Date; - is_recurring: boolean; + isRecurring: boolean; recurrenceRule?: RecurrenceRuleDto; } diff --git a/server/src/calendar/calendar.service.ts b/server/src/calendar/calendar.service.ts index 46e94a0..29e3fb6 100644 --- a/server/src/calendar/calendar.service.ts +++ b/server/src/calendar/calendar.service.ts @@ -374,24 +374,32 @@ export class CalendarService { event.eventType = undefined; } - // 4. Handle Recurrence Rule - // Because your entity has @OneToOne(..., { cascade: true }), - // modifying event.recurrenceRule and calling eventRepository.save(event) - // will automatically save/update the rule. - if (event.isRecurring && updateEventDto.recurrenceRule) { + // await this.eventRepository.save(event); + + if (updateEventDto.isRecurring) { const updateRRule = updateEventDto.recurrenceRule; - // If no rule exists yet, initialize a new one if (!event.recurrenceRule) { - event.recurrenceRule = this.recurrenceRuleRepository.create({}); + event.recurrenceRule = this.recurrenceRuleRepository.create({ + frequency: 'DAILY', + interval: 1, + count: 1, + } as Partial