HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //proc/1233/root/home/arjun/projects/good-life-be/helper/eventsUtils.js
export const preprocessEvents = async (events, userId) => {
  if (typeof events !== 'object' || events === null) {
    throw new Error('Invalid events input. Expected an object.');
  }

  const transformedEvents = [];

  Object.entries(events).forEach(([date, { events }]) => {
    const eventsDetails = events?.map((e) => ({
      ...e.event_details,
      conflict: !!e?.conflict, // Convert to boolean
      conflict_reason: e?.conflict_reason || null, // Add conflict_reason directly here
    }));

    eventsDetails?.forEach((event) => {
      const conflictReason = event?.conflict_reason || null;

      transformedEvents.push({
        user_id: userId,
        date,
        event_title: event?.event_title || 'Untitled Event',
        event_description:
          event?.event_description || 'No additional information available.',
        event_name: event?.event_name || 'Unnamed Event',
        start_time: event?.start_time,
        end_time: event?.end_time,
        recurring: event?.recurring || false,
        recurrence_pattern: event?.recurrence_pattern || '',
        category: event?.category || 'General',
        subCategory: event?.subCategory || null,
        ai_activity: event?.ai_activity || false,
        ai_suggested_activity: event?.ai_suggested_activity || null,
        bufferTime: event?.bufferTime || 0,
        conflict: event?.conflict || false,
        conflict_reason: conflictReason,
        createdAt: new Date(),
        updatedAt: new Date(),
        is_vacation_event: event?.is_vacation_event,
      });
    });
  });

  // Process to handle 'Vacation Planning' subCategory
  const eventsGroupedByDate = transformedEvents.reduce((acc, event) => {
    acc[event.date] = acc[event.date] || [];
    acc[event.date].push(event);
    return acc;
  }, {});

  Object.values(eventsGroupedByDate).forEach((eventsForDate) => {
    const hasVacationPlanning = eventsForDate.some(
      (event) => event.subCategory === 'Vacation Planning'
    );

    if (hasVacationPlanning) {
      eventsForDate.forEach((event) => {
        if (event.subCategory !== 'Vacation Planning') {
          event.is_visible = false;
        }
      });
    }
  });

  return transformedEvents;
};