<?php
namespace App\Controller\Admin;
use App\Entity\SEO;
use App\Entity\User;
use App\Entity\Legal;
use App\Entity\Video;
use App\Entity\Booking;
use App\Entity\Privacy;
use App\Entity\Profile;
use App\Entity\AboutArea;
use App\Entity\AboutInfo;
use App\Entity\HobbyArea;
use App\Entity\IntroArea;
use App\Entity\PageHeader;
use App\Entity\BookingMail;
use App\Entity\ContactForm;
use App\Entity\GalleryArea;
use App\Entity\HobbySingle;
use App\Entity\ProcessLogs;
use App\Entity\ServiceArea;
use App\Entity\Testimonial;
use App\Entity\GalleryImage;
use App\Entity\ServiceSingle;
use App\Service\StatsService;
use App\Entity\HomeMainSlider;
use App\Entity\BookingContract;
use App\Entity\GalleryCategory;
use App\Entity\ServiceCategory;
use App\Entity\TestimonialArea;
use App\Entity\BookingConstraint;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
use Symfony\Component\Security\Core\User\UserInterface;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
class DashboardController extends AbstractDashboardController
{
private $statService;
public function __construct(StatsService $statService)
{
$this->statService = $statService;
}
/**
* @Route("/admin1807", name="admin_dashboard")
*/
public function index(): Response
{
$stats = $this->statService->getStats();
return $this->render('bundles/EasyAdminBundle/page/content.html.twig', [
'stats'=>$stats,
]);
}
public function configureDashboard(): Dashboard
{
return Dashboard::new()
->setTitle('<img src="images/about/logo-admin-dark-h.png" width="175">')
->setFaviconPath('images/favicon.png')
->disableUrlSignatures()
->setTranslationDomain('admin_dashboard')
;
}
public function configureAssets(): Assets
{
return Assets::new()
->addCssFile('css/admin/admin.css')
->addJsFile('js/admin/Chart.min.js')
->addJsFile('js/admin/admin.js')
->addJsFile('js/admin/field-text-editor.js')
->addJsFile('js/admin/field-collection.js')
->addJsFile('js/admin/field-textarea.js')
->addJsFile('js/admin/field-slug.js')
->addJsFile('js/admin/field-image.js')
->addJsFile('js/admin/field-file-upload.js')
;
}
public function configureMenuItems(): iterable
{
yield MenuItem::linktoDashboard('Tableau de bord', 'fa fa-home');
yield MenuItem::linkToRoute('Retour au site', 'fas fa-arrow-alt-circle-left', 'home');
yield MenuItem::section('ACCES RAPIDE');
yield MenuItem::linkToCrud('Réservations', 'fas fa-calendar-day', Booking::class);
yield MenuItem::linkToCrud('Avis', 'fas fa-comment-dots', Testimonial::class);
yield MenuItem::linkToCrud('Messages', 'fas fa-envelope', ContactForm::class);
yield MenuItem::section('PRESENTATION');
yield MenuItem::linkToCrud('A propos', 'fas fa-question-circle', AboutInfo::class)
->setAction('detail')
->setEntityId(1);
yield MenuItem::linkToCrud('Vidéo', 'fab fa-youtube', Video::class)
->setAction('detail')
->setEntityId(1);
yield MenuItem::section('PRESTATIONS');
yield MenuItem::linkToCrud('Catégories', 'fas fa-box', ServiceCategory::class);
yield MenuItem::linkToCrud('Préstations', 'fas fa-th', ServiceSingle::class);
yield MenuItem::section('HOBBIES');
yield MenuItem::linkToCrud('Activités', 'fas fa-futbol', HobbySingle::class);
yield MenuItem::section('GALERIE');
yield MenuItem::linkToCrud('Catégories', 'fas fa-box', GalleryCategory::class);
yield MenuItem::linkToCrud('Images', 'fas fa-image', GalleryImage::class);
yield MenuItem::section('PAGES & SECTIONS');
yield MenuItem::subMenu('Pages & En-têtes', 'fas fa-grip-lines')->setSubItems([
MenuItem::linkToCrud('Accueil (slider)', 'fas fa-file', HomeMainSlider::class)
->setAction('detail')
->setEntityId(2),
MenuItem::linkToCrud('Autres pages', 'fas fa-copy', PageHeader::class)
]);
yield MenuItem::subMenu('Sections', 'fas fa-grip-lines')->setSubItems([
MenuItem::linkToCrud('Introduction', 'fas fa-file', IntroArea::class)
->setAction('detail')
->setEntityId(1),
MenuItem::linkToCrud('A propos', 'fas fa-file', AboutArea::class),
MenuItem::linkToCrud('Prestation', 'fas fa-file', ServiceArea::class)
->setAction('detail')
->setEntityId(2),
MenuItem::linkToCrud('Activités', 'fas fa-file', HobbyArea::class)
->setAction('detail')
->setEntityId(2),
MenuItem::linkToCrud('Galerie', 'fas fa-file', GalleryArea::class)
->setAction('detail')
->setEntityId(1),
MenuItem::linkToCrud('Avis', 'fas fa-file', TestimonialArea::class)
->setAction('detail')
->setEntityId(1)
]);
yield MenuItem::section('RESERVATIONS');
yield MenuItem::linkToCrud('Réservations', 'fas fa-calendar-day', Booking::class);
yield MenuItem::linkToCrud('Contraintes & CGV', 'fas fa-clipboard-check', BookingConstraint::class)
->setAction('detail')
->setEntityId(1);
yield MenuItem::linkToCrud('Contrat', 'fas fa-file', BookingContract::class)
->setAction('detail')
->setEntityId(1);
yield MenuItem::linkToCrud('Mails', 'fas fa-envelope', BookingMail::class);
yield MenuItem::linkToCrud('Alertes', 'fas fa-exclamation-triangle', ProcessLogs::class);
yield MenuItem::section('OPTIONS');
yield MenuItem::linkToCrud('Sécurité', 'fas fa-user', User::class);
if ($this->getUser()->getProfile() != null) {
yield MenuItem::linkToCrud('Profil', 'fas fa-address-card', Profile::class)
->setAction('detail')
->setEntityId($this->getUser()->getProfile()->getId());
}else {
yield MenuItem::linkToCrud('Profil', 'fas fa-address-card', Profile::class)
->setAction('new');
}
yield MenuItem::linkToCrud('SEO', 'fab fa-searchengin', SEO::class)
->setAction('detail')
->setEntityId(1);
yield MenuItem::linkToCrud('Mentions legales', 'fas fa-align-left', Legal::class)
->setAction('detail')
->setEntityId(1);
yield MenuItem::linkToCrud('Confidentialité', 'fas fa-align-left', Privacy::class)
->setAction('detail')
->setEntityId(1);
yield MenuItem::linkToLogout('Déconnexion', 'fa fa-fw fa-sign-out');
}
public function configureUserMenu(UserInterface $user): UserMenu
{
$profile = $user->getProfile();
if ($profile != null) {
return parent::configureUserMenu($user)
->setName($profile->getFirstName()." ".$profile->getLastName())
->setAvatarUrl('https://gite-colombine.fr/images/profile/'.$profile->getAvatar())
->addMenuItems([
MenuItem::linkToRoute('Profil', 'fa fa-id-card', 'profile', ['...' => '...']),
MenuItem::linkToRoute('Sécurité', 'fa fa-user-cog', 'user', ['...' => '...']),
]);
}else {
return parent::configureUserMenu($user);
}
}
}