Skip to content

Commit

Permalink
TTT-560: include holidays, sick days and IST into export
Browse files Browse the repository at this point in the history
  • Loading branch information
CybotTM committed Oct 19, 2018
1 parent 92d4485 commit 65d2394
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,23 @@ public function exportAction()

// https://jira.netresearch.de/browse/TTT-561
$lineNumber = 3;
$stats = [];
foreach ($entries as $entry) {

if (! isset($stats[$entry->getUser()->getAbbr()])) {
$stats[$entry->getUser()->getAbbr()] = [
'holidays' => 0,
'sickdays' => 0,
];
}

if ($entry->getActivity()->isHoliday()) {
$stats[$entry->getUser()->getAbbr()]['holidays']++;
}
if ($entry->getActivity()->isSick()) {
$stats[$entry->getUser()->getAbbr()]['sickdays']++;
}

self::setCellDate($sheet, 'A', $lineNumber, $entry->getDay());

self::setCellHours($sheet, 'B', $lineNumber, $entry->getStart());
Expand All @@ -102,9 +118,36 @@ public function exportAction()

// TODO: https://jira.netresearch.de/browse/TTT-559
// sheet 2: list user working days without working time
$sheet = $spreadsheet->getSheet(1);
$lineNumber = 2;

// TODO: https://jira.netresearch.de/browse/TTT-560
// sheet 3: list users monthly SOLL/IST, holidays, sickdays
$sheet = $spreadsheet->getSheet(2);
$lineNumber = 2;
ksort($stats);
foreach ($stats as $user => $userStats) {
$sheet->setCellValue('A' . $lineNumber, $user);
$sheet->setCellValue('B' . $lineNumber, $month);
//$sheet->setCellValue('C' . $lineNumber, 0);

// =SUMIF(ZE!$J$1:$J$5000,A3,ZE!$I$1:$I$5000)
// [HH]:MM
$sheet->setCellValue('D' . $lineNumber, '=SUMIF(ZE!$J$1:$J$5000,A' . $lineNumber . ',ZE!$I$1:$I$5000)');
$sheet->getStyle('D' . $lineNumber)
->getNumberFormat()
->setFormatCode('[HH]:MM');

if ($userStats['holidays'] > 0) {
$sheet->setCellValue('E' . $lineNumber, $userStats['holidays']);
}

if ($userStats['holidays'] > 0) {
$sheet->setCellValue('F' . $lineNumber, $userStats['sickdays']);
}

$lineNumber++;
}


$file = tempnam(sys_get_temp_dir(), 'ttt-export-');
Expand Down
30 changes: 30 additions & 0 deletions src/Netresearch/TimeTrackerBundle/Entity/Activity.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
*/
class Activity
{
const SICK = 'Krank';
const HOLIDAY = 'Urlaub';

/**
* @ORM\Id
Expand Down Expand Up @@ -190,4 +192,32 @@ public function removeEntrie(\Netresearch\TimeTrackerBundle\Entity\Entry $entrie
{
$this->entries->removeElement($entries);
}

/**
* Returns true if activity is a sick day.
*
* @return bool
*/
public function isSick()
{
if ($this->getName() === self::SICK) {
return true;
}

return false;
}

/**
* Returns true if activity is holiday.
*
* @return bool
*/
public function isHoliday()
{
if ($this->getName() === self::HOLIDAY) {
return true;
}

return false;
}
}

0 comments on commit 65d2394

Please sign in to comment.