added API for handling work contract times (#4016)

This commit is contained in:
Kevin Papst
2023-05-13 01:24:15 +02:00
committed by GitHub
parent 4b2a3669e6
commit 43bd7bf1ab
53 changed files with 2684 additions and 27 deletions

View File

@@ -0,0 +1,57 @@
<?php
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\WorkingTime\Model;
use App\Entity\User;
use App\Model\Year as BaseYear;
/**
* @method array<Month> getMonths()
* @method Month getMonth(\DateTimeInterface $month)
*/
final class Year extends BaseYear
{
public function __construct(\DateTimeInterface $month, private User $user)
{
parent::__construct($month);
}
public function getUser(): User
{
return $this->user;
}
protected function createMonth(\DateTimeInterface $month): Month
{
return new Month($month);
}
public function getExpectedTime(\DateTimeInterface $until): int
{
$time = 0;
foreach ($this->getMonths() as $month) {
$time += $month->getExpectedTime($until);
}
return $time;
}
public function getActualTime(): int
{
$time = 0;
foreach ($this->getMonths() as $month) {
$time += $month->getActualTime();
}
return $time;
}
}