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">
|
<div class="form-control"><label class="label cursor-pointer justify-start gap-4">
|
||||||
<span class="label-text">Ismétlődő</span>
|
<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>
|
</label></div>
|
||||||
|
|
||||||
@if (isRecurring?.value === true) {
|
@if (isRecurring?.value === true) {
|
||||||
|
|||||||
@ -76,7 +76,7 @@ export class CreateEventForm implements OnInit {
|
|||||||
description: [null],
|
description: [null],
|
||||||
startTime: [null, Validators.required],
|
startTime: [null, Validators.required],
|
||||||
endTime: [null, Validators.required],
|
endTime: [null, Validators.required],
|
||||||
is_recurring: [false],
|
isRecurring: [false],
|
||||||
recurrenceRule: this.fb.group({
|
recurrenceRule: this.fb.group({
|
||||||
frequency: ['DAILY'],//'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY';
|
frequency: ['DAILY'],//'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY';
|
||||||
interval: [1],//number
|
interval: [1],//number
|
||||||
@ -97,6 +97,16 @@ export class CreateEventForm implements OnInit {
|
|||||||
const interval = recurringRule?.get('interval');
|
const interval = recurringRule?.get('interval');
|
||||||
|
|
||||||
if (isRecurring) {
|
if (isRecurring) {
|
||||||
|
if (this.frequency?.value === null || this.frequency?.value === undefined ){
|
||||||
|
this.form.patchValue(
|
||||||
|
{
|
||||||
|
recurrenceRule: {
|
||||||
|
frequency: 'DAILY',
|
||||||
|
interval: 1,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
frequency?.setValidators([Validators.required]);
|
frequency?.setValidators([Validators.required]);
|
||||||
interval?.setValidators([Validators.required, Validators.min(1)]);
|
interval?.setValidators([Validators.required, Validators.min(1)]);
|
||||||
} else {
|
} else {
|
||||||
@ -139,7 +149,7 @@ export class CreateEventForm implements OnInit {
|
|||||||
startTime,
|
startTime,
|
||||||
endTime,
|
endTime,
|
||||||
eventTypeId: event?.eventType?.id,
|
eventTypeId: event?.eventType?.id,
|
||||||
is_recurring: event.isRecurring ,
|
isRecurring: event.isRecurring ,
|
||||||
recurrenceRule: {
|
recurrenceRule: {
|
||||||
frequency: event.recurrenceRule?.frequency,
|
frequency: event.recurrenceRule?.frequency,
|
||||||
interval: event.recurrenceRule?.interval,
|
interval: event.recurrenceRule?.interval,
|
||||||
@ -216,7 +226,7 @@ export class CreateEventForm implements OnInit {
|
|||||||
|
|
||||||
const payload: EventFormDTO = { ...this.form.value };
|
const payload: EventFormDTO = { ...this.form.value };
|
||||||
|
|
||||||
if (!payload.is_recurring) {
|
if (!payload.isRecurring) {
|
||||||
delete payload.recurrenceRule;
|
delete payload.recurrenceRule;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,7 +274,7 @@ export class CreateEventForm implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get isRecurring() {
|
get isRecurring() {
|
||||||
return this.form.get('is_recurring');
|
return this.form.get('isRecurring');
|
||||||
}
|
}
|
||||||
|
|
||||||
get recurringRule() {
|
get recurringRule() {
|
||||||
|
|||||||
@ -22,7 +22,7 @@ export interface EventFormDTO {
|
|||||||
description?: string;
|
description?: string;
|
||||||
start_time?: Date;
|
start_time?: Date;
|
||||||
end_time?: Date;
|
end_time?: Date;
|
||||||
is_recurring: boolean;
|
isRecurring: boolean;
|
||||||
recurrenceRule?: RecurrenceRuleDto;
|
recurrenceRule?: RecurrenceRuleDto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -374,24 +374,32 @@ export class CalendarService {
|
|||||||
event.eventType = undefined;
|
event.eventType = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. Handle Recurrence Rule
|
// await this.eventRepository.save(event);
|
||||||
// Because your entity has @OneToOne(..., { cascade: true }),
|
|
||||||
// modifying event.recurrenceRule and calling eventRepository.save(event)
|
if (updateEventDto.isRecurring) {
|
||||||
// will automatically save/update the rule.
|
|
||||||
if (event.isRecurring && updateEventDto.recurrenceRule) {
|
|
||||||
const updateRRule = updateEventDto.recurrenceRule;
|
const updateRRule = updateEventDto.recurrenceRule;
|
||||||
|
|
||||||
// If no rule exists yet, initialize a new one
|
|
||||||
if (!event.recurrenceRule) {
|
if (!event.recurrenceRule) {
|
||||||
event.recurrenceRule = this.recurrenceRuleRepository.create({});
|
event.recurrenceRule = this.recurrenceRuleRepository.create({
|
||||||
|
frequency: 'DAILY',
|
||||||
|
interval: 1,
|
||||||
|
count: 1,
|
||||||
|
} as Partial<RecurrenceRule>);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the properties on the relation object
|
if (updateRRule) {
|
||||||
event.recurrenceRule.frequency = updateRRule.frequency;
|
// Update the properties on the relation object
|
||||||
event.recurrenceRule.interval = updateRRule.interval;
|
event.recurrenceRule.frequency = updateRRule.frequency;
|
||||||
event.recurrenceRule.byDay = updateRRule.byDay as string;
|
event.recurrenceRule.interval = updateRRule.interval;
|
||||||
event.recurrenceRule.endDate = updateRRule.endDate as Date;
|
event.recurrenceRule.byDay = updateRRule.byDay as string;
|
||||||
event.recurrenceRule.count = updateRRule.count as number;
|
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
|
// 5. Use SAVE instead of UPDATE
|
||||||
|
|||||||
@ -58,7 +58,7 @@ export class Event {
|
|||||||
@OneToOne(() => RecurrenceRule, (rule) => rule.event, {
|
@OneToOne(() => RecurrenceRule, (rule) => rule.event, {
|
||||||
cascade: true, // Automatically save/update recurrence rule when event is saved
|
cascade: true, // Automatically save/update recurrence rule when event is saved
|
||||||
})
|
})
|
||||||
recurrenceRule: RecurrenceRule;
|
recurrenceRule?: RecurrenceRule;
|
||||||
|
|
||||||
@OneToMany(() => EventException, (exception) => exception.event, {
|
@OneToMany(() => EventException, (exception) => exception.event, {
|
||||||
cascade: true, // Automatically save/update exceptions when event is saved
|
cascade: true, // Automatically save/update exceptions when event is saved
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user