OpenXE/classes/Modules/TimeManagement/Service/HolidayGateway.php
2021-05-21 08:49:41 +02:00

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;
}
}