src/Controller/BuildingReportingController.php line 31
<?php
namespace App\Controller;
use App\Entity\Building;
use App\Entity\BuildingReportingHistory;
use App\Form\BuildingReportingFormType;
use App\Services\Mails\Mails;
use Doctrine\ORM\EntityManagerInterface;
use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class BuildingReportingController extends AbstractController
{
private UrlGeneratorInterface $urlGenerator;
public function __construct(UrlGeneratorInterface $urlGenerator)
{
$this->urlGenerator = $urlGenerator;
}
#[Route(path: [
"fr" => "/building/reporting/{id}",
"en" => "/en/building/reporting/{id}",
], name: 'building_reporting')]
public function add(Building $building, Request $request, EntityManagerInterface $entityManager, Mails $mails, LoggerInterface $logger): Response {
$buildingReporting = new BuildingReportingHistory();
$form = $this->createForm(BuildingReportingFormType::class, $buildingReporting);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
try {
$buildingReporting->setBuilding($building);
$buildingReporting->setUser($this->getUser());
$buildingReporting->setCity($building->getCityEntity());
$buildingReporting->setCountry($building->getCityEntity()->getCountry());
$buildingReporting->setNumberId($building->getNumberId());
$buildingReporting->setPostalCode($building->getPostalCode());
$buildingReporting->setStreet($building->getStreet());
$buildingReporting->setNumberStreet($building->getStreetNumber());
$buildingReporting->setCreatedAt(new \DateTimeImmutable('now', new \DateTimeZone('Europe/Paris')));
$entityManager->persist($buildingReporting);
$entityManager->flush();
$formData = $form->getData();
$urlBuilding = $this->urlGenerator->generate('detail_building',['id' => $buildingReporting->getBuilding()->getId()], UrlGeneratorInterface::ABSOLUTE_URL);
$image = !empty($docs) ? end($docs)->getImageFile() : null;
$email = $mails->createEmail('mails/building_report/signal.html.twig', [
'type' => $formData->getType(),
'number' => $formData->getNumber(),
'details' => $formData->getDetail(),
'urlBuilding' => $urlBuilding,
'imageUrl' => $image,
])
->to('geraldlegoff@appyness.fr')
->cc('contact@roomlers.com', 'julie@roomlers.com')
->subject('Un bien a été signalé !');
$mails->send($email);
$this->addFlash('success', 'Votre signalement a été envoyé avec succès.');
} catch (\Exception $e) {
$this->addFlash('error', 'Erreur lors de l\'envoi: ' . $e->getMessage());
}
return $this->redirectToRoute('detail_building', ['id' => $building->getId()]);
}
$currentUser = $this->getUser();
return $this->render('building_reporting/index.html.twig', [
'form' => $form->createView(),
'building' => $building,
'user' => $currentUser,
]);
}
}