src/Controller/DashboardController.php line 25
<?phpnamespace App\Controller;use App\Entity\Attendee;use App\Entity\LessonProgress;use App\Entity\LoggedTime;use App\Entity\WeekGoal;use Doctrine\Persistence\ManagerRegistry;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\Form\Extension\Core\Type\NumberType;use Symfony\Component\Form\Extension\Core\Type\SubmitType;use Symfony\Component\Form\Extension\Core\Type\TextType;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Symfony\UX\Chartjs\Builder\ChartBuilderInterface;use Symfony\UX\Chartjs\Model\Chart;class DashboardController extends AbstractController{#[Route('/', name: 'app_index_redirect')]public function indexRedirect(): RedirectResponse{return $this->redirectToRoute('app_dashboard', [], 301);}#[Route('/dashboard', name: 'app_dashboard')]public function index(ChartBuilderInterface $chartBuilder, Request $request, ManagerRegistry $registry): Response{/** @var Attendee $user */$user = $this->getUser();if ($this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_PORTAL_ADMIN')) {return $this->redirectToRoute('app_admin_dashboard');}$entityManager = $registry->getManager();$form = $this->createFormBuilder()->add('mood', NumberType::class, ['html5' => true, 'label' => 'Deine Stimmung', 'data' => $user->getMood(), 'attr' => ['max' => 100, 'min' => 0, 'step' => 1]])->add('Speichern', SubmitType::class, ['attr' => ['class' => 'btn btn-modal']])->getForm();$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {$data = $form->getData();$user->setMood($data['mood']);$entityManager->flush();return $this->redirectToRoute('app_dashboard');}$courses = $user->getCourses()->slice(0, 2);$finished = 0;$inProgress = 0;$open = 0;$totalProgresses = $user->getLessonProgress()->count();if ($totalProgresses > 0) {$finished = (100 / $totalProgresses) * $user->getLessonProgress()->filter(function (LessonProgress $progress) {return $progress->getStatus() == "finish";})->count();$inProgress = (100 / $totalProgresses) * $user->getLessonProgress()->filter(function (LessonProgress $progress) {return $progress->getStatus() == "progress";})->count();$open = number_format(100 - $finished - $inProgress, 0);}$chart = $chartBuilder->createChart(Chart::TYPE_DOUGHNUT);$chart->setData(['datasets' => [['label' => 'Deine Kurse','backgroundColor' => ["#37c1de", "#8fd0e2", "#fff"],'data' => [number_format($finished, 0), number_format($inProgress, 0), number_format($open, 0),],],],]);$chart->setOptions(['cutout' => 50,]);$ownCourses = $user->getCourses();$notAssigned = [];foreach ($user->getPortal()->getCatalogs() as $catalog) {foreach ($catalog->getCourses() as $course) {if (!in_array($user, $course->getAttendees()->toArray(),)) {$notAssigned[] = $course;}}}$weekgoal = $entityManager->getRepository(WeekGoal::class)->findOneBy(['attendee' => $user]);$weekday = (new \DateTime())->setTimestamp(strtotime('sunday last week'));$yesterday = (new \DateTime())->setTimestamp(strtotime('yesterday'));dump($yesterday);$goalDays = [];for ($x = 0; $x < 7; $x++) {$weekday->modify('+1 day');$lt = $entityManager->getRepository(LoggedTime::class)->findOneBy(['attendee' => $user,'date' => $weekday]);if (!$lt) {$goalDays[$weekday->format('l')] = 0;} else {$goalDays[$weekday->format('l')] = number_format($lt->getTime() / 60, 1);}if ($weekday == $yesterday) {if ($weekgoal->{'get' . $weekday->format('l')}() <= $goalDays[$weekday->format('l')]) {$yesterdaySuccess = true;} else {$yesterdaySuccess = false;}}}dump($yesterdaySuccess);return $this->render('dashboard/index.html.twig', ['user' => $user,'finished' => number_format($finished, 0),'courses' => $courses,'inProgress' => number_format($inProgress, 0),'open' => $open,'chart' => $chart,'form' => $form,'notAssigned' => $notAssigned,'weekgoal' => $weekgoal,'goalDays' => $goalDays,'yesterdaySuccess' => $yesterdaySuccess,]);}}