<?php
namespace App\Controller;
use App\Entity\AdmissionInfo;
use App\Entity\AdmissionPage;
use App\Entity\Article;
use App\Entity\ArticleCategory;
use App\Entity\ClassCourse;
use App\Entity\ClassLevel;
use App\Entity\ClassLevelAndCourse;
use App\Entity\ClassLevelItem;
use App\Entity\Club;
use App\Entity\EventSchool;
use App\Entity\GalleryItem;
use App\Entity\Infrastructure;
use App\Entity\Message;
use App\Entity\Notification;
use App\Entity\OpenDay;
use App\Entity\Page;
use App\Entity\Partner;
use App\Entity\Phone;
use App\Entity\School;
use App\Entity\SchoolDepartment;
use App\Entity\SchoolTest;
use App\Entity\Story;
use App\Entity\Student;
use App\Entity\StudentNote;
use App\Entity\Team;
use App\Entity\User;
use App\Service\MySerializer;
use App\Service\SocialMedia;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bridge\Twig\Mime\BodyRenderer;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\File\Exception\FileException;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Mailer\Mailer;
use Symfony\Component\Mailer\Transport;
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
use Symfony\Contracts\HttpClient\HttpClientInterface;
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Loader\FilesystemLoader;
class DefaultController extends BaseController
{
private $session;
private $bag;
private $clientHttp;
/**
* DefaultController constructor.
* @param ContainerInterface $c
* @param EntityManagerInterface $em
* @param ParameterBagInterface $params
* @param SessionInterface $s
* @param ParameterBagInterface $bag
* @param HttpClientInterface $client
*/
public function __construct(ContainerInterface $c, EntityManagerInterface $em, ParameterBagInterface $params, SessionInterface $s, ParameterBagInterface $bag, HttpClientInterface $client)
{
$this->session = $s;
$this->bag = $bag;
$this->clientHttp = $client;
parent::__construct($c, $em, $params);
$frontPages = $this->em->getRepository(Page::class)->findBy(['isActive'=>true,'isFrontend'=>1,'stage'=>1],['isActive'=>'DESC','position'=>'ASC']);
foreach ($frontPages as $item){
$item->setTranslatableLocale($this->locale);
$this->em->refresh($item);
if($c->get('request_stack')->getMainRequest()->attributes->get('_route') === $item->getAdminLink()){
$this->siteInfo['currentPage'] = $item;
}
}
$this->siteInfo['frontend_page'] = $frontPages;
}
public function index(Request $request):Response{
if(!is_null($request->query->get('l'))){
if(in_array($request->query->get('l'),['first','second','third'])){
$response = new RedirectResponse($this->generateUrl('index'),302,[]);
$response->headers->setCookie(Cookie::create('lang',$request->query->get('l'), 0, '/', null, false, false));
return $response;
}
}
$page = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_home']);
if($page === null){
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('page_not_found')
);
return $this->redirect($referer ?? '/');
}
$page->setTranslatableLocale($this->locale);
$this->em->refresh($page);
$this->siteInfo['page'] = $page;
$this->siteInfo['page_admink_link'] = $page->getAdminLink();
$images = $this->em->getRepository(GalleryItem::class)->findBy(['isActive'=>1,'stage'=>1],['position'=>'ASC']);
$this->siteInfo['images_slider'] = [];
foreach ($images as $i){
$i->setTranslatableLocale($this->locale);
if($i->getPage() === $page){
$this->siteInfo['images_slider'][]=$i;
}
}
$this->siteInfo['images'] = $images;
$school = $this->em->getRepository(School::class)->findOneBy([]);
if($school !== null){
$schoolType = $school->getSchoolType();
$schoolReligion = $school->getSchoolReligion();
$schoolLanguage = $school->getSchoolLanguage();
$schoolCycles = $school->getSchoolCycles();
$schoolType->setTranslatableLocale($this->locale);
$this->em->refresh($schoolType);
$schoolReligion->setTranslatableLocale($this->locale);
$this->em->refresh($schoolReligion);
$schoolLanguage->setTranslatableLocale($this->locale);
$this->em->refresh($schoolLanguage);
$school->setTranslatableLocale($this->locale);
$this->em->refresh($school);
foreach ($schoolCycles as $sc){
$sc->setTranslatableLocale($this->locale);
$this->em->refresh($sc);
$school->addSchoolCycle($sc);
}
$school->setSchoolType($schoolType);
$school->setSchoolReligion($schoolReligion);
$school->setSchoolLanguage($schoolLanguage);
}
$this->siteInfo['info'] = $school;
$pageBlog = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_blog']);
if($pageBlog !== null && $pageBlog->getStage()){
$entities2 = $this->em->getRepository(Article::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC'],10,0);
$this->siteInfo['articles'] = [];
$this->siteInfo['educati_articles'] = [];
if(count($entities2)>0){
foreach ($entities2 as $n){
$cat = $n->getCategory();
$cat->setTranslatableLocale($this->locale);
$this->em->refresh($cat);
$n->setTranslatableLocale($this->locale);
$this->em->refresh($n);
$n->setCategory($cat);
}
$this->siteInfo['articles'] = $entities2;
}
if($this->siteInfo['school_global']['display_educati_news']){
$index = $request->query->getInt('page', 1) -1;
$url = $this->bag->get('educati_articles')."/10/".$index.'?lang='.$this->locale;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
$content = json_decode($resp, true);
if($content['data'] === null){
$content['data'] = [];
}
$this->siteInfo['educati_articles'] =$content['data'];
}
$this->siteInfo['display_articles'] =1;
$pageBlog->setTranslatableLocale($this->locale);
$this->em->refresh($pageBlog);
$this->siteInfo['page_blog'] =$pageBlog;
}
else{
$this->siteInfo['articles']=[];
$this->siteInfo['educati_articles'] = [];
$this->siteInfo['display_articles'] =0;
}
$notifs = $this->em->getRepository(Notification::class)->findBy(['isActive'=>true,'stage'=>1],['date'=>'DESC']);
foreach ($notifs as $n){
$n->setTranslatableLocale($this->locale);
$this->em->refresh($n);
}
//$result = file_get_contents($this->bag->get('educati_notifications'));
//$content = json_decode($result, true);
$url = $this->bag->get('educati_notifications').'?lang='.$this->locale;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
$content = json_decode($resp, true);
$this->siteInfo['educati_notifs'] =$content['data'];
$this->siteInfo['school_notifs'] =$notifs;
$this->siteInfo['date_now'] =new \DateTime();
$this->siteInfo['events'] = [];
$this->siteInfo['event_page']='';
if($page->getModel()===3){
$pageCalendar = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_calendar','stage'=>1]);
if($pageCalendar !== null){
$pageCalendar->setTranslatableLocale($this->locale);
$this->em->refresh($pageCalendar);
$entitiesE = $this->em->getRepository(EventSchool::class)->findBy(['isActive'=>true, 'stage'=>1],['dateEvent'=>'DESC']);
$send =[];
foreach ($entitiesE as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
$i = $this->mycontainer->get(MySerializer::class)->singleObjectToArray($s,'event_all');
$i['date_event2'] = explode('T',$i['date_event'])[0];
if((new \DateTime())>$s->getDateEvent()){
$i['past']='1';
}
else{
$i['past']='0';
}
$send[] = $i;
}
$this->siteInfo['events'] = $send;
$this->siteInfo['event_page'] = $pageCalendar->getName();
}
}
return $this->render('frontend/home/model_'.$page->getModel().'.html.twig', $this->siteInfo);
//return $this->render('frontend/home/model_1.html.twig', $this->siteInfo);
}
public function cgu():Response
{
return $this->render('cgu.html.twig', $this->siteInfo);
}
public function getOneEntity(Request $request,$entity, $id): JsonResponse{
$class = '';
$trans = false;
$group = '';
switch ($entity){
case 'story':
$class = Story::class;
$trans = true;
$group = 'story_all';
break;
case 'event':
$class = EventSchool::class;
$trans = true;
$group = 'event_all';
break;
case 'notification':
$class = Notification::class;
$trans = true;
$group = 'notif_all';
break;
case 'infrastructure':
$class = Infrastructure::class;
$trans = true;
$group = 'infra_all';
break;
case 'team':
$class = Team::class;
$group = 'team_all';
break;
case 'admission':
$class = AdmissionInfo::class;
$trans = true;
$group = 'admission_all';
break;
case 'gallery_item':
$class = GalleryItem::class;
$trans = true;
$group = 'gallery_all';
break;
case 'club':
$class = Club::class;
$trans = true;
$group = 'club_all';
break;
case 'partner':
$class = Partner::class;
$trans = true;
$group = 'partner_all';
break;
case 'phone':
$class = Phone::class;
$group = 'phone_all';
break;
case 'article':
$class = Article::class;
$trans = true;
$group = 'article_all';
break;
case 'category':
$class = ArticleCategory::class;
$trans = true;
$group = 'category_all';
break;
case 'open_hour':
$class = OpenDay::class;
$trans = false;
$group = 'day_all';
break;
case 'class_level':
$class = ClassLevel::class;
$trans = false;
$group = 'level_all';
break;
case 'course':
$class = ClassCourse::class;
$trans = true;
$group = 'course_all';
break;
case 'school_test':
$class = SchoolTest::class;
$trans = false;
$group = 'school_test_all';
break;
case 'student':
$class = Student::class;
$trans = false;
$group = 'student_all';
break;
case 'class':
$class = ClassLevelItem::class;
$trans = false;
$group = 'level_item_all';
break;
default:
return new JsonResponse(["data"=>null,"message"=>"bad object"],401);
}
$item = $this->em->getRepository($class)->findOneBy(['id'=>$id]);
if($trans){
$item->setTranslatableLocale($this->locale);
$this->em->refresh($item);
}
if($item !== null){
$data = $this->mycontainer->get(MySerializer::class)->singleObjectToArray($item,$group);
return new JsonResponse(['data'=>$data,'message'=>''],201);
}
return new JsonResponse(["data"=>null,"message"=>$this->mycontainer->get('translator')->trans('object_not_found')],401);
}
public function getTeamByDepartement(Request $request, $id): JsonResponse{
$dept = $this->em->getRepository(SchoolDepartment::class)->findOneBy(['id'=>$id]);
if($dept !== null){
$teams = $this->em->getRepository(Team::class)->findBy(['department'=>$dept,'isActive'=>true,'stage'=>1]);
$r = [];
foreach ($teams as $t){
$r[] = $this->mycontainer->get(MySerializer::class)->singleObjectToArray($t,'team_all');
}
return new JsonResponse(["data"=>$r,"message"=>''],201);
}
return new JsonResponse(["data"=>null,"message"=>$this->mycontainer->get('translator')->trans('object_not_found')],401);
}
public function getClassCourseList(Request $request, $id): JsonResponse{
$class = $this->em->getRepository(ClassLevel::class)->findOneBy(['id'=>$id]);
if($class === null){
return new JsonResponse(["data"=>null,"message"=>$this->mycontainer->get('translator')->trans('object_not_found')],401);
}
$classAndCourse = $this->em->getRepository(ClassLevelAndCourse::class)->findBy(['classLevel'=>$class]);
$data = [];
foreach ($classAndCourse as $i){
$data[] = $this->mycontainer->get(MySerializer::class)->singleObjectToArray($i,'class_course_all');
}
return new JsonResponse(["data"=>$data,"message"=>""],201);
}
public function showFrontendPage(Request $request, $slug, PaginatorInterface $paginator=null){
$referer = $request->headers->get('referer');
$page = $this->em->getRepository(Page::class)->findOneBy(['slug'=>$slug]);
if($page === null){
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('page_not_found')
);
return $this->redirect($referer ?? '/');
}
$page->setTranslatableLocale($this->locale);
$this->em->refresh($page);
$this->siteInfo['page'] = $page;
$this->siteInfo['page_admink_link'] = $page->getAdminLink();
switch ($page->getAdminLink()){
case 'admin_page_home':
$images = $this->em->getRepository(GalleryItem::class)->findBy(['isActive'=>1,'stage'=>1],['position'=>'ASC'],9,0);
$this->siteInfo['images_slider'] = [];
foreach ($images as $i){
$i->setTranslatableLocale($this->locale);
if($i->getPage() === $page){
$this->siteInfo['images_slider'][]=$i;
}
}
$this->siteInfo['images'] = $images;
$school = $this->em->getRepository(School::class)->findOneBy([]);
if($school !== null){
$schoolType = $school->getSchoolType();
$schoolReligion = $school->getSchoolReligion();
$schoolLanguage = $school->getSchoolLanguage();
$schoolCycles = $school->getSchoolCycles();
$schoolType->setTranslatableLocale($this->locale);
$this->em->refresh($schoolType);
$schoolReligion->setTranslatableLocale($this->locale);
$this->em->refresh($schoolReligion);
$schoolLanguage->setTranslatableLocale($this->locale);
$this->em->refresh($schoolLanguage);
$school->setTranslatableLocale($this->locale);
$this->em->refresh($school);
foreach ($schoolCycles as $sc){
$sc->setTranslatableLocale($this->locale);
$this->em->refresh($sc);
$school->addSchoolCycle($sc);
}
$school->setSchoolType($schoolType);
$school->setSchoolReligion($schoolReligion);
$school->setSchoolLanguage($schoolLanguage);
}
$this->siteInfo['info'] = $school;
$pageBlog = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_blog']);
if($pageBlog !== null && $pageBlog->getStage()){
$entities2 = $this->em->getRepository(Article::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC'],10,0);
$this->siteInfo['articles'] = [];
$this->siteInfo['educati_articles'] = [];
if(count($entities2)>0){
foreach ($entities2 as $n){
$cat = $n->getCategory();
$cat->setTranslatableLocale($this->locale);
$this->em->refresh($cat);
$n->setTranslatableLocale($this->locale);
$this->em->refresh($n);
$n->setCategory($cat);
}
$this->siteInfo['articles'] = $entities2;
}
if($this->siteInfo['school_global']['display_educati_news']){
$index = $request->query->getInt('page', 1) -1;
$url = $this->bag->get('educati_articles')."/10/".$index.'?lang='.$this->locale;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
$content = json_decode($resp, true);
if($content['data'] === null){
$content['data'] = [];
}
$this->siteInfo['educati_articles'] =$content['data'];
}
$this->siteInfo['display_articles'] =1;
$pageBlog->setTranslatableLocale($this->locale);
$this->em->refresh($pageBlog);
$this->siteInfo['page_blog'] =$pageBlog;
}
else{
$this->siteInfo['articles']=[];
$this->siteInfo['educati_articles'] = [];
$this->siteInfo['display_articles']=0;
}
//$result = file_get_contents($this->bag->get('educati_notifications'));
//$content = json_decode($result, true);
$url = $this->bag->get('educati_notifications').'?lang='.$this->locale;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
$content = json_decode($resp, true);
$notifs = $this->em->getRepository(Notification::class)->findBy(['isActive'=>true,'stage'=>1],['date'=>'DESC']);
foreach ($notifs as $n){
$n->setTranslatableLocale($this->locale);
$this->em->refresh($n);
}
$this->siteInfo['educati_notifs'] =$content['data'];
$this->siteInfo['school_notifs'] =$notifs;
$this->siteInfo['date_now'] =new \DateTime();
/*switch ($page->getModel()){
case 1:
return $this->render('frontend/home/model_1.html.twig', $this->siteInfo);
default:
break;
}*/
return $this->render('frontend/home/model_'.$page->getModel().'.html.twig', $this->siteInfo);
case 'admin_page_director_speech':
switch ($page->getModel()){
case 1:
return $this->render('frontend/director_speech/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/director_speech/model_1.html.twig', $this->siteInfo);
case 'admin_page_about_us':
switch ($page->getModel()){
case 1:
return $this->render('frontend/about_us/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/about_us/model_1.html.twig', $this->siteInfo);
case 'admin_page_our_mission':
switch ($page->getModel()){
case 1:
return $this->render('frontend/our_mission/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/about_us/model_1.html.twig', $this->siteInfo);
case 'admin_page_story':
$entities = $this->em->getRepository(Story::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC']);
foreach ($entities as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['stories'] = $entities;
switch ($page->getModel()){
case 1:
return $this->render('frontend/our_story/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/our_story/model_1.html.twig', $this->siteInfo);
case 'admin_page_team':
$entities = $this->em->getRepository(Team::class)->findBy(['isActive'=>true,'stage'=>1],['rank'=>'ASC']);
$this->siteInfo['teams'] = $entities;
switch ($page->getModel()){
case 1:
return $this->render('frontend/team/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/team/model_1.html.twig', $this->siteInfo);
case 'admin_page_activity':
$entities = $this->em->getRepository(Club::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC']);
foreach ($entities as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['clubs'] = $entities;
switch ($page->getModel()){
case 1:
return $this->render('frontend/club/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/club/model_1.html.twig', $this->siteInfo);
case 'admin_page_infrastructure':
$entities = $this->em->getRepository(Infrastructure::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC']);
foreach ($entities as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['infras'] = $entities;
switch ($page->getModel()){
case 1:
return $this->render('frontend/infrastructure/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/infrastructure/model_1.html.twig', $this->siteInfo);
case 'admin_page_pedagogy':
$entities = $this->em->getRepository(ClassLevel::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC']);
$entities2 = $this->em->getRepository(SchoolDepartment::class)->findBy(['isActive'=>true],['id'=>'ASC']);
foreach ($entities as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
foreach ($entities2 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['classes'] = $entities;
$this->siteInfo['departments'] = $entities2;
switch ($page->getModel()){
case 1:
return $this->render('frontend/pedagogy/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/pedagogy/model_1.html.twig', $this->siteInfo);
case 'admin_page_admission':
$entities = $this->em->getRepository(AdmissionInfo::class)->findBy(['isActive'=>true,'stage'=>1]);
$entities2 = $this->em->getRepository(AdmissionPage::class)->findBy(['isActive'=>true,]);
foreach ($entities as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
foreach ($entities2 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['admission_pages'] = $entities2;
$this->siteInfo['admission_infos'] = $entities;
switch ($page->getModel()){
case 1:
return $this->render('frontend/admission/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/admission/model_1.html.twig', $this->siteInfo);
case 'admin_page_calendar':
$entities = $this->em->getRepository(EventSchool::class)->findBy(['isActive'=>true, 'stage'=>1],['dateEvent'=>'DES']);
$send =[];
foreach ($entities as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
$i = $this->mycontainer->get(MySerializer::class)->singleObjectToArray($s,'event_all');
$i['date_event2'] = explode('T',$i['date_event'])[0];
if((new \DateTime())>$s->getDateEvent()){
$i['past']='1';
}
else{
$i['past']='0';
}
$send[] = $i;
}
$this->siteInfo['events'] = $send;
switch ($page->getModel()){
case 1:
return $this->render('frontend/calendar/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/calendar/model_1.html.twig', $this->siteInfo);
case 'admin_page_partner':
$entities = $this->em->getRepository(Partner::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC']);
foreach ($entities as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['partners'] = $entities;
switch ($page->getModel()){
case 1:
return $this->render('frontend/partner/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/partner/model_1.html.twig', $this->siteInfo);
case 'admin_page_gallery':
$entities = $this->em->getRepository(GalleryItem::class)->findBy(['isActive'=>true,'stage'=>1]);
foreach ($entities as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['items'] = $entities;
switch ($page->getModel()){
case 1:
return $this->render('frontend/gallery/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/gallery/model_1.html.twig', $this->siteInfo);
case 'admin_page_contact':
$entities = $this->em->getRepository(Phone::class)->findBy(['isActive'=>true,'stage'=>1]);
$entities2 = $this->em->getRepository(OpenDay::class)->findBy(['isActive'=>true,'stage'=>1]);
$this->siteInfo['phones'] = $entities;
$this->siteInfo['days'] = $entities2;
switch ($page->getModel()){
case 1:
return $this->render('frontend/contact/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/contact/model_1.html.twig', $this->siteInfo);
case 'admin_page_blog':
$entities = $this->em->getRepository(ArticleCategory::class)->findBy(['isActive'=>true,'stage'=>1]);
$entities2 = $this->em->getRepository(Article::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC','id'=>'DESC']);
$totalAr = count($entities2);
$notifs = $this->em->getRepository(Notification::class)->findBy(['isActive'=>true,'stage'=>1],['date'=>'DESC']);
foreach ($notifs as $n){
$n->setTranslatableLocale($this->locale);
$this->em->refresh($n);
}
foreach ($entities as $n){
$n->setTranslatableLocale($this->locale);
$this->em->refresh($n);
}
foreach ($entities2 as $n){
$cat = $n->getCategory();
$cat->setTranslatableLocale($this->locale);
$this->em->refresh($cat);
$n->setTranslatableLocale($this->locale);
$this->em->refresh($n);
$n->setCategory($cat);
}
//$result = file_get_contents($this->bag->get('educati_notifications'));
//$content = json_decode($result, true);
$url = $this->bag->get('educati_notifications').'?lang='.$this->locale;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
$content = json_decode($resp, true);
$this->siteInfo['educati_notifs'] =$content['data'];
$this->siteInfo['school_notifs'] =$notifs;
$this->siteInfo['date_now'] =new \DateTime();
$articles = $paginator->paginate(
$entities2,$request->query->getInt('page', 1), 10
);
$this->siteInfo['categories'] = $entities;
$this->siteInfo['articles'] = $articles;
$this->siteInfo['articles_to_display'] = $articles;
if($this->siteInfo['school_global']['display_educati_news']){
$index = $request->query->getInt('page', 1) -1;
$url = $this->bag->get('educati_articles')."/10/".$index.'?lang='.$this->locale;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
$content = json_decode($resp, true);
$this->siteInfo['educati_articles'] = $content['data']===null?[]:$content['data'];
if($content['data'] === null){
$content['data'] = [];
}
$this->siteInfo['articles_to_display'] = array_merge($articles->getItems(),$content['data']);
shuffle($this->siteInfo['articles_to_display']);
}
switch ($page->getModel()){
case 1:
return $this->render('frontend/blog/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/blog/model_1.html.twig', $this->siteInfo);
case 'admin_page_bank_of_test':
switch ($page->getModel()){
case 1:
$class = $request->query->get('class');
$level = $request->query->get('level');
$field = $request->query->get('field');
$arrayFilter = ['isActive'=>true,'stage'=>1];
if($class !== null && strlen($class)>0 && $class!= "x"){
$arrayFilter['schoolClass']=$class;
}
if($level !== null && strlen($level)>0 && $level!= "x"){
$arrayFilter['difficultyLevel']=$level;
}
if($field !== null && strlen($field)>0 && $field!= "x"){
$arrayFilter['classCourse']=$field;
}
$entities = $this->em->getRepository(SchoolTest::class)->findBy($arrayFilter,['date'=>'DESC']);
$classesLevel = $this->em->getRepository(ClassLevel::class)->findBy(['isActive'=>true],['position'=>'ASC']);
$courses = $this->em->getRepository(ClassCourse::class)->findBy(['isActive'=>true],['position'=>'ASC']);
$this->siteInfo['class_level'] = [];
$this->siteInfo['courses'] = [];
foreach ($courses as $e){
$e->setTranslatableLocale($this->locale);
$this->em->refresh($e);
$this->siteInfo['courses'][]=$e;
}
foreach ($classesLevel as $e){
$e->setTranslatableLocale($this->locale);
$this->em->refresh($e);
$this->siteInfo['class_level'][]=$e;
}
foreach ($entities as $n){
$cat = $n->getClassCourse();
$cat->setTranslatableLocale($this->locale);
$this->em->refresh($cat);
$cl = $n->getSchoolClass();
$cl->setTranslatableLocale($this->locale);
$this->em->refresh($cl);
$n->setClassCourse($cat);
$n->setSchoolClass($cl);
}
$tests = $paginator->paginate(
$entities,$request->query->getInt('page', 1), 20
);
$this->siteInfo['tests'] = $tests;
return $this->render('frontend/bank_of_test/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/home/model_1.html.twig', $this->siteInfo);
case 'admin_page_students':
switch ($page->getModel()){
case 1:
$cu = $this->mycontainer->get('security.token_storage')->getToken();
$res = [];
if($cu !== null && $cu !=='.anon'){
$cu = $cu->getUser();
$students = $this->em->getRepository(StudentNote::class)->findByParent($cu->getEmail());
foreach ($students as $item){
$key = $item->getStudent()->getRegistrationNumber();
if(!array_key_exists(trim($key),$res)){
$res[trim($key)]=['name'=>$item->getStudent()->getName()." ".$item->getStudent()->getSurName(),'notes'=>[],'class'=>$item->getStudent()->getClassLevelItem()->getName()];
$res[trim($key)]['notes'][]=$item;
}
else{
$res[trim($key)]['notes'][]=$item;
}
}
}
$this->siteInfo['data']=$res;
return $this->render('frontend/student_mark/model_1.html.twig', $this->siteInfo);
default:
break;
}
return $this->render('frontend/home/model_1.html.twig', $this->siteInfo);
}
}
public function showArticleCategory(Request $request,$slug, PaginatorInterface $paginator){
$referer = $request->headers->get('referer');
$page = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_blog']);
if($page === null){
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('page_not_found')
);
return $this->redirect($referer ?? '/');
}
$page->setTranslatableLocale($this->locale);
$this->em->refresh($page);
$this->siteInfo['page'] = $page;
$this->siteInfo['page_admink_link'] = $page->getAdminLink();
$category = $this->em->getRepository(ArticleCategory::class)->findOneBy(['slug'=>$slug]);
if($category === null){
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('page_not_found')
);
return $this->redirect($referer ?? '/');
}
$entities2 = $this->em->getRepository(Article::class)->findBy(['isActive'=>true,'stage'=>1,'category'=>$category],['position'=>'ASC','id'=>'DESC']);
foreach ($entities2 as $n){
$cat = $n->getCategory();
$cat->setTranslatableLocale($this->locale);
$this->em->refresh($cat);
$n->setTranslatableLocale($this->locale);
$this->em->refresh($n);
$n->setCategory($cat);
}
$articles = $paginator->paginate(
$entities2,$request->query->getInt('page', 1), 10
);
$entities = $this->em->getRepository(ArticleCategory::class)->findBy(['isActive'=>true,'stage'=>1]);
foreach ($entities as $n){
$n->setTranslatableLocale($this->locale);
$this->em->refresh($n);
}
$this->siteInfo['articles'] = $articles;
$this->siteInfo['categories'] = $entities;
$this->siteInfo['cat_current'] = $category->getId();
$this->siteInfo['articles_to_display'] = $articles;
if($this->siteInfo['school_global']['display_educati_news']){
$index = $request->query->getInt('page', 1) -1;
//$result = file_get_contents($this->bag->get('educati_articles')."/3/".$index);
//$content = json_decode($result, true);
$url = $this->bag->get('educati_articles')."/10/".$index;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
$content = json_decode($resp, true);
if($content['data'] === null){
$content['data'] = [];
}
$this->siteInfo['educati_articles'] =$content['data'];
$this->siteInfo['articles_to_display'] = array_merge($articles->getItems(),$content['data']);
shuffle($this->siteInfo['articles_to_display']);
}
return $this->render('frontend/blog/articles_model_1.html.twig', $this->siteInfo);
}
public function showArticleByUser(Request $request,$id, PaginatorInterface $paginator){
$referer = $request->headers->get('referer');
$page = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_blog']);
if($page === null){
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('page_not_found')
);
return $this->redirect($referer ?? '/');
}
$page->setTranslatableLocale($this->locale);
$this->em->refresh($page);
$this->siteInfo['page'] = $page;
$this->siteInfo['page_admink_link'] = $page->getAdminLink();
$tab = explode('-',$id);
$user = $this->em->getRepository(User::class)->findOneBy(['id'=>$tab[array_key_last($tab)]]);
if($user === null){
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('user_not_found')
);
return $this->redirect($referer ?? '/');
}
$entities2 = $this->em->getRepository(Article::class)->findBy(['isActive'=>true,'stage'=>1,'user'=>$user],['position'=>'ASC','id'=>'DESC']);
foreach ($entities2 as $n){
$cat = $n->getCategory();
$cat->setTranslatableLocale($this->locale);
$this->em->refresh($cat);
$n->setTranslatableLocale($this->locale);
$this->em->refresh($n);
$n->setCategory($cat);
}
$articles = $paginator->paginate(
$entities2,$request->query->getInt('page', 1), 10
);
$entities = $this->em->getRepository(ArticleCategory::class)->findBy(['isActive'=>true,'stage'=>1]);
foreach ($entities as $n){
$n->setTranslatableLocale($this->locale);
$this->em->refresh($n);
}
$this->siteInfo['articles'] = $articles;
$this->siteInfo['categories'] = $entities;
$this->siteInfo['user'] = $user;
$this->siteInfo['articles_to_display'] = $articles;
if($this->siteInfo['school_global']['display_educati_news']){
$index = $request->query->getInt('page', 1) -1;
//$result = file_get_contents($this->bag->get('educati_articles')."/3/".$index);
//$content = json_decode($result, true);
$url = $this->bag->get('educati_articles')."/10/".$index.'?lang='.$this->locale;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
$content = json_decode($resp, true);
$this->siteInfo['educati_articles'] =$content['data'];
if($content['data'] === null){
$content['data'] = [];
}
$this->siteInfo['articles_to_display'] = array_merge($articles->getItems(),$content['data']);
shuffle($this->siteInfo['articles_to_display']);
}
return $this->render('frontend/blog/articles_user_model_1.html.twig', $this->siteInfo);
}
public function showArticle(Request $request, $slug){
$referer = $request->headers->get('referer');
$article = $this->em->getRepository(Article::class)->findOneBy(['slug'=>$slug]);
if($article === null){
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('page_not_found')
);
return $this->redirect($referer ?? '/');
}
$cat = $article->getCategory();
$cat->setTranslatableLocale($this->locale);
$this->em->refresh($cat);
$article->setTranslatableLocale($this->locale);
$this->em->refresh($article);
$article->setCategory($cat);
$page = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_blog']);
if($page === null){
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('page_not_found')
);
return $this->redirect($referer ?? '/');
}
$page->setTranslatableLocale($this->locale);
$this->em->refresh($page);
$this->siteInfo['page'] = $page;
$this->siteInfo['page_admink_link'] = $page->getAdminLink();
$recents = $this->em->getRepository(Article::class)->findRecentExcept($article->getId());
foreach ($recents as $n){
$cat = $n->getCategory();
$cat->setTranslatableLocale($this->locale);
$this->em->refresh($cat);
$n->setTranslatableLocale($this->locale);
$this->em->refresh($n);
$n->setCategory($cat);
}
$this->siteInfo['article'] = $article;
$this->siteInfo['recents'] = $recents;
$social = new SocialMedia();
$links = $social->GetSocialMediaSiteLinks_WithShareLinks([
'url'=>$this->bag->get('base_url').$this->generateUrl('blog_show_article',['slug'=>$article->getSlug()]),
'title'=>$article->getTitle()
]);
$this->siteInfo['links'] = $links;
$this->siteInfo['articles_to_display'] = $recents;
if($this->siteInfo['school_global']['display_educati_news']){
$index = $request->query->getInt('page', 1) -1;
//$result = file_get_contents($this->bag->get('educati_articles')."/5/".$index);
//$content = json_decode($result, true);
$url = $this->bag->get('educati_articles')."/10/".$index.'?lang='.$this->locale;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
$content = json_decode($resp, true);
$this->siteInfo['educati_articles'] =$content['data'];
if($content['data'] === null){
$content['data'] = [];
}
$this->siteInfo['articles_to_display'] = array_merge($recents,$content['data']);
shuffle($this->siteInfo['articles_to_display']);
}
return $this->render('frontend/blog/show_article_model_1.html.twig', $this->siteInfo);
}
public function summarySchool(Request $request){
$school = $this->em->getRepository(School::class)->findOneBy([]);
if($school !== null){
$schoolType = $school->getSchoolType();
$schoolReligion = $school->getSchoolReligion();
$schoolLanguage = $school->getSchoolLanguage();
$schoolCycles = $school->getSchoolCycles();
$schoolType->setTranslatableLocale($this->locale);
$this->em->refresh($schoolType);
$schoolReligion->setTranslatableLocale($this->locale);
$this->em->refresh($schoolReligion);
$schoolLanguage->setTranslatableLocale($this->locale);
$this->em->refresh($schoolLanguage);
$school->setTranslatableLocale($this->locale);
$this->em->refresh($school);
foreach ($schoolCycles as $sc){
$sc->setTranslatableLocale($this->locale);
$this->em->refresh($sc);
$school->addSchoolCycle($sc);
}
$school->setSchoolType($schoolType);
$school->setSchoolReligion($schoolReligion);
$school->setSchoolLanguage($schoolLanguage);
}
$this->siteInfo['info'] = $school;
return $this->render('frontend/summary/model_1.html.twig', $this->siteInfo);
}
public function about(Request $request){
$pageAbout = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_about_us','stage'=>1]);
if($pageAbout !== null){
$pageAbout->setTranslatableLocale($this->locale);
$this->em->refresh($pageAbout);
}
$pageStory = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_story','stage'=>1]);
if($pageStory !== null){
$pageStory->setTranslatableLocale($this->locale);
$this->em->refresh($pageStory);
}
$pageTeam = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_team','stage'=>1]);
if($pageTeam !== null){
$pageTeam->setTranslatableLocale($this->locale);
$this->em->refresh($pageTeam);
}
if($pageStory !== null){
$entitiesStory = $this->em->getRepository(Story::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC']);
foreach ($entitiesStory as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['stories'] = $entitiesStory;
}
else{
$this->siteInfo['stories']=[];
}
if($pageTeam !== null){
$this->siteInfo['teams'] = [];
$entitiesTeam = $this->em->getRepository(Team::class)->findBy(['isActive'=>true,'stage'=>1],['rank'=>'ASC']);
foreach ($entitiesTeam as $s){
$position = $s->getPosition();
$departement = $s->getDepartment();
$position->setTranslatableLocale($this->locale);
$departement->setTranslatableLocale($this->locale);
$this->em->refresh($position);
$this->em->refresh($departement);
$s->setDepartment($departement);
$s->setPosition($position);
$this->siteInfo['teams'][] = $s;
}
}
else{
$this->siteInfo['teams'] = [];
}
$this->siteInfo['page_about'] = $pageAbout;
$this->siteInfo['page_story'] = $pageStory;
$this->siteInfo['page_team'] = $pageTeam;
return $this->render('frontend/static/about.html.twig', $this->siteInfo);
}
public function schoolLife(Request $request){
$pageInfras = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_infrastructure','stage'=>1]);
if($pageInfras !== null){
$pageInfras->setTranslatableLocale($this->locale);
$this->em->refresh($pageInfras);
}
$pageActivities = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_activity','stage'=>1]);
if($pageActivities !== null){
$pageActivities->setTranslatableLocale($this->locale);
$this->em->refresh($pageActivities);
}
$pagePartners = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_partner','stage'=>1]);
if($pagePartners !== null){
$pagePartners->setTranslatableLocale($this->locale);
$this->em->refresh($pagePartners);
}
$pageMission = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_our_mission','stage'=>1]);
if($pageMission !== null){
$pageMission->setTranslatableLocale($this->locale);
$this->em->refresh($pageMission);
}
if($pageInfras !== null){
$entities1 = $this->em->getRepository(Infrastructure::class)->findBy(['stage'=>1,'isActive'=>true],['position'=>'ASC','name'=>'ASC']);
foreach ($entities1 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['infras'] = $entities1;
}
else{
$this->siteInfo['infras'] = [];
}
if($pageActivities !== null){
$entities2 = $this->em->getRepository(Club::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC']);
foreach ($entities2 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['clubs'] = $entities2;
}
else{
$this->siteInfo['clubs'] = [];
}
if($pagePartners !== null){
$entities = $this->em->getRepository(Partner::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC']);
foreach ($entities as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['partners'] = $entities;
}
else{
$this->siteInfo['partners'] = [];
}
$this->siteInfo['page_infrastructure'] = $pageInfras;
$this->siteInfo['page_activity'] = $pageActivities;
$this->siteInfo['page_partner'] = $pagePartners;
$this->siteInfo['page_mission'] = $pageMission;
return $this->render('frontend/static/school_life.html.twig', $this->siteInfo);
}
public function studentAndParent(Request $request){
$pagePeda= $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_pedagogy','stage'=>1]);
if($pagePeda !== null){
$pagePeda->setTranslatableLocale($this->locale);
$this->em->refresh($pagePeda);
}
$pageCalendar = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_calendar','stage'=>1]);
if($pageCalendar !== null){
$pageCalendar->setTranslatableLocale($this->locale);
$this->em->refresh($pageCalendar);
}
$pageAdmission = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_admission','stage'=>1]);
if($pageAdmission !== null){
$pageAdmission->setTranslatableLocale($this->locale);
$this->em->refresh($pageAdmission);
}
if($pageCalendar !== null)
{
$entities3 = $this->em->getRepository(EventSchool::class)->findBy(['isActive'=>true, 'stage'=>1],['dateEvent'=>'DESC']);
$send =[];
foreach ($entities3 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
$i = $this->mycontainer->get(MySerializer::class)->singleObjectToArray($s,'event_all');
$i['date_event2'] = explode('T',$i['date_event'])[0];
if((new \DateTime())>$s->getDateEvent()){
$i['past']='1';
}
else{
$i['past']='0';
}
$send[] = $i;
}
$this->siteInfo['events'] = $send;
}
else{
$this->siteInfo['events'] = [];
}
if($pagePeda !== null){
$entities = $this->em->getRepository(ClassLevel::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC']);
$entities2 = $this->em->getRepository(SchoolDepartment::class)->findBy(['isActive'=>true],['id'=>'ASC']);
foreach ($entities as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
foreach ($entities2 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['classes'] = $entities;
$this->siteInfo['departments'] = $entities2;
}
else{
$this->siteInfo['classes'] = [];
$this->siteInfo['departments'] = [];
}
if($pageAdmission !== null){
$entities4 = $this->em->getRepository(AdmissionInfo::class)->findBy(['isActive'=>true,'stage'=>1]);
$entities5 = $this->em->getRepository(AdmissionPage::class)->findBy(['isActive'=>true,]);
foreach ($entities4 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
foreach ($entities5 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['admission_pages'] = $entities5;
$this->siteInfo['admission_infos'] = $entities4;
}
else{
$this->siteInfo['admission_pages'] = [];
$this->siteInfo['admission_infos'] = [];
}
$this->siteInfo['page_pedagogy'] = $pagePeda;
$this->siteInfo['page_calendar'] = $pageCalendar;
$this->siteInfo['page_admission'] = $pageAdmission;
return $this->render('frontend/static/student_parent.html.twig', $this->siteInfo);
}
public function bankOfTest(Request $request): Response
{
$pagePeda= $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_pedagogy','stage'=>1]);
if($pagePeda !== null){
$pagePeda->setTranslatableLocale($this->locale);
$this->em->refresh($pagePeda);
}
$pageCalendar = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_calendar','stage'=>1]);
if($pageCalendar !== null){
$pageCalendar->setTranslatableLocale($this->locale);
$this->em->refresh($pageCalendar);
}
$pageAdmission = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_admission','stage'=>1]);
if($pageAdmission !== null){
$pageAdmission->setTranslatableLocale($this->locale);
$this->em->refresh($pageAdmission);
}
if($pageCalendar !== null)
{
$entities3 = $this->em->getRepository(EventSchool::class)->findBy(['isActive'=>true, 'stage'=>1],['dateEvent'=>'DESC']);
$send =[];
foreach ($entities3 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
$i = $this->mycontainer->get(MySerializer::class)->singleObjectToArray($s,'event_all');
$i['date_event2'] = explode('T',$i['date_event'])[0];
if((new \DateTime())>$s->getDateEvent()){
$i['past']='1';
}
else{
$i['past']='0';
}
$send[] = $i;
}
$this->siteInfo['events'] = $send;
}
else{
$this->siteInfo['events'] = [];
}
if($pagePeda !== null){
$entities = $this->em->getRepository(ClassLevel::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC']);
$entities2 = $this->em->getRepository(SchoolDepartment::class)->findBy(['isActive'=>true],['id'=>'ASC']);
foreach ($entities as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
foreach ($entities2 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['classes'] = $entities;
$this->siteInfo['departments'] = $entities2;
}
else{
$this->siteInfo['classes'] = [];
$this->siteInfo['departments'] = [];
}
if($pageAdmission !== null){
$entities4 = $this->em->getRepository(AdmissionInfo::class)->findBy(['isActive'=>true,'stage'=>1]);
$entities5 = $this->em->getRepository(AdmissionPage::class)->findBy(['isActive'=>true,]);
foreach ($entities4 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
foreach ($entities5 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['admission_pages'] = $entities5;
$this->siteInfo['admission_infos'] = $entities4;
}
else{
$this->siteInfo['admission_pages'] = [];
$this->siteInfo['admission_infos'] = [];
}
$this->siteInfo['page_pedagogy'] = $pagePeda;
$this->siteInfo['page_calendar'] = $pageCalendar;
$this->siteInfo['page_admission'] = $pageAdmission;
return $this->render('frontend/static/student_parent.html.twig', $this->siteInfo);
}
public function contactMessage(Request $request): RedirectResponse
{
$referer = $request->headers->get('referer');
$data = $request->request->all();
if(!array_key_exists('name',$data)){
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('field required').' name'
);
return $this->redirect($referer);
}
if(!array_key_exists('email',$data)){
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('field required').' email'
);
return $this->redirect($referer);
}
if(!array_key_exists('message',$data)){
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('field required').' message'
);
$referer = $request->headers->get('referer');
return $this->redirect($referer);
}
if (!filter_var($data["email"], FILTER_VALIDATE_EMAIL))
{
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('invalid email')
);
return $this->redirect($referer);
}
$mess = new Message();
$mess->setName($data['name']);
$mess->setEmail($data['email']);
$mess->setMessage($data['message']);
$test = strlen($this->siteInfo['message_email'])>0 && strlen($this->siteInfo['message_password'])>0
&& strlen($this->siteInfo['message_smtp'])>0 && strlen($this->siteInfo['message_port']);
if($test === false){
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('smtp server parameters are not set')
);
return $this->redirect($referer);
}
$dsn = "smtp://".trim($this->siteInfo['message_email']).":".trim($this->siteInfo['message_password'])."@".trim($this->siteInfo['message_smtp']).":".trim($this->siteInfo['message_port']);
$transport = Transport::fromDsn($dsn);
$customMailer = new Mailer($transport);
$email = $data['email'];
$logo = $this->siteInfo['school_global']['logo'];
$message = (new TemplatedEmail())
->subject('Contact '.$this->siteInfo['school_global']['name'])
//->from($this->siteInfo['email'])
->from($this->siteInfo['message_email'])
->to($email)
->cc($this->siteInfo['message_email'])
->htmlTemplate('mail_message.html.twig')
->context(['message' => $mess->getMessage(),'name'=>$data['name'],'email1'=>$email,'logo'=>$logo,'company'=>$this->siteInfo['school_global']['name']]);
$message2 = (new TemplatedEmail())
->subject('Contact '.$this->siteInfo['school_global']['name'])
->from($this->siteInfo['message_email'])
->to($email)
->htmlTemplate('thanks.html.twig')
->context(['name' => $data['name'],'message'=>$data['message'],'email1'=>$data['email'],'logo'=>$logo,'company'=>$this->siteInfo['school_global']['name']])
;
$loader = new FilesystemLoader([$this->mycontainer->get("kernel")->getProjectDir().'/templates/']);
try {
$loader->addPath($this->mycontainer->get("kernel")->getProjectDir() . '/public/uploads/', 'images');
} catch (LoaderError $e) {
$this->addFlash(
'notice',
$e->getMessage()
);
return $this->redirect($referer);
}
$twigEnv = new Environment($loader);
$twigBodyRenderer = new BodyRenderer($twigEnv);
$twigBodyRenderer->render($message);
try {
$customMailer->send($message);
}catch (\Symfony\Component\Mailer\Exception\TransportExceptionInterface $e) {
$this->addFlash(
'notice',
$e->getMessage()
);
return $this->redirect($referer);
}
$twigBodyRenderer2 = new BodyRenderer($twigEnv);
$twigBodyRenderer2->render($message2);
try {
$customMailer->send($message2);
} catch (\Symfony\Component\Mailer\Exception\TransportExceptionInterface $e) {
$this->addFlash(
'notice',
$e->getMessage()
);
return $this->redirect($referer);
}
$this->em->persist($mess);
$this->em->flush();
$this->addFlash(
'notice',
$this->mycontainer->get('translator')->trans('message saved')
);
return $this->redirect($referer);
}
public function studentNote(Request $request): Response
{
$pagePeda= $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_pedagogy','stage'=>1]);
if($pagePeda !== null){
$pagePeda->setTranslatableLocale($this->locale);
$this->em->refresh($pagePeda);
}
$pageCalendar = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_calendar','stage'=>1]);
if($pageCalendar !== null){
$pageCalendar->setTranslatableLocale($this->locale);
$this->em->refresh($pageCalendar);
}
$pageAdmission = $this->em->getRepository(Page::class)->findOneBy(['adminLink'=>'admin_page_admission','stage'=>1]);
if($pageAdmission !== null){
$pageAdmission->setTranslatableLocale($this->locale);
$this->em->refresh($pageAdmission);
}
if($pageCalendar !== null)
{
$entities3 = $this->em->getRepository(EventSchool::class)->findBy(['isActive'=>true, 'stage'=>1],['dateEvent'=>'DESC']);
$send =[];
foreach ($entities3 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
$i = $this->mycontainer->get(MySerializer::class)->singleObjectToArray($s,'event_all');
$i['date_event2'] = explode('T',$i['date_event'])[0];
if((new \DateTime())>$s->getDateEvent()){
$i['past']='1';
}
else{
$i['past']='0';
}
$send[] = $i;
}
$this->siteInfo['events'] = $send;
}
else{
$this->siteInfo['events'] = [];
}
if($pagePeda !== null){
$entities = $this->em->getRepository(ClassLevel::class)->findBy(['isActive'=>true,'stage'=>1],['position'=>'ASC']);
$entities2 = $this->em->getRepository(SchoolDepartment::class)->findBy(['isActive'=>true],['id'=>'ASC']);
foreach ($entities as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
foreach ($entities2 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['classes'] = $entities;
$this->siteInfo['departments'] = $entities2;
}
else{
$this->siteInfo['classes'] = [];
$this->siteInfo['departments'] = [];
}
if($pageAdmission !== null){
$entities4 = $this->em->getRepository(AdmissionInfo::class)->findBy(['isActive'=>true,'stage'=>1]);
$entities5 = $this->em->getRepository(AdmissionPage::class)->findBy(['isActive'=>true,]);
foreach ($entities4 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
foreach ($entities5 as $s){
$s->setTranslatableLocale($this->locale);
$this->em->refresh($s);
}
$this->siteInfo['admission_pages'] = $entities5;
$this->siteInfo['admission_infos'] = $entities4;
}
else{
$this->siteInfo['admission_pages'] = [];
$this->siteInfo['admission_infos'] = [];
}
$this->siteInfo['page_pedagogy'] = $pagePeda;
$this->siteInfo['page_calendar'] = $pageCalendar;
$this->siteInfo['page_admission'] = $pageAdmission;
return $this->render('frontend/static/student_parent.html.twig', $this->siteInfo);
}
}