OpenXE/classes/Modules/TimeManagement/Service/TimeManagementSettingGateway.php

56 lines
1.5 KiB
PHP
Raw Normal View History

2021-05-21 08:49:41 +02:00
<?php
declare(strict_types=1);
namespace Xentral\Modules\TimeManagement\Service;
use Xentral\Components\Database\Database;
use Xentral\Modules\TimeManagement\Data\WorkDayData;
use Xentral\Modules\TimeManagement\Exception\InvalidQueryException;
final class TimeManagementSettingGateway
{
/** @var Database $db */
private $db;
/**
* @param Database $db
*/
public function __construct(Database $db)
{
$this->db = $db;
}
/**
* @param int $addressId
*
* @throws InvalidQueryException
*
* @return WorkDayData
*/
public function getWorkingDaysForAddress(int $addressId): WorkDayData
{
$sql =
'SELECT
e.vorlagemo > 0 AS `is_monday_workday`,
e.vorlagedi > 0 AS `is_tuesday_workday`,
e.vorlagemi > 0 AS `is_wednesday_workday`,
e.vorlagedo > 0 AS `is_thursday_workday`,
e.vorlagefr > 0 AS `is_friday_workday`,
e.vorlagesa > 0 AS `is_saturday_workday`,
e.vorlageso > 0 AS `is_sunday_workday`
FROM `mitarbeiterzeiterfassung_einstellungen` AS `e`
WHERE e.adresse = :address_id
ORDER BY e.id DESC
LIMIT 1';
$result = $this->db->fetchRow($sql, ['address_id' => $addressId]);
if (empty($result)) {
throw new InvalidQueryException('Address is not valid: ' . $addressId);
}
return WorkDayData::fromDbState($result);
}
}