kjsdb
sdfunknown
plain_text
2 years ago
2.5 kB
7
Indexable
async function checkEventClash(conn, eventInfoRows,eventCode) {
// Construct the placeholders for the event codes
// Construct the placeholders for the event codes
const placeholders = eventInfoRows.map(event => `'${event.EventCode}'`).join(', ');
console.log(eventCode);
// Construct the SQL query with placeholders for the event codes
const query = `
SELECT *
FROM Events
WHERE EventCode IN (${placeholders})
AND (
StartTime BETWEEN
SUBTIME((SELECT StartTime FROM Events WHERE EventCode = '${eventCode}'), '00:30:00') AND
ADDTIME((SELECT StartTime FROM Events WHERE EventCode = '${eventCode}'), '00:30:00')
);
`
console.log(query);
// Combine the event codes with the start and end times
const params = [...placeholders];
const [rows, fields] = await conn.execute(query, params);
console.log(rows);
return rows;
}
async function checkParticipantEventClashes(conn, eventCode, participantID) {
// const [participantEventsRows, participantEventsFields] = await conn.execute(
// `SELECT EventCode FROM SoloRegistration WHERE ParticipantID = '${participantID}'`
// );
const [eventInfoRows, eventInfoFields] = await conn.execute(
`SELECT e.*
FROM Events e
JOIN (
SELECT EventCode
FROM SoloRegistration
WHERE ParticipantID = '${participantID}'
UNION
SELECT EventCode
FROM TeamRegistration
WHERE ParticipantID = '${participantID}'
) AS r ON e.EventCode = r.EventCode
WHERE e.EventCode != '${eventCode}';
`
);
// Check for clashes with each event code
// Assuming your checkEventClash function is correctly implemented
const isClash = await checkEventClash(
conn,
eventInfoRows,
eventCode,
);
// if (isClash) {
// return {
// code: 200,
// message: `Event Clash! Clashing with event: ${rows}`,
// type: "Info",
// eventCodeClashName: rows,
// };
// }
if (isClash.length>0) {
// Extract EventNames from the rows array
const clashingEventNames = isClash.map(row => row.EventName).join(', ');
return {
code: 200,
message: `Event Clash! Clashing with events: ${clashingEventNames}`,
type: "Info",
eventCodeClashName: clashingEventNames,
};
}
// If no clashes found with any event, return success message
return {
code: 200,
message: `No clashes found with any event`,
type: "Success",
};
}Editor is loading...
Leave a Comment