Delete organization

This commit is contained in:
Charles 2025-09-04 09:52:56 +02:00
parent 3ca5eea877
commit 1008d636a6
3 changed files with 32 additions and 4 deletions

View File

@ -30,7 +30,7 @@ class OrganizationController extends AbstractController
public function __construct(private readonly EntityManagerInterface $entityManager,
private readonly UserService $userService,
private readonly OrganizationsService $organizationsService, private readonly ActionService $actionService)
private readonly OrganizationsService $organizationsService, private readonly ActionService $actionService, private readonly UserOrganizationService $userOrganizationService)
{
}
@ -40,7 +40,7 @@ class OrganizationController extends AbstractController
$this->denyAccessUnlessGranted('ROLE_ADMIN');
$user = $this->userService->getUserByIdentifier($this->getUser()->getUserIdentifier());
if ($this->isGranted("ROLE_SUPER_ADMIN")) {
$organizations = $this->entityManager->getRepository(Organizations::class)->findAll();
$organizations = $this->entityManager->getRepository(Organizations::class)->findBy([ 'isDeleted' => false ]);
} else {
//get all the UO of the user
$uos = $this->entityManager->getRepository(UsersOrganizations::class)->findBy(['users' => $user]);
@ -187,5 +187,24 @@ class OrganizationController extends AbstractController
]);
}
#[Route(path: '/delete/{id}', name: 'delete', methods: ['POST'])]
public function delete($id)
{
$this->denyAccessUnlessGranted("ROLE_ADMIN");
$actingUser = $this->userService->getUserByIdentifier($this->getUser()->getUserIdentifier());
$organization = $this->entityManager->getRepository(Organizations::class)->find($id);
if (!$organization) {
throw $this->createNotFoundException(self::NOT_FOUND);
}
$organization->setIsActive(false);
$organization->setIsDeleted(true);
// Deactivate all associated UsersOrganizations
$this->userOrganizationService->deactivateAllUserOrganizationLinks($actingUser, null, $organization);
$this->entityManager->persist($organization);
$this->actionService->createAction("Delete Organization", $actingUser, $organization, $organization->getName());
return $this->redirectToRoute('organization_index');
}
}

View File

@ -3,6 +3,7 @@
namespace App\Service;
use App\Entity\Actions;
use App\Entity\Organizations;
use App\Entity\User;
use App\Entity\UsersOrganizations;
use App\Service\ActionService;
@ -28,8 +29,12 @@ readonly class UserOrganizationService
* @param User $actingUser
* @return void
*/
public function deactivateAllUserOrganizationLinks(User $user, User $actingUser): void{
$uos = $this->entityManager->getRepository(UsersOrganizations::class)->findBy(['users' => $user, 'isActive' => true]);
public function deactivateAllUserOrganizationLinks(User $actingUser, User $user = null, Organizations $organizations = null): void{
if($user !== null) {
$uos = $this->entityManager->getRepository(UsersOrganizations::class)->findBy(['users' => $user, 'isActive' => true]);
}elseif($organizations !== null){
$uos = $this->entityManager->getRepository(UsersOrganizations::class)->findBy(['organization' => $organizations, 'isActive' => true]);
}
foreach ($uos as $uo) {
$this->userOrganizationAppService->deactivateAllUserOrganizationsAppLinks($uo);
$uo->setIsActive(false);

View File

@ -14,6 +14,10 @@
{% if is_granted("ROLE_SUPER_ADMIN") %}
<a href="{{ path('organization_edit', {'id': organization.id}) }}" class="btn btn-primary">Gérer
l'organisation</a>
<form method="POST" action="{{ path('organization_delete', {'id': organization.id}) }}"
onsubmit="return confirm('Vous allez supprimer cette organisation, êtes vous sûre?');"
style="display: inline-block;">
<button class="btn btn-danger" type="submit">Supprimer l'organisation</button>
{# {% if organization.active %}#}
{# <a href="{{ path('organization_deactivate', {'id': organization.id}) }}"#}
{# class="btn btn-danger">Désactiver l'organisation</a>#}