<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use App\Entity\Levels;
use App\Entity\Teachers;
use App\Entity\Students;
class DefaultController extends AbstractController {
/**
* @Route("/default", name="app_default")
*/
public function index(): Response {
if ($this->getUser()) {
return $this->redirectToRoute('app_home');
}
return $this->redirectToRoute('app_login');
}
public function appHome(Request $request) {
$em = $this->getDoctrine()->getManager();
$person = [
'name' => '',
'studentid' => '',
];
/*
* Obtener los estudiantes para el usuario logeado
* cada estudiante corresponde a un curso
* entonces se mostrará un botón de módulos para cada estudiante según el curso
*/
$students = [];
if (in_array('ROLE_STUDENT', $this->getUser()->getRoles())) {
$students = $em->getRepository(Students::class)->findBy(['user' => $this->getUser()->getId()]);
$oneStudent = $students[0];
$person['name'] = $oneStudent->getNames() . " " . $oneStudent->getLastname();
$person['studentid'] = $oneStudent->getId();
} elseif (in_array('ROLE_ADMIN', $this->getUser()->getRoles()) || in_array('ROLE_ADMIN_AUX', $this->getUser()->getRoles())) {
$person['name'] = empty($this->getUser()->getFullname()) ? $this->getUser()->getUsername() : $this->getUser()->getFullname();
} elseif (in_array('ROLE_TEACHER', $this->getUser()->getRoles())) {
$teacher = $em->getRepository(Teachers::class)->findOneBy(['user' => $this->getUser()->getId()]);
$person['name'] = $teacher->getName() . " " . $teacher->getLastname();
}
return $this->render('default/dashboard.html.twig', [
'person' => $person,
'user' => $this->getUser(),
'students' => $students
]);
}
public function getLevels(Request $request) {
$courseId = $request->get('courseid');
$em = $this->getDoctrine()->getManager();
$courses = $em->getRepository(Levels::class)->findBy(['course' => $courseId], ['name' => 'asc']);
$response = [];
foreach ($courses as $course) {
$response[] = [
'id' => $course->getId(),
'name' => $course->getName(),
];
}
return new JsonResponse($response);
}
}