Files
citrus/app/Helpers/TurkeyHolidayHelper.php
T

85 lines
3.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace App\Helpers;
use Carbon\Carbon;
class TurkeyHolidayHelper
{
/**
* Checks if a given date is a national or religious holiday in Turkey.
*
* @param string|Carbon $date
* @return bool
*/
public static function isHoliday($date): bool
{
$carbonDate = Carbon::parse($date);
$md = $carbonDate->format('m-d'); // Month-Day
$ymd = $carbonDate->format('Y-m-d'); // Year-Month-Day
// 1. Fixed Yearly Holidays
$fixedHolidays = [
'01-01', // Yılbaşı (New Year's Day)
'04-23', // Ulusal Egemenlik ve Çocuk Bayramı
'05-01', // Emek ve Dayanışma Günü
'05-19', // Atatürk'ü Anma, Gençlik ve Spor Bayramı
'07-15', // Demokrasi ve Milli Birlik Günü
'08-30', // Zafer Bayramı
'10-29', // Cumhuriyet Bayramı
];
if (in_array($md, $fixedHolidays)) {
return true;
}
// 2. Variable Holidays (Ramazan & Kurban Bayramı including Eve/Arife days)
// Hardcoded ranges for 2024 to 2030 based on Islamic lunar calendar projections.
$variableHolidays = [
// 2024
'2024-04-09', // Ramazan Bayramı Arife
'2024-04-10', '2024-04-11', '2024-04-12', // Ramazan Bayramı
'2024-06-15', // Kurban Bayramı Arife
'2024-06-16', '2024-06-17', '2024-06-18', '2024-06-19', // Kurban Bayramı
// 2025
'2025-03-29', // Ramazan Bayramı Arife
'2025-03-30', '2025-03-31', '2025-04-01', // Ramazan Bayramı
'2025-06-05', // Kurban Bayramı Arife
'2025-06-06', '2025-06-07', '2025-06-08', '2025-06-09', // Kurban Bayramı
// 2026
'2026-03-19', // Ramazan Bayramı Arife
'2026-03-20', '2026-03-21', '2026-03-22', // Ramazan Bayramı
'2026-05-26', // Kurban Bayramı Arife
'2026-05-27', '2026-05-28', '2026-05-29', '2026-05-30', // Kurban Bayramı
// 2027
'2027-03-08', // Ramazan Bayramı Arife
'2027-03-09', '2027-03-10', '2027-03-11', // Ramazan Bayramı
'2027-05-15', // Kurban Bayramı Arife
'2027-05-16', '2027-05-17', '2027-05-18', '2027-05-19', // Kurban Bayramı
// 2028
'2028-02-26', // Ramazan Bayramı Arife
'2028-02-27', '2028-02-28', '2028-02-29', // Ramazan Bayramı
'2028-05-04', // Kurban Bayramı Arife
'2028-05-05', '2028-05-06', '2028-05-07', '2028-05-08', // Kurban Bayramı
// 2029
'2029-02-14', // Ramazan Bayramı Arife
'2029-02-15', '2029-02-16', '2029-02-17', // Ramazan Bayramı
'2029-04-23', // Kurban Bayramı Arife (Note: also April 23)
'2029-04-24', '2029-04-25', '2029-04-26', '2029-04-27', // Kurban Bayramı
// 2030
'2030-02-03', // Ramazan Bayramı Arife
'2030-02-04', '2030-02-05', '2030-02-06', // Ramazan Bayramı
'2030-04-12', // Kurban Bayramı Arife
'2030-04-13', '2030-04-14', '2030-04-15', '2030-04-16', // Kurban Bayramı
];
return in_array($ymd, $variableHolidays);
}
}