<?php
namespace App\Controller;
use Exception;
use Dompdf\Dompdf;
use App\Entity\Client;
use App\Entity\SubCategory;
use App\Entity\DemandeDevis;
use App\Entity\Doc;
use App\Form\DemandeDevisType;
use App\Entity\Admin;
use App\Repository\AdminRepository;
use Symfony\Component\Mime\Email;
use App\Repository\PageRepository;
use Symfony\Component\Mime\Address;
use App\Repository\ClientRepository;
use App\Repository\CategoryRepository;
use App\Repository\DocumentRepository;
use Doctrine\ORM\EntityManagerInterface;
use App\Repository\CalculateurRepository;
use App\Repository\SubCategoryRepository;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class PageController extends AbstractController
{
public function __construct(private CategoryRepository $categoryRepository,private ClientRepository $clientRepository, private PageRepository $pageRepository, private SubCategoryRepository $subCategoryRepository)
{
}
#[Route('/', name: 'app_index')]
public function index(): Response
{
return $this->render('page/home.html.twig', [
'metaDescription' => 'Easy Bilan vous accompagne pour votre bilan comptable annuel, prévisionnel ou en retard. Service rapide, fiable et adapté à votre situation.',
'keywords' => "bilan comptable annuel, bilan prévisionnel, bilan comptable en retard, rattrapage comptable, comptabilité entreprise, déclaration fiscale, expert-comptable, aide bilan urgent, cabinet comptable",
]);
}
#[Route('/templatePdf', name: 'template')]
public function template(): Response
{
return $this->render('pdf_generator/index.html.twig');
}
#[Route('/askdevis', name: 'app_devis_simple')]
public function askdevis(Request $request, MailerInterface $mailer, EntityManagerInterface $entityManager){
$demande = new DemandeDevis();
$demande->setName($request->get('nom'));
$demande->setFirstname($request->get('prenom'));
$demande->setEmail($request->get('email'));
$demande->setPhone($request->get('phone'));
$demande->setCity("");
$demande->setMessage($request->get('page'));
try {
$entityManager->persist($demande);
//save client
$client = $this->clientRepository->findOneBy(['email' => $request->get('email')]);
if(!$client){
$client = new Client();
}
$client->setName($request->get('nom'));
$client->setFirstname($request->get('prenom'));
$client->setEmail($request->get('email'));
$client->setPhone($request->get('phone'));
$entityManager->persist($client);
$doc = new Doc();
$doc->setClient($client);
$doc->setName($client->getName());
$doc->setFirstname($client->getFirstname());
$doc->setEmail($client->getEmail());
$doc->setPhone($client->getPhone());
$doc->setStatus('NOUVEAU');
$entityManager->persist($doc);
$email = (new TemplatedEmail())
->from(new Address('all@ibkz2229.odns.fr', 'EASY BILAN'))
//->to(new Address('market.iarivo@gmail.com'))
->to(new Address('estomine@easy-expert.fr'))
->addTo(new Address('kmcom20@yahoo.fr'))
->addTo(new Address('contact@easy-expert.fr'))
->subject('EASY-BILAN - Demande de devis')
->htmlTemplate('devis/email.html.twig')
->context(
[
'demande' => $demande,
'type' => null
]
);
$mailer->send($email);
$demande->setSend(true);
$entityManager->flush();
$email = (new TemplatedEmail())
->from(new Address('all@ibkz2229.odns.fr', 'EASY BILAN'))
->to(new Address($request->get('email')))
->subject('Accusé de réception de votre demande de devis - EASY BILAN')
->htmlTemplate('devis/accuse.html.twig')
->context(
[
'firstname' => $request->get('prenom'),
'name' => $request->get('nom')
]
);
$mailer->send($email);
return new JsonResponse("success", 202);
}catch(Exception $e){
return new JsonResponse($e->getMessage(), 505);
}
}
#[Route('/devis', name: 'app_devis')]
public function devis(): Response
{
return $this->render('devis/index.html.twig', [
'title' => 'EASY BILAN - Demande de devis'
]);
}
#[Route('/contact', name: 'app_contact')]
public function contact( Request $request, MailerInterface $mailer, EntityManagerInterface $entityManager)
{
if($request->getMethod() === 'POST'){
//
$client = $this->clientRepository->findOneBy(['email' => $request->get('email')]);
if(!$client){
$client = new Client();
}
$client->setName( $request->get('name'));
$client->setFirstname( $request->get('firstname'));
$client->setEmail( $request->get('email'));
$client->setPhone( $request->get('phone'));
$entityManager->persist($client);
$doc = new Doc();
$doc->setName($client->getName());
$doc->setFirstname($client->getFirstname());
$doc->setEmail($client->getEmail());
$doc->setPhone($client->getPhone());
$doc->setClient($client);
$doc->setStatus('INFORMATION CLIENT');
$entityManager->persist($doc);
$entityManager->flush();
//
try{
$email = (new TemplatedEmail())
->from(new Address('all@ibkz2229.odns.fr', 'EASY BILAN'))
//->to(new Address('market.iarivo@gmail.com'))
->to(new Address('estomine@easy-expert.fr'))
->addTo(new Address('kmcom20@yahoo.fr'))
->addTo(new Address('contact@easy-expert.fr'))
->subject('Nouveau message de contact')
->htmlTemplate('contact/email.html.twig')
->context(
[
'name' => $request->get('name'),
'firstname' => $request->get('firstname'),
'mail' => $request->get('email'),
'phone' => $request->get('phone'),
'message' => $request->get('message')
]
);
$mailer->send($email);
return new JsonResponse("success");
}catch(Exception $e){
return new JsonResponse("error");
}
}
return $this->render('page/contact.html.twig', ['title' => 'EASY BILAN - Contact']);
}
#[Route('/test369852147', name: 'app_test')]
public function create_cookie(): Response
{
$response = new Response();
$response->headers->setCookie(
new Cookie('test', 'test', time() + 3600) // Expire après 1 heure
);
$response->send();
return $this->redirectToRoute('app_index');
}
#[Route('/allAsk/{type}', name: 'app_asks')]
public function asks($type): Response
{
return $this->render('page/listAsk.html.twig', [
'type' => $type,
]);
}
#[Route('/page/{type}', name: 'app_asks_detail')]
public function page($type): Response
{
return $this->render('page/detail.html.twig', [
'type' => $type,
]);
}
#[Route('/{type}', name: 'app_contample')]
public function main($type, Request $request): Response
{
if($type == 'logout'){
$this->container->get('security.token_storage')->setToken(null);
$request->getSession()->invalidate();
// Rediriger l'utilisateur vers la page de connexion ou une autre page
return $this->redirectToRoute('app_login');
}
if ($type == 'bilan-comptable') {
$metaDescription ="Confiez-nous votre bilan comptable annuel en version simplifiée. Gagnez en sérénité et en conformité.";
$asks = [
[
"ask" => "Quels sont les avantages de choisir Easy Expert? ",
"answer" => "Easy Expert offre une expertise approfondie"
],
[
"ask" => "Quelle est la valeur ajoutée de la création de société chez Easy Expert ? ",
"answer" => "La valeur ajoutée de la création de société chez Easy Expert."
],
[
"ask" => "Quelles garanties propose Easy Expert pour la création de société ? ",
"answer" => "Easy Expert s'engage à fournir un service de qualité et à accompagner."
]
];
return $this->render('page/bilan-comptable.html.twig', [
'type' => $type,
'title' => "EASY BILAN - Bilan comptable",
'asks' => $asks,
'metaDescription' => $metaDescription,
'keywords' => "bilan comptable annuel, comptabilité simplifiée, expert-comptable bilan annuel, devis bilan comptable, comptable annuelle, comptabilité TPE PME"
]);
}
if($type == 'bilan-previsionnel'){
$metaDescription ="Préparez l’avenir avec un bilan prévisionnel clair et structuré. Anticipez vos résultats financiers et sécurisez vos décisions.";
$asks = [
[
"ask" => "Quels sont les avantages d'un business plan pour une entreprise ?",
"answer" => "Un business plan offre une vision stratégique claire et favorise la prise de décisions éclairées. Il permet de définir les objectifs, les ressources nécessaires et les étapes à suivre pour atteindre le succès."
],
[
"ask" => "Comment un business plan peut-il aider à sécuriser un financement ?",
"answer" => "Pour éviter les retards, il faut maintenir une comptabilité rigoureuse tout au long de l'année, attribuer des responsabilités claires et respecter les délais légaux de dépôt.Les investisseurs et les prêteurs exigent souvent un business plan solide avant d'accorder des fonds. Celui-ci démontre la viabilité du projet, les prévisions financières et les stratégies de remboursement, ce qui renforce la confiance des financeurs."
],
[
"ask" => "En quoi un business plan contribue-t-il à la gestion efficace de l'entreprise ?",
"answer" => "Un business plan sert de référence pour évaluer les performances réelles par rapport aux objectifs fixés. Il permet d'ajuster les stratégies et de prendre des mesures correctives, assurant ainsi une gestion proactive et efficace."
]
];
return $this->render('page/bilan-previsionnel.html.twig', [
'type' => $type,
'title' => 'Easy Bilan - Bilan prévisionnel',
'asks' => $asks,
'metaDescription' => $metaDescription,
'keywords' => "bilan prévisionnel entreprise, prévisionnel financier, élaboration bilan prévisionnel, comptabilité prévisionnelle, expert-comptable prévisionnel"
]);
}
if($type == 'bilan-retard'){
$metaDescription ="Vous avez un bilan comptable en retard ? Nous vous accompagnons pour régulariser votre situation dans les meilleurs délais. Estimation gratuite.";
return $this->render('page/bilan-retard.html.twig', [
'title' => 'Easy Expert - Bilan retard',
'metaDescription' => $metaDescription,
'keywords' => "régularisation comptable, bilan en retard, mise à jour comptabilité, retard bilan comptable,régularisation situation fiscale"
]);
}
$category = $this->categoryRepository->findOneBy(['slug' => $type ]);
if($category){
$allCategory = $this->categoryRepository->findAll();
return $this->render('page/listAsk.html.twig', [
'categorie' => $category,
'categories' => $allCategory
]);
}
$page = $this->pageRepository->findOneBy(['slug' => $type ]);
//dd($page->getKeywordList());
if($page){
return $this->render('page/detail.html.twig', [
'page' => $page,
'title' => $page->getTitleSeo() ? $page->getTitleSeo() : $page->getName(),
'keywords' => $page->getKeywordList(),
'metaDescription' =>$page->getCourteDescription()
]);
}else{
return new Response("",404);
}
}
}