HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/timetracker.panomity.com/src/WorkingTime/Model/YearPerUserSummary.php
<?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;

/**
 * @implements \IteratorAggregate<int, YearSummary>
 */
final class YearPerUserSummary implements \Countable, \IteratorAggregate
{
    /** @var array<YearSummary> */
    private array $summaries = [];

    public function __construct(private Year $year)
    {
    }

    public function getYear(): Year
    {
        return $this->year;
    }

    public function getUser(): User
    {
        return $this->year->getUser();
    }

    public function count(): int
    {
        return \count($this->summaries);
    }

    public function getIterator(): \Traversable
    {
        return new \ArrayIterator($this->summaries);
    }

    /**
     * @return YearSummary[]
     */
    public function getSummaries(): array
    {
        return $this->summaries;
    }

    public function addSummary(YearSummary $summary): void
    {
        $this->summaries[] = $summary;
    }

    public function getExpectedTime(): int
    {
        $all = 0;
        foreach ($this->getSummaries() as $month) {
            $all += $month->getExpectedTime();
        }

        return $all;
    }

    public function getActualTime(): int
    {
        $all = 0;
        foreach ($this->getSummaries() as $month) {
            $all += $month->getActualTime();
        }

        return $all;
    }
}