<?php
namespace App\Controller;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Twig\AppExtension;
use App\Entity\SettingsVideos;
use App\Repository\SettingsVideosRepository;
use App\Form\Filters\TestimonialFilter;
use App\Form\SettingsVideoForm;
#[Route('/settings-videos')]
class SettingsVideoController extends AbstractController
{
#[Route('/', methods: ['GET'], name: 'settings_video_index')]
public function index(Request $request,EntityManagerInterface $entityManager,AppExtension $appExtension): Response
{
$returnArray = array();
$crmMenu = $entityManager->getRepository(\App\Entity\CrmMenu::class)->findBy(['type' => 'mini','enable' => 1],['order' => 'ASC']);
if ($crmMenu) {
$returnArray = array();
foreach ($crmMenu as $menu) {
if($menu->getUrl() == 'user_logout'){
continue;
}
$items = array();
$items['main_menu'] = $menu->getLabel();
$items['main_url'] = $menu->getUrl();
$submenu = $entityManager->getRepository(\App\Entity\CrmMenu::class)->findBy(['submenu' => $menu->getMenuId(),'enable' => 1], ['order' => 'ASC']);
if ($submenu) {
$subMenuItems = array();
foreach ($submenu as $sub) {
$lastMenu = $displayMenu = $subMenu = array();
$subMenu['sub_menu'] = $sub->getLabel();
$subMenu['sub_url'] = $sub->getUrl();
if($sub->getExtraLink()){
$displayMenu[] = $sub->getUrl();
$extraLink = explode(',',$sub->getExtraLink());
$lastMenu = array_merge($displayMenu,$extraLink);
if ($lastMenu) {
$lastMenuItems = array();
foreach ($lastMenu as $last) {
$menuName = $appExtension->getMenuName($last);
if($menuName){
$lastMenuItems[$last] = $menuName;
}
}
if($lastMenuItems){
$subMenu['sub_sub_menu'] = $lastMenuItems;
}
}
}
$subMenuItems[] = $subMenu;
}
$items['sub_menu'] = $subMenuItems;
}
$returnArray[] = $items;
}
}
return $this->renderForm('settings-videos/index.html.twig', [
'crmMenu' => $returnArray,
]);
}
#[Route('/add', methods: ['GET', 'POST'], name: 'settings_video_add')]
public function settingsVideosAdd(Request $request,EntityManagerInterface $entityManager,AppExtension $appExtension){
$params = $request->query->all();
$route = $params['route'];
$settingsVideos = new SettingsVideos();
$form = $this->createForm(SettingsVideoForm::class, $settingsVideos);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$params = $request->request->all();
$route = $request->request->get('route');
$settingsVideos->setRouteName($route);
$settingsVideos->setVideoTitle($params['settings_video_form']['video_title']);
$settingsVideos->setVideoUrl($params['settings_video_form']['video_url']);
$entityManager->persist($settingsVideos);
$entityManager->flush();
$this->addFlash('success', 'Created successfully.');
return $this->redirectToRoute('settings_video_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('settings-videos/add.html.twig', [
'route' => $route,
'form' => $form,
'settingsVideos' => $settingsVideos,
]);
}
#[Route('/delete', methods: ['GET', 'POST'], name: 'settings_video_delete')]
public function settingsVideosDelete(Request $request,EntityManagerInterface $entityManager){
$params = $request->query->all();
$route = $params['route'];
if ($this->isCsrfTokenValid('delete'.$route, $request->request->get('_token'))) {
$route = $request->request->get('route');
$settingsVideos = $entityManager->getRepository(\App\Entity\SettingsVideos::class)->findOneBy(['routeName' => $route]);
if($settingsVideos){
$entityManager->remove($settingsVideos);
$entityManager->flush();
}
$this->addFlash('error', 'Delete successfully.');
return $this->redirectToRoute('settings_video_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('settings-videos/_delete_form.html.twig', [
'route' => $route
]);
}
#[Route('/edit', methods: ['GET', 'POST'], name: 'settings_video_edit')]
public function settingsVideosEdit(Request $request,EntityManagerInterface $entityManager){
$params = $request->query->all();
$route = $params['route'];
$settingsVideos = $entityManager->getRepository(\App\Entity\SettingsVideos::class)->findOneBy(['routeName' => $route]);
$form = $this->createForm(SettingsVideoForm::class, $settingsVideos);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$params = $request->request->all();
$route = $request->request->get('route');
$settingsVideos->setRouteName($route);
$settingsVideos->setVideoTitle($params['settings_video_form']['video_title']);
$settingsVideos->setVideoUrl($params['settings_video_form']['video_url']);
$entityManager->persist($settingsVideos);
$entityManager->flush();
$this->addFlash('success', 'Update successfully.');
return $this->redirectToRoute('settings_video_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('settings-videos/edit.html.twig', [
'route' => $route,
'form' => $form,
'settingsVideos' => $settingsVideos,
]);
}
}