improve calendar event creation
This commit is contained in:
@@ -148,10 +148,15 @@ export class CalendarService {
|
||||
|
||||
if (!freq) continue;
|
||||
|
||||
let untilDate: Date|undefined = undefined;
|
||||
// typeorm does not convert postgres type 'date' to javascript date object
|
||||
if (event?.recurrenceRule?.endDate) {
|
||||
untilDate = new Date(event.recurrenceRule.endDate);
|
||||
}
|
||||
const rrule = new RRule({
|
||||
freq,
|
||||
dtstart: event.startTime,
|
||||
until: event.recurrenceRule.endDate,
|
||||
until: untilDate,
|
||||
count: event.recurrenceRule.count,
|
||||
interval: event.recurrenceRule.interval,
|
||||
byweekday: byweekday?.length > 0 ? byweekday : undefined,
|
||||
@@ -199,7 +204,9 @@ export class CalendarService {
|
||||
// --- Other service methods (createEvent, etc.) remain unchanged ---
|
||||
|
||||
async createEvent(createEventDto: CreateEventDto): Promise<Event> {
|
||||
console.info('createEvent', createEventDto);
|
||||
console.log('[CalendarService] Entering createEvent method.');
|
||||
console.log('[CalendarService] Received DTO:', JSON.stringify(createEventDto, null, 2));
|
||||
|
||||
const { recurrenceRule, ...eventData } = createEventDto;
|
||||
|
||||
const newEvent: Omit<
|
||||
@@ -211,36 +218,52 @@ export class CalendarService {
|
||||
updatedAt: new Date(),
|
||||
timezone: 'Europe/Budapest',
|
||||
eventType: undefined,
|
||||
isRecurring: recurrenceRule ? true : false,
|
||||
isRecurring: !!recurrenceRule,
|
||||
};
|
||||
console.log('[CalendarService] Prepared base event object:', newEvent);
|
||||
|
||||
// check if event type exists
|
||||
if (eventData.eventTypeId) {
|
||||
console.info('eventTypeId found');
|
||||
console.log(`[CalendarService] Event has eventTypeId: ${eventData.eventTypeId}. Fetching event type...`);
|
||||
const eventType = await this.eventTypeRepository.findOneBy({
|
||||
id: eventData.eventTypeId,
|
||||
});
|
||||
if (!eventType) {
|
||||
console.error(`[CalendarService] Event type with ID ${eventData.eventTypeId} not found.`);
|
||||
throw new BadRequestException(
|
||||
{},
|
||||
'Event type not found ' + eventData.eventTypeId,
|
||||
);
|
||||
}
|
||||
newEvent.eventType = eventType;
|
||||
console.log('[CalendarService] Successfully attached event type:', eventType);
|
||||
} else {
|
||||
console.log('[CalendarService] No eventTypeId provided.');
|
||||
}
|
||||
|
||||
console.log('[CalendarService] Creating event entity...');
|
||||
const event = this.eventRepository.create(newEvent);
|
||||
|
||||
console.log('[CalendarService] Saving event entity to the database...');
|
||||
const savedEvent = await this.eventRepository.save(event);
|
||||
console.log('[CalendarService] Event saved successfully. Saved event ID:', savedEvent.id);
|
||||
|
||||
if (event.isRecurring && recurrenceRule) {
|
||||
if (savedEvent.isRecurring && recurrenceRule) {
|
||||
console.log(`[CalendarService] Event is recurring. Creating recurrence rule...`);
|
||||
const rule = this.recurrenceRuleRepository.create({
|
||||
...recurrenceRule,
|
||||
event: savedEvent,
|
||||
});
|
||||
await this.recurrenceRuleRepository.save(rule);
|
||||
console.log('[CalendarService] Recurrence rule saved successfully.');
|
||||
} else {
|
||||
console.log('[CalendarService] Event is not recurring or no recurrence rule provided.');
|
||||
}
|
||||
|
||||
return this.getEventById(savedEvent.id);
|
||||
console.log(`[CalendarService] Fetching final event by ID ${savedEvent.id} to return.`);
|
||||
const finalEvent = await this.getEventById(savedEvent.id);
|
||||
console.log('[CalendarService] Exiting createEvent method.');
|
||||
return finalEvent;
|
||||
}
|
||||
|
||||
async createException(
|
||||
|
||||
@@ -52,7 +52,10 @@ export class EventsController {
|
||||
}
|
||||
|
||||
@Patch(':id')
|
||||
update(@Param('id', ParseIntPipe) id: number, @Body() updateEventDto: UpdateEventDto) {
|
||||
update(
|
||||
@Param('id', ParseIntPipe) id: number,
|
||||
@Body() updateEventDto: UpdateEventDto,
|
||||
) {
|
||||
return this.eventsService.update(id, updateEventDto);
|
||||
}
|
||||
|
||||
@@ -60,4 +63,4 @@ export class EventsController {
|
||||
remove(@Param('id', ParseIntPipe) id: number) {
|
||||
return this.eventsService.remove(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user