<?php
namespace App\Controller\Admin;
use App\Entity\Configurations;
use App\Entity\CrossApp;
use App\Entity\User;
use App\Form\AboutForm;
use App\H3\TTControllerTrait;
use App\Repository\ConfigurationsRepository;
use Doctrine\ORM\EntityManagerInterface;
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
use EasyCorp\Bundle\EasyAdminBundle\Router\CrudUrlGenerator;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class AboutAppController extends AbstractDashboardController
{
use TTControllerTrait;
/**
* @var CrudUrlGenerator
*/
private $crudUrlGenerator;
public function __construct(CrudUrlGenerator $crudUrlGenerator)
{
$this->crudUrlGenerator = $crudUrlGenerator;
}
/**
* @return Response
* @Route("/admin")
*/
public function index(): Response
{
/** @var User $user */
$user = $this->getUser();
if ( $user->is_admin() )
return $this->redirect( $this->crudUrlGenerator->build()
->setController(ApplicationCrudController::class)->setAction(Action::INDEX)
->generateUrl() );
if ( null == $user->getCrossApps() ){
return new JsonResponse('no app for this user');
} else{
/** @var CrossApp $app */
$app = $user->getCrossApps()[0];
return $this->redirectToRoute('edit.cross.app', [
'id' => $app->getId()
]);
}
}
/**
* @Route("/admin/app/about", name="edit_about")
*/
public function edit_about(ConfigurationsRepository $configurationsRepository, EntityManagerInterface $entityManager, Request $request){
/** @var Configurations|null $check_title */
$check_title = $configurationsRepository->findOneBy(['config_key' => 'about_title']);
/** @var Configurations|null $check_content */
$check_content = $configurationsRepository->findOneBy(['config_key' => 'about_content']);
if ( null == $check_title ){
$check_title = (new Configurations())
->setConfigValue('A propos de Yziapp')
->setConfigKey('about_title');
$entityManager->persist($check_title);
$entityManager->flush();
}
if ( null == $check_content ){
$check_content = (new Configurations())
->setConfigValue('.')
->setConfigKey('about_content');
$entityManager->persist($check_content);
$entityManager->flush();
}
$form = $this->createForm(AboutForm::class, null, [
'd.title' => $check_title->getConfigValue(),
'd.content' => $check_content->getConfigValue()
]);
$form->handleRequest($request);
if ( $form->isSubmitted() and $form->isValid() ){
$check_title->setConfigValue($form->get('title')->getData());
$check_content->setConfigValue((null != $form->get('content')->getData() ? $form->get('content')->getData() : '-'));
$entityManager->persist($check_title);
$entityManager->flush();
$entityManager->persist($check_content);
$entityManager->flush();
$this->addFlash('success', 'Opération réussie');
return $this->redirectToRoute('edit_about');
}
return $this->render('admin/about.app.html.twig', [
'form' => $form->createView()
]);
}
}