<?php
namespace App\Controller\FrontendBundle\Ideas;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use App\BackendBundle\Helper\UserHelper;
use App\BackendBundle\Helper\EventHelper;
use App\BackendBundle\Helper\SiteTitleHelper;
use App\BackendBundle\Helper\InfoSectionHelper;
use App\BackendBundle\Helper\BoPartnerHelper;
use App\Entity\InfoSectionCategory;
class TeacherIdeasController extends AbstractController {
private $siteTitleHelper;
private $infoSectionHelper;
private $userHelper;
private $eventHelper;
public function __construct(InfoSectionHelper $infosectionhelper, SiteTitleHelper $sitetitlehelper, UserHelper $userhelper, EventHelper $eventhelper, BoPartnerHelper $bopartnerhelper)
{
$this->infoSectionHelper = $infosectionhelper;
$this->siteTitleHelper = $sitetitlehelper;
$this->userHelper = $userhelper;
$this->eventHelper = $eventhelper;
$this->boPartnerHelper = $bopartnerhelper;
}
/**
* @return \Symfony\Component\HttpFoundation\Response
* @Route("/ideen-lehrer", name="teacher_ideas_list", defaults={"title": "Informationsbereich für Lehrpersonen", "description": "Sie sind eine Lehrperson in der Berufsorientierung und möchten wissen, wie man mit berufsreise.at den Unterricht gestalten kann? Hier finden Sie hilfreiche Informationen und Materialien für Ihren Berufsorientierungsunterricht."})
*/
public function listIdeasAction(Request $request) {
$this->siteTitleHelper->setTitleDescription($request);
$em = $this->getDoctrine()->getManager();
$entities = $em->getRepository(InfoSectionCategory::class)->findBy(array('sectionType' => 2), array('position' => 'ASC'));
return $this->render('@frontend/public/ideas/ideas_teacher.html.twig', array(
'heading' => 'Ideen für Lehrpersonen',
'categoryRoute' => 'teacher_ideas_category',
'entities' => $entities
));
}
/**
* @return \Symfony\Component\HttpFoundation\Response
* @Route("/ideen-lehrer/{category}", name="teacher_ideas_category", defaults={"title": "Informationsbereich für Lehrpersonen", "description": "Sie sind eine Lehrperson in der Berufsorientierung und möchten wissen, wie man mit berufsreise.at den Unterricht gestalten kann? Hier finden Sie hilfreiche Informationen und Materialien für Ihren Berufsorientierungsunterricht."})
*/
public function categoryAction(Request $request, $category) {
$infoSectionCategory = $this->infoSectionHelper->getInfoSectionCategoryByUrlText($category);
if (empty($category)) {
throw new NotFoundHttpException("Category $category wurde nicht gefunden");
}
$this->siteTitleHelper->setInfoSectionCategoryTitle($request, $infoSectionCategory);
$entities = $this->infoSectionHelper->getInfoSectionSubCategoriesByCategory($infoSectionCategory);
return $this->render('@frontend/public/ideas/ideas_category.html.twig', array(
'category' => $infoSectionCategory,
'entities' => $entities
));
}
/**
* @return \Symfony\Component\HttpFoundation\Response
* @Route("/ideen-lehrer/fortbildungen/bildungsconsulting", name="teacher_ideas_bildungsconsulting")
*/
public function bildungsconsultingAction(Request $request) {
$uuid = "7f2ab9fa-441d-4c90-8000-0c78909233b7";
/* @var $boProfile BoPartnerProfile */
$boProfile = $this->boPartnerHelper->getBoPartnerProfileByUUID($uuid);
if ($boProfile == null) {
throw new NotFoundHttpException();
}
$user = $this->userHelper->getUserByEmail("bildungsconsulting@wktirol.at");
$eventJuniorCompany = $this->eventHelper->getEventById(755);
$events = $this->getBildungsconsultingTeacherEvents($boProfile->getId(), $boProfile->getProfileTypeID());
array_push($events, $eventJuniorCompany);
$eventsData = $this->eventHelper->getEventDataItems($user, $events);
return $this->render('@frontend/public/ideas/ideas_bildungsconsulting.html.twig', array(
'eventsData' => $eventsData,
));
}
private function getBildungsconsultingTeacherEvents($profileID, $profileTypeID) {
$sqlText = 'SELECT event FROM App\Entity\Event event
JOIN event.eventState eventState
JOIN event.profileType pt
JOIN App\Entity\Appointment appointment
JOIN event.tagMappings tags
JOIN tags.eventTag tag
JOIN tag.eventTagCategory tagCategory
WHERE eventState.name=:evtStateName
AND event.profileID = :profileID
AND pt.id=:profileTypeID
AND tagCategory.id = 4
AND appointment.event = event
AND ((appointment.bookableUntil is NULL AND appointment.endDate >= :today) OR appointment.bookableUntil >= :today)';
$query = $this->getDoctrine()->getManager()->createQuery($sqlText);
$query->setParameter('evtStateName', 'active');
$query->setParameter('profileID', $profileID);
$query->setParameter('profileTypeID', $profileTypeID);
$query->setParameter('today', new \DateTime());
$events = $query->getResult();
if (isset($events) && count($events) > 0) {
return $events;
} else {
return null;
}
}
}