add calendar dashboard edit
This commit is contained in:
parent
fa098f4a1b
commit
f740c11685
@ -33,7 +33,7 @@
|
||||
|
||||
<div class="form-control"><label class="label cursor-pointer justify-start gap-4">
|
||||
<span class="label-text">Ismétlődő</span>
|
||||
<input type="checkbox" formControlName="is_recurring" class="checkbox" />
|
||||
<input type="checkbox" formControlName="isRecurring" class="checkbox" />
|
||||
</label></div>
|
||||
|
||||
@if (isRecurring?.value === true) {
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -22,7 +22,7 @@ export interface EventFormDTO {
|
||||
description?: string;
|
||||
start_time?: Date;
|
||||
end_time?: Date;
|
||||
is_recurring: boolean;
|
||||
isRecurring: boolean;
|
||||
recurrenceRule?: RecurrenceRuleDto;
|
||||
}
|
||||
|
||||
|
||||
@ -374,18 +374,20 @@ 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<RecurrenceRule>);
|
||||
}
|
||||
|
||||
if (updateRRule) {
|
||||
// Update the properties on the relation object
|
||||
event.recurrenceRule.frequency = updateRRule.frequency;
|
||||
event.recurrenceRule.interval = updateRRule.interval;
|
||||
@ -393,6 +395,12 @@ export class CalendarService {
|
||||
event.recurrenceRule.endDate = updateRRule.endDate as Date;
|
||||
event.recurrenceRule.count = updateRRule.count as number;
|
||||
}
|
||||
} else {
|
||||
if (event.recurrenceRule) {
|
||||
await this.recurrenceRuleRepository.remove(event.recurrenceRule);
|
||||
event.recurrenceRule = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
// 5. Use SAVE instead of UPDATE
|
||||
// This handles the relations correctly and prevents the "one-to-many" error.
|
||||
|
||||
@ -58,7 +58,7 @@ export class Event {
|
||||
@OneToOne(() => RecurrenceRule, (rule) => rule.event, {
|
||||
cascade: true, // Automatically save/update recurrence rule when event is saved
|
||||
})
|
||||
recurrenceRule: RecurrenceRule;
|
||||
recurrenceRule?: RecurrenceRule;
|
||||
|
||||
@OneToMany(() => EventException, (exception) => exception.event, {
|
||||
cascade: true, // Automatically save/update exceptions when event is saved
|
||||
|
||||
Loading…
Reference in New Issue
Block a user