-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #3631 from MTES-MCT/feature/3601-page-admin-bailleurs
[FO-BO Signalement] Modifier dénomination bailleur
- Loading branch information
Showing
14 changed files
with
562 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
14 changes: 14 additions & 0 deletions
14
assets/scripts/vanilla/controllers/back_bailleur_view/back_bailleur_index.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
import { loadWindowWithLocalStorage, updateLocalStorageWithFormParams } from '../../services/list_filter_helper' | ||
|
||
const searchTerritoryForm = document.getElementById('search-bailleur-form') | ||
|
||
if (searchTerritoryForm) { | ||
document.querySelectorAll('.open-modal-bailleur-delete').forEach((button) => { | ||
button.addEventListener('click', (e) => { | ||
document.getElementById('fr-modal-bailleur-delete-bailleur-name').textContent = e.target.dataset.name | ||
document.getElementById('fr-modal-bailleur-delete-btn-submit').href = e.target.dataset.url | ||
}) | ||
}) | ||
updateLocalStorageWithFormParams('search-bailleur-form') | ||
} | ||
loadWindowWithLocalStorage('click', '[data-filter-list-bailleur]', 'search-bailleur-form') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
<?php | ||
|
||
namespace App\Controller\Back; | ||
|
||
use App\Entity\Bailleur; | ||
use App\Form\BailleurType; | ||
use App\Form\SearchBailleurType; | ||
use App\Repository\BailleurRepository; | ||
use App\Service\ListFilters\SearchBailleur; | ||
use Doctrine\ORM\EntityManagerInterface; | ||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; | ||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; | ||
use Symfony\Component\HttpFoundation\RedirectResponse; | ||
use Symfony\Component\HttpFoundation\Request; | ||
use Symfony\Component\HttpFoundation\Response; | ||
use Symfony\Component\Routing\Annotation\Route; | ||
use Symfony\Component\Security\Http\Attribute\IsGranted; | ||
|
||
#[Route('/bo/bailleur')] | ||
class BackBailleurController extends AbstractController | ||
{ | ||
#[Route('/', name: 'back_bailleur_index', methods: ['GET'])] | ||
#[IsGranted('ROLE_ADMIN')] | ||
public function index( | ||
Request $request, | ||
BailleurRepository $bailleurRepository, | ||
ParameterBagInterface $parameterBag, | ||
): Response { | ||
$searchBailleur = new SearchBailleur(); | ||
$form = $this->createForm(SearchBailleurType::class, $searchBailleur); | ||
$form->handleRequest($request); | ||
if ($form->isSubmitted() && !$form->isValid()) { | ||
$searchBailleur = new SearchBailleur(); | ||
} | ||
$maxListPagination = $parameterBag->get('standard_max_list_pagination'); | ||
$paginatedBailleurs = $bailleurRepository->findFilteredPaginated($searchBailleur, $maxListPagination); | ||
|
||
return $this->render('back/bailleur/index.html.twig', [ | ||
'form' => $form, | ||
'searchBailleur' => $searchBailleur, | ||
'bailleurs' => $paginatedBailleurs, | ||
'pages' => (int) ceil($paginatedBailleurs->count() / $maxListPagination), | ||
]); | ||
} | ||
|
||
#[Route('/editer/{bailleur}', name: 'back_bailleur_edit', methods: ['GET', 'POST'])] | ||
#[IsGranted('ROLE_ADMIN')] | ||
public function edit( | ||
Bailleur $bailleur, | ||
Request $request, | ||
EntityManagerInterface $em, | ||
): Response { | ||
$form = $this->createForm(BailleurType::class, $bailleur); | ||
$form->handleRequest($request); | ||
if ($form->isSubmitted() && $form->isValid()) { | ||
$em->flush(); | ||
$this->addFlash('success', 'Le bailleur a bien été modifié.'); | ||
|
||
return $this->redirectToRoute('back_bailleur_edit', ['bailleur' => $bailleur->getId()]); | ||
} | ||
|
||
return $this->render('back/bailleur/edit.html.twig', [ | ||
'form' => $form, | ||
'bailleur' => $bailleur, | ||
]); | ||
} | ||
|
||
#[Route('/supprimer/{bailleur}', name: 'back_bailleur_delete', methods: ['GET'])] | ||
#[IsGranted('ROLE_ADMIN')] | ||
public function delete( | ||
Bailleur $bailleur, | ||
Request $request, | ||
EntityManagerInterface $em, | ||
): RedirectResponse { | ||
if (!$this->isCsrfTokenValid('bailleur_delete', $request->query->get('_token'))) { | ||
$this->addFlash('error', 'Le token CSRF est invalide.'); | ||
|
||
return $this->redirectToRoute('back_bailleur_index'); | ||
} | ||
if ($nb = $bailleur->getSignalements()->count() > 0) { | ||
$this->addFlash('error', 'Le bailleur ne peut pas être supprimé car il est lié à '.$nb.' signalements.'); | ||
|
||
return $this->redirectToRoute('back_bailleur_index'); | ||
} | ||
foreach ($bailleur->getBailleurTerritories() as $bailleurTerritory) { | ||
$em->remove($bailleurTerritory); | ||
} | ||
$em->remove($bailleur); | ||
$em->flush(); | ||
$this->addFlash('success', 'Le bailleur a bien été supprimé.'); | ||
|
||
return $this->redirectToRoute('back_bailleur_index'); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
<?php | ||
|
||
namespace App\Form; | ||
|
||
use App\Entity\Bailleur; | ||
use Symfony\Component\Form\AbstractType; | ||
use Symfony\Component\Form\Extension\Core\Type\SubmitType; | ||
use Symfony\Component\Form\FormBuilderInterface; | ||
use Symfony\Component\OptionsResolver\OptionsResolver; | ||
|
||
class BailleurType extends AbstractType | ||
{ | ||
public function buildForm(FormBuilderInterface $builder, array $options): void | ||
{ | ||
$builder | ||
->add('name', null, [ | ||
'label' => 'Nom', | ||
]) | ||
->add('submit', SubmitType::class, [ | ||
'label' => 'Valider', | ||
'attr' => ['class' => 'fr-btn fr-icon-check-line fr-btn--icon-left'], | ||
'row_attr' => ['class' => 'fr-text--right'], | ||
]); | ||
} | ||
|
||
public function configureOptions(OptionsResolver $resolver): void | ||
{ | ||
$resolver->setDefaults([ | ||
'data_class' => Bailleur::class, | ||
'csrf_token_id' => 'bailleur_type', | ||
]); | ||
} | ||
|
||
public function getBlockPrefix(): string | ||
{ | ||
return ''; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
<?php | ||
|
||
namespace App\Form; | ||
|
||
use App\Entity\Territory; | ||
use App\Service\ListFilters\SearchBailleur; | ||
use Symfony\Bridge\Doctrine\Form\Type\EntityType; | ||
use Symfony\Component\Form\AbstractType; | ||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType; | ||
use Symfony\Component\Form\Extension\Core\Type\HiddenType; | ||
use Symfony\Component\Form\Extension\Core\Type\SearchType; | ||
use Symfony\Component\Form\FormBuilderInterface; | ||
use Symfony\Component\OptionsResolver\OptionsResolver; | ||
|
||
class SearchBailleurType extends AbstractType | ||
{ | ||
public function buildForm(FormBuilderInterface $builder, array $options): void | ||
{ | ||
$builder->add('queryName', SearchType::class, [ | ||
'required' => false, | ||
'label' => 'Bailleur', | ||
'attr' => ['placeholder' => 'Taper le nom ou une partie du nom du bailleur'], | ||
]); | ||
$builder->add('territory', EntityType::class, [ | ||
'class' => Territory::class, | ||
'required' => false, | ||
'label' => 'Territoire', | ||
'placeholder' => 'Tous les territoires', | ||
'choice_label' => function (Territory $territory) { | ||
return $territory->getZip().' - '.$territory->getName(); | ||
}, | ||
]); | ||
$builder->add('orderType', ChoiceType::class, [ | ||
'choices' => [ | ||
'Ordre alphabétique (A -> Z)' => 'b.name-ASC', | ||
'Ordre alphabétique inversé (Z -> A)' => 'b.name-DESC', | ||
], | ||
'required' => false, | ||
'placeholder' => false, | ||
'label' => 'Trier par', | ||
'data' => 'b.name-ASC', | ||
]); | ||
$builder->add('page', HiddenType::class); | ||
} | ||
|
||
public function configureOptions(OptionsResolver $resolver): void | ||
{ | ||
$resolver->setDefaults([ | ||
'data_class' => SearchBailleur::class, | ||
'csrf_protection' => false, | ||
'method' => 'GET', | ||
'attr' => ['id' => 'search-bailleur-form', 'class' => 'fr-p-4v bo-filter-form'], | ||
]); | ||
} | ||
|
||
public function getBlockPrefix(): string | ||
{ | ||
return ''; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
<?php | ||
|
||
namespace App\Service\ListFilters; | ||
|
||
use App\Entity\Territory; | ||
use App\Service\Behaviour\SearchQueryTrait; | ||
|
||
class SearchBailleur | ||
{ | ||
use SearchQueryTrait; | ||
|
||
private ?string $queryName = null; | ||
private ?Territory $territory = null; | ||
private ?string $orderType = null; | ||
|
||
public function getQueryName(): ?string | ||
{ | ||
return $this->queryName; | ||
} | ||
|
||
public function setQueryName(?string $queryName): void | ||
{ | ||
$this->queryName = $queryName; | ||
} | ||
|
||
public function getTerritory(): ?Territory | ||
{ | ||
return $this->territory; | ||
} | ||
|
||
public function setTerritory(?Territory $territory): void | ||
{ | ||
$this->territory = $territory; | ||
} | ||
|
||
public function getOrderType(): ?string | ||
{ | ||
return $this->orderType; | ||
} | ||
|
||
public function setOrderType(?string $orderType): void | ||
{ | ||
$this->orderType = $orderType; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
{% extends 'back/base_bo.html.twig' %} | ||
|
||
{% block title %}Modifier le bailleur {{bailleur.name}}{% endblock %} | ||
|
||
{% block content %} | ||
<section class="fr-p-5v"> | ||
{% include 'back/breadcrumb_bo.html.twig' with { | ||
'level2Title': 'Outils SA', | ||
'level2Link': '', | ||
'level2Label': '', | ||
'level3Title': 'Bailleurs', | ||
'level3Link': path('back_bailleur_index'), | ||
'level4Title': 'Modifier le bailleur '~ bailleur.name, | ||
'level4Link': '', | ||
} %} | ||
<header> | ||
<div class="fr-grid-row"> | ||
<div class="fr-col-12 fr-text--left"> | ||
<h1 class="fr-mb-0">Bailleur {{bailleur.name}}</h1> | ||
</div> | ||
</div> | ||
</header> | ||
</section> | ||
|
||
<section class="fr-grid-row fr-px-5v fr-pb-5v"> | ||
<div class="fr-col-12"> | ||
{% form_theme form 'form/dsfr_theme.html.twig' %} | ||
{{form(form, {'attr': {'id': 'form-edit-bailleur'}} )}} | ||
</div> | ||
</section> | ||
|
||
{% endblock %} |
Oops, something went wrong.