<?php
namespace App\Controller\Configuration;
use App\Entity\Configuration\Siege;
use App\Entity\Configuration\CompanyEntity;
use App\Form\Configuration\SiegeType;
use App\Repository\Configuration\SiegeRepository;
use App\Repository\Configuration\CompanyEntityRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\Exception\FileException;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/configuration/siege")
*/
class SiegeController extends AbstractController
{
/**
* @Route("/", name="app_configuration_siege_index", methods={"GET"})
*/
public function index(SiegeRepository $siegeRepository): Response
{
$left_menu="interface";
return $this->render('configuration/siege/index.html.twig', [
'sieges' => $siegeRepository->findAll(),
'left_menu'=>$left_menu
]);
}
/**
* @Route("/new", name="app_configuration_siege_new", methods={"GET", "POST"})
*/
public function new(Request $request, SiegeRepository $siegeRepository): Response
{
// dd($_FILES);
$siege = $siegeRepository->find('1');
$form = $this->createForm(SiegeType::class, $siege);
$form->handleRequest($request);
if ($form->isSubmitted() ) {
$logo = $request->files->get('logo');
if ($logo) {
$generatedfileName = 'logo.'.$logo->guessExtension();
$uploadDir = $this->getParameter('kernel.project_dir').'/public/siege';
if (!file_exists($uploadDir) && !is_dir($uploadDir)) {
mkdir($uploadDir, 0777, true);
}
try {
$logo->move(
$uploadDir,
$generatedfileName
);
} catch (FileException $e) {
}
$siege->setlogo('/siege/'.$generatedfileName);
}
$isGroup = $request->request->get('isGroup');
$siege->setIsGroup(boolval($isGroup));
$siegeRepository->add($siege);
}
$left_menu="interface";
return $this->renderForm('configuration/siege/new.html.twig', [
'siege' => $siege,
'form' => $form,
'left_menu' => $left_menu
]);
}
/**
* @Route("/{id}", name="app_configuration_siege_show", methods={"GET"})
*/
public function show(Siege $siege): Response
{
return $this->render('configuration/siege/show.html.twig', [
'siege' => $siege,
]);
}
/**
* @Route("/{id}/edit", name="app_configuration_siege_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, Siege $siege, SiegeRepository $siegeRepository): Response
{
$form = $this->createForm(SiegeType::class, $siege);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$siegeRepository->add($siege);
return $this->redirectToRoute('app_configuration_siege_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('configuration/siege/edit.html.twig', [
'siege' => $siege,
'form' => $form,
]);
}
/**
* @Route("/{id}", name="app_configuration_siege_delete", methods={"POST"})
*/
public function delete(Request $request, Siege $siege, SiegeRepository $siegeRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$siege->getId(), $request->request->get('_token'))) {
$siegeRepository->remove($siege);
}
return $this->redirectToRoute('app_configuration_siege_index', [], Response::HTTP_SEE_OTHER);
}
/**
* @Route("/entite/save", name="app_configuration_siege_entite_save", methods={"POST"})
*/
public function saveEntite(Request $request, CompanyEntityRepository $entityRepository): JsonResponse
{
$data = json_decode($request->getContent(), true);
$entity = new CompanyEntity();
$entity->setNom($data['nom']);
$entity->setAdresse($data['adresse']);
$entity->setComplements($data['complements']);
$entity->setVille($data['ville']);
$entity->setCodePostal($data['code_postal']);
$entity->setPays($data['pays']);
$entity->setTelephone($data['telephone']);
try {
$entityRepository->add($entity);
return new JsonResponse([
'success' => true,
'message' => 'Entité créée avec succès',
'id' => $entity->getId()
]);
} catch (\Exception $e) {
return new JsonResponse([
'success' => false,
'message' => 'Erreur lors de la création de l\'entité: ' . $e->getMessage()
], 500);
}
}
/**
* @Route("/entite/modal", name="app_configuration_siege_entite", methods={"GET"})
*/
public function entite_modal():Response
{
return $this->render('configuration/siege/entite/form.html.twig');
}
/**
* @Route("/entite/list", name="app_configuration_siege_entite_list", methods={"GET"})
*/
public function listEntites(CompanyEntityRepository $entityRepository): JsonResponse
{
$entities = $entityRepository->findAll();
$data = ['data' => []];
foreach ($entities as $entity) {
$edit_btn = "<a href='/configuration/siege/entite/edit/".$entity->getId()."' data-toggle='modal' data-target='#myModal' class='edit_btn'><i class='fa fa-pencil fa-lg'></i></a>";
$delete_btn = "<a class='delete_btn' onclick='deleteEntity(".$entity->getId().")' title='Supprimer'><i class='fa fa-trash-o fa-lg'></i></a>";
$data['data'][] = [
'nom' => $entity->getNom(),
'adresse' => $entity->getAdresse(),
'complements' => $entity->getComplements(),
'ville' => $entity->getVille(),
'code_postal' => $entity->getCodePostal(),
'pays' => $entity->getPays(),
'telephone' => $entity->getTelephone(),
'actions' => $edit_btn . ' ' . $delete_btn
];
}
return new JsonResponse($data);
}
/**
* @Route("/entite/delete/{id}", name="app_configuration_siege_entite_delete", methods={"POST"})
*/
public function deleteEntite(CompanyEntity $entity, CompanyEntityRepository $entityRepository): Response
{
try {
$entityRepository->remove($entity);
return $this->redirectToRoute('app_configuration_siege_new');
} catch (\Exception $e) {
return new JsonResponse(['error' => 'Erreur lors de la suppression de l\'entité'], 500);
}
}
/**
* @Route("/entite/edit/{id}", name="app_configuration_siege_entite_edit", methods={"GET", "POST"})
*/
public function editEntite(Request $request, CompanyEntity $entity): Response
{
return $this->render('configuration/siege/entite/form.html.twig', [
'entity' => $entity,
'mode' => 'edit'
]);
}
/**
* @Route("/entite/update/{id}", name="app_configuration_siege_entite_update", methods={"POST"})
*/
public function updateEntite(Request $request, CompanyEntity $entity, CompanyEntityRepository $entityRepository): JsonResponse
{
$data = json_decode($request->getContent(), true);
$entity->setNom($data['nom']);
$entity->setAdresse($data['adresse']);
$entity->setComplements($data['complements']);
$entity->setVille($data['ville']);
$entity->setCodePostal($data['code_postal']);
$entity->setPays($data['pays']);
$entity->setTelephone($data['telephone']);
try {
$entityRepository->add($entity);
return new JsonResponse([
'success' => true,
'message' => 'Entité mise à jour avec succès'
]);
} catch (\Exception $e) {
return new JsonResponse([
'success' => false,
'message' => 'Erreur lors de la mise à jour de l\'entité: ' . $e->getMessage()
], 500);
}
}
}