35 lines
1.6 KiB
TypeScript
35 lines
1.6 KiB
TypeScript
import { env } from '$env/dynamic/private';
|
|
import { error } from '@sveltejs/kit';
|
|
import type { CalendarEvent, Exam } from '$lib/data/CMSDataType';
|
|
import dayjs from 'dayjs';
|
|
import type { PageServerLoad } from './$types';
|
|
export const load: PageServerLoad = async ({ fetch }) => {
|
|
const res = await fetch(env.API_QUALIFYING_URL + '/qualifying');
|
|
if (!res.ok) throw error(res.status, 'ไม่สามารถอ่านข้อมูลการสอบได้');
|
|
const exams: Exam[] = await res.json();
|
|
const events: CalendarEvent[] = [];
|
|
|
|
exams.forEach((ex) => {
|
|
const { id, title, announcement_startDate } = ex;
|
|
const url = '/qualifying/' + id;
|
|
ex.date = dayjs(announcement_startDate).add(543, 'year').format('DD MMM YYYY');
|
|
ex.image = ex.image ? ex.image : '/images/exam_place_holder.png';
|
|
if (!ex.announcementExam) return; //ignore other date for normal post
|
|
|
|
if (ex.register_startDate) {
|
|
const start = ex.register_startDate;
|
|
const end = dayjs(ex.register_endDate).add(1, 'day').format('YYYY-MM-DD');
|
|
events.push({ id, title: 'สมัคร:' + title, start, end, url, backgroundColor: '#67a1ff4a' });
|
|
}
|
|
if (ex.payment_startDate) {
|
|
const start = ex.payment_startDate;
|
|
const end = dayjs(ex.payment_endDate).add(1, 'day').format('YYYY-MM-DD');
|
|
events.push({ id, title: 'ชำระเงิน:' + title, start, end, url, backgroundColor: '#D2B4DE' });
|
|
}
|
|
if (ex.examDate) {
|
|
const start = ex.examDate;
|
|
events.push({ id, title: 'วันสอบ:' + title, start, url, backgroundColor: '#a2d9ce8f' });
|
|
}
|
|
});
|
|
return { exams, events };
|
|
};
|