mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-27 23:20:28 +01:00
54 lines
1.2 KiB
PHP
54 lines
1.2 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace Xentral\Modules\TimeManagement\Service;
|
||
|
|
||
|
use Xentral\Components\Database\Database;
|
||
|
use Xentral\Modules\TimeManagement\Data\HolidayData;
|
||
|
use Xentral\Modules\TimeManagement\Exception\InvalidDateFormatException;
|
||
|
|
||
|
final class HolidayGateway
|
||
|
{
|
||
|
/** @var Database $db */
|
||
|
private $db;
|
||
|
|
||
|
/**
|
||
|
* @param Database $db
|
||
|
*/
|
||
|
public function __construct(Database $db)
|
||
|
{
|
||
|
$this->db = $db;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $year
|
||
|
*
|
||
|
* @throws InvalidDateFormatException
|
||
|
*
|
||
|
* @return array|HolidayData[]
|
||
|
*/
|
||
|
public function findHolidayDataByYear(int $year): array
|
||
|
{
|
||
|
$sql =
|
||
|
'SELECT
|
||
|
af.bezeichnung as `name`,
|
||
|
af.datum as `date`
|
||
|
FROM `arbeitsfreietage` AS `af`
|
||
|
WHERE af.datum >= :first_date_of_year
|
||
|
AND af.typ = \'feiertag\'
|
||
|
ORDER BY af.datum';
|
||
|
|
||
|
$holidays = $this->db->fetchAll($sql, ['first_date_of_year' => $year . '-01-01']);
|
||
|
|
||
|
$holidayData = [];
|
||
|
if (!empty($holidays)) {
|
||
|
foreach ($holidays as $holiday) {
|
||
|
$holidayData[] = HolidayData::fromDbState($holiday);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $holidayData;
|
||
|
}
|
||
|
}
|