<?php
namespace App\Controller;
use Carbon\Carbon;
use Pimcore\Model\DataObject\Day;
use Pimcore\Model\DataObject\Month;
use Pimcore\Translation\Translator;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class CalenderController extends BaseController
{
/**
*
* @param Request $request
* @param Translator $translator
*
* @return Response
*
* @throws \Exception
*/
public function defaultAction(Request $request)
{
$calender = [];
$HisCalender = [];
$year = Carbon::now()->format('Y');
$monthList = Month::getList();
$monthList->setCondition("`o_path` = '/Kalender/" . $year . "/'");
$monthList->setOrderKey('o_key');
$monthList->setOrder("asc");
$thisMonth = Carbon::now()->format('m');
foreach ($monthList as $month) {
if ($month->getKey() >= $thisMonth) {
if ($month->getChildren()) {
$days = [];
foreach ($month->getChildren() as $day) {
/** @var $day Day */
if ($month->getKey() === $day->getDatum()?->format('m')) {
$days[] = $this->getDayData($day);
} else {
$days = [];
}
}
usort($days, static function ($a, $b) {
return strtotime($a['Datum']) - strtotime($b['Datum']);
});
$calender[] = [
'month' => $month->getMaand_name(),
'days' => $days,
];
} else {
$calender[] = [
'month' => $month->getMaand_name()
];
}
} else if ($month->getChildren()) {
$Hisdays = [];
foreach ($month->getChildren() as $day) {
/** @var $day Day */
if ($month->getKey() === $day->getDatum()?->format('m')) {
$Hisdays[] = $this->getDayData($day);
} else {
$Hisdays = [];
}
}
usort($Hisdays, static function ($a, $b) {
return strtotime($a['Datum']) - strtotime($b['Datum']);
});
$HisCalender[] = [
'month' => $month->getMaand_name(),
'days' => $Hisdays,
];
} else {
$HisCalender[] = [
'month' => $month->getMaand_name()
];
}
}
return $this->render('calender/overview.html.twig', [
'calender' => $calender,
'HisCalender' => $HisCalender,
'year' => $year,
]);
}
public function defaultNextYearAction(Request $request)
{
$calender = [];
$HisCalender = [];
$year = Carbon::now()->addYear()->format('Y');
$monthList = Month::getList();
$monthList->setCondition("`o_path` = '/Kalender/" . $year . "/'");
$monthList->setOrderKey('o_key');
$monthList->setOrder("asc");
$thisMonth = 0;
foreach ($monthList as $month) {
if ($month->getKey() >= $thisMonth) {
if ($month->getChildren()) {
$days = [];
foreach ($month->getChildren() as $day) {
/** @var $day Day */
if ($month->getKey() === $day->getDatum()?->format('m')) {
$days[] = $this->getDayData($day);
} else {
$days = [];
}
}
usort($days, static function ($a, $b) {
return strtotime($a['Datum']) - strtotime($b['Datum']);
});
$calender[] = [
'month' => $month->getMaand_name(),
'days' => $days,
];
} else {
$calender[] = [
'month' => $month->getMaand_name()
];
}
} else if ($month->getChildren()) {
$Hisdays = [];
foreach ($month->getChildren() as $day) {
if ($month->getKey() === $day->getDatum()?->format('m')) {
$Hisdays[] = $this->getDayData($day);
} else {
$Hisdays = [];
}
}
usort($Hisdays, static function ($a, $b) {
return strtotime($a['Datum']) - strtotime($b['Datum']);
});
$HisCalender[] = [
'month' => $month->getMaand_name(),
'days' => $Hisdays,
];
} else {
$HisCalender[] = [
'month' => $month->getMaand_name()
];
}
}
return $this->render('calender/overview.html.twig', [
'calender' => $calender,
'HisCalender' => $HisCalender,
'year' => $year,
]);
}
private function getDayData($day): array
{
/** @var $day Day */
return [
"dayinfo" => $day->getDate_info(),
"start_u" => $day->getBegin_Tijd(),
"eind_u" => $day->getEind_Tijd(),
"Datum" => $day->getDatum(),
"Datum_description" => $day->getDate_description(),
"Place" => $day->getPlace_date(),
];
}
}