Files
kimai/src/Calendar/TimesheetEntry.php
Kevin Papst 5f4b6d3cfa Release 2.6.0 (#4472)
- Added: calendar entry title combination for customer, project and activity
- Added: show not_invoiced and not_exported data in detail screens
- Added: force logout if user is disabled
- Added: reduced amount of database queries on several screens
- Fixed: open-close status on work-contract screen for users without configuration
- Fixed: failsafe order/orderBy in query if manually manipulated to be null
- Fixed: unify statistic calculation (not_invoiced and not_exported) across screens
- Tech: bump packages
- Tech: Symfony 6.4
2023-12-17 16:19:50 +01:00

80 lines
1.8 KiB
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\Calendar;
use App\Entity\Activity;
use App\Entity\Project;
use App\Entity\Timesheet;
/**
* @internal
*/
final class TimesheetEntry implements DragAndDropEntry
{
public function __construct(private Timesheet $timesheet, private string $color, private bool $copy = false)
{
}
public function getData(): array
{
$data = [
'activity' => $this->timesheet->getActivity()?->getId(),
'project' => $this->timesheet->getProject()?->getId(),
];
if ($this->copy) {
$tags = null;
if (!empty($this->timesheet->getTagsAsArray())) {
$tags = implode(',', $this->timesheet->getTagsAsArray());
}
$data['description'] = $this->timesheet->getDescription();
$data['tags'] = $tags;
}
return $data;
}
public function getTitle(): string
{
$activity = $this->timesheet->getActivity();
if ($activity !== null && $activity->getName() !== null) {
return $activity->getName();
}
$project = $this->timesheet->getProject();
if ($project !== null && $project->getName() !== null) {
return $project->getName();
}
return $this->timesheet->getDescription() ?? '';
}
public function getColor(): string
{
return $this->color;
}
public function getBlockName(): string
{
return 'dd_timesheet';
}
public function getActivity(): ?Activity
{
return $this->timesheet->getActivity();
}
public function getProject(): ?Project
{
return $this->timesheet->getProject();
}
}