I'm trying to create a logic that can handle this type of response from my API calls:
[
{
"name": "event3",
"status": "{ok}",
"type": "DateSchedule",
"schedule": {
"weekDay": -1,
"day": 31,
"month": 12,
"year": 2024
},
"lk:assetType": "Other"
},
{
"name": "Event",
"status": "{ok}",
"type": "DateSchedule",
"schedule": {
"weekDay": 1,
"day": -1,
"month": 6,
"year": -1
},
"lk:assetType": "Other"
},
{
"name": "Event1",
"status": "{ok}",
"type": "WeekAndDaySchedule",
"schedule": "Week And Day: *",
"lk:assetType": "Other"
},
{
"name": "event4",
"status": "{ok}",
"type": "DateRangeSchedule",
"schedule": {
"start": {
"day": -1,
"month": -1,
"year": 2023
},
"end": {
"day": 31,
"month": 3,
"year": 3024
}
},
"lk:assetType": "Other"
}
]
Here's the main function I use to convert to ISO8601 format
function convertToRRule(response) {
const rruleList = [];
response.forEach((item) => {
const title = item.name;
let rrule = {};
if (item.type === "DateSchedule") {
rrule = createDateScheduleRRule(item.schedule);
} else if (item.type === "WeekAndDaySchedule") {
rrule = createWeekAndDayScheduleRRule(item.schedule);
} else if (item.type === "DateRangeSchedule") {
rrule = createDateRangeScheduleRRule(item.schedule);
}
rruleList.push({ title, rrule });
});
return rruleList;
}
Here is the expected result to use it in fullcalendar
{
"name": "Event",
"status": "{ok}",
"type": "DateSchedule",
"schedule": {
"weekDay": 1,
"day": -1,
"month": 6,
"year": -1
},
"lk:assetType": "Other"
}
The - means that the event is repeated For example for "day": -1 means it repeats every day
Thank you in advance for your help, and please don't hesitate to suggest another logic, as I'm a beginner and I think there's surely a better way of solving this problem.