Seeder Menu Lingkungan dan Pendidikan

Fix Jam Operasional Kantor Desa Darmasaba
This commit is contained in:
2026-02-03 16:53:15 +08:00
parent 6c36a15290
commit 358ff14efe
28 changed files with 847 additions and 833 deletions

View File

@@ -36,8 +36,67 @@ const getCurrentTime = () => {
return `${hours}:${minutes}`;
};
const isWorkingHours = (currentTime: string): boolean => {
const [openTime, closeTime] = ["08:00", "17:00"];
// Fungsi untuk mendapatkan tanggal hari ini dalam format YYYY-MM-DD
const getTodayDate = (): string => {
const today = new Date();
const year = today.getFullYear();
const month = String(today.getMonth() + 1).padStart(2, '0');
const day = String(today.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
};
// Fungsi untuk memeriksa apakah tanggal tertentu adalah hari libur nasional
// Daftar hari libur nasional Indonesia (bisa diperbarui sesuai tahun berjalan)
const isNationalHoliday = (date: string): boolean => {
// Format tanggal harus dalam bentuk YYYY-MM-DD
const holidays = [
// Tahun 2026
'2026-01-01', // Tahun Baru Masehi
'2026-02-17', // Isra Mikraj Nabi Muhammad SAW
'2026-03-08', // Hari Raya Nyepi Tahun Baru Saka 1948
'2026-04-03', // Wafat Isa Almasih
'2026-05-01', // Hari Buruh Internasional
'2026-05-20', // Kenaikan Isa Almasih
'2026-06-01', // Hari Lahir Pancasila
'2026-06-05', // Hari Raya Idul Adha
'2026-08-17', // Hari Kemerdekaan RI
'2026-09-21', // Tahun Baru Islam 1448 H
'2026-10-02', // Maulid Nabi Muhammad SAW
'2026-12-25', // Hari Raya Natal
// Hari raya besar lainnya
'2026-04-06', // Hari Raya Idul Fitri
'2026-04-07', // Hari Raya Idul Fitri
// Hari libur pengganti
'2026-04-08', // Hari Libur Pengganti Idul Fitri
'2026-04-09', // Hari Libur Pengganti Idul Fitri
];
return holidays.includes(date);
};
const isWorkingHours = (day: string, currentTime: string): boolean => {
// Cek apakah hari ini hari libur nasional
if (isNationalHoliday(getTodayDate())) {
return false;
}
let openTime = "";
let closeTime = "";
// Atur jam kerja berdasarkan hari
if (["Senin", "Selasa", "Rabu", "Kamis"].includes(day)) {
openTime = "07:30";
closeTime = "15:30";
} else if (day === "Jumat") {
openTime = "07:30";
closeTime = "12:00";
} else {
// Sabtu dan Minggu tutup
return false;
}
const compareTimes = (time1: string, time2: string) => {
const [hour1, minute1] = time1.split(":").map(Number);
const [hour2, minute2] = time2.split(":").map(Number);
@@ -45,18 +104,33 @@ const isWorkingHours = (currentTime: string): boolean => {
if (hour1 > hour2) return false;
return minute1 <= minute2;
};
return compareTimes(currentTime, closeTime) && !compareTimes(currentTime, openTime);
};
const getWorkStatus = (day: string, currentTime: string): { status: string; message: string } => {
// Cek apakah hari ini hari libur nasional
if (isNationalHoliday(getTodayDate())) {
return { status: "Tutup", message: "Hari Libur Nasional" };
}
const workingDays = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat"];
if (!workingDays.includes(day)) {
return { status: "Tutup", message: "Libur Akhir Pekan" };
}
const isOpen = isWorkingHours(currentTime);
const isOpen = isWorkingHours(day, currentTime);
let workHoursMessage = "";
if (["Senin", "Selasa", "Rabu", "Kamis"].includes(day)) {
workHoursMessage = "07:30 - 15:10";
} else if (day === "Jumat") {
workHoursMessage = "07:30 - 12:00";
}
return isOpen
? { status: "Buka", message: "08:00 - 17:00" }
: { status: "Tutup", message: "08:00 - 17:00" };
? { status: "Buka", message: workHoursMessage }
: { status: "Tutup", message: workHoursMessage };
};
// 🟦 Skeleton component untuk Social Media