Transform and map user preferences and status

by Jake

JavaScript

function transform(message, context) {
  const { payload } = message;
  //  Ensure payload exists 
  if (!payload) {
    return { header: {}, payload: { status: [], preferences: [] } };
  }
  // Ensure preferenceStatus is an array before mapping
  const rawStatus = Array.isArray(payload.preferenceStatus) ? payload.preferenceStatus : [];
  const status = rawStatus.map(item => ({
    bannerId: item.xbannerId,
    termCode: item.xsybrpstTermCode,
    round: item.xsybrpstRoundId,
    currentStatus: item.xsybrpstStatus,
    id: item.id
  }));
  //  Ensure preferences is an array before mapping
  const rawPreferences = Array.isArray(payload.preferences) ? payload.preferences : [];

  // Ensure courseOpts dictionary exists in context
  const courseOpts = context.courseOpts || {};
  const preferences = rawPreferences.map(item => ({
    subjectCode: item.xsyrrprfSubjCode,
    courseNumber: item.xsyrrprfCrseNumb,
    courseTitle: courseOpts[`${item.xsyrrprfSubjCode}-${item.xsyrrprfCrseNumb}`]?.title || \"Missing Title\",
    roundId: item.xsyrrprfRoundId,
    priority: item.xsyrrprfPriority,
    courseSeats: courseOpts[`${item.xsyrrprfSubjCode}-${item.xsyrrprfCrseNumb}`]?.seats || \"Unavailable\",
    id: item.id
  }));
  return {
    header: {},
    payload: {
      status: status,
      preferences: preferences
    }
  };
}