Delete organization
This commit is contained in:
parent
3ca5eea877
commit
1008d636a6
|
|
@ -30,7 +30,7 @@ class OrganizationController extends AbstractController
|
||||||
|
|
||||||
public function __construct(private readonly EntityManagerInterface $entityManager,
|
public function __construct(private readonly EntityManagerInterface $entityManager,
|
||||||
private readonly UserService $userService,
|
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');
|
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
||||||
$user = $this->userService->getUserByIdentifier($this->getUser()->getUserIdentifier());
|
$user = $this->userService->getUserByIdentifier($this->getUser()->getUserIdentifier());
|
||||||
if ($this->isGranted("ROLE_SUPER_ADMIN")) {
|
if ($this->isGranted("ROLE_SUPER_ADMIN")) {
|
||||||
$organizations = $this->entityManager->getRepository(Organizations::class)->findAll();
|
$organizations = $this->entityManager->getRepository(Organizations::class)->findBy([ 'isDeleted' => false ]);
|
||||||
} else {
|
} else {
|
||||||
//get all the UO of the user
|
//get all the UO of the user
|
||||||
$uos = $this->entityManager->getRepository(UsersOrganizations::class)->findBy(['users' => $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');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
namespace App\Service;
|
namespace App\Service;
|
||||||
|
|
||||||
use App\Entity\Actions;
|
use App\Entity\Actions;
|
||||||
|
use App\Entity\Organizations;
|
||||||
use App\Entity\User;
|
use App\Entity\User;
|
||||||
use App\Entity\UsersOrganizations;
|
use App\Entity\UsersOrganizations;
|
||||||
use App\Service\ActionService;
|
use App\Service\ActionService;
|
||||||
|
|
@ -28,8 +29,12 @@ readonly class UserOrganizationService
|
||||||
* @param User $actingUser
|
* @param User $actingUser
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function deactivateAllUserOrganizationLinks(User $user, User $actingUser): void{
|
public function deactivateAllUserOrganizationLinks(User $actingUser, User $user = null, Organizations $organizations = null): void{
|
||||||
$uos = $this->entityManager->getRepository(UsersOrganizations::class)->findBy(['users' => $user, 'isActive' => true]);
|
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) {
|
foreach ($uos as $uo) {
|
||||||
$this->userOrganizationAppService->deactivateAllUserOrganizationsAppLinks($uo);
|
$this->userOrganizationAppService->deactivateAllUserOrganizationsAppLinks($uo);
|
||||||
$uo->setIsActive(false);
|
$uo->setIsActive(false);
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,10 @@
|
||||||
{% if is_granted("ROLE_SUPER_ADMIN") %}
|
{% if is_granted("ROLE_SUPER_ADMIN") %}
|
||||||
<a href="{{ path('organization_edit', {'id': organization.id}) }}" class="btn btn-primary">Gérer
|
<a href="{{ path('organization_edit', {'id': organization.id}) }}" class="btn btn-primary">Gérer
|
||||||
l'organisation</a>
|
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 %}#}
|
{# {% if organization.active %}#}
|
||||||
{# <a href="{{ path('organization_deactivate', {'id': organization.id}) }}"#}
|
{# <a href="{{ path('organization_deactivate', {'id': organization.id}) }}"#}
|
||||||
{# class="btn btn-danger">Désactiver l'organisation</a>#}
|
{# class="btn btn-danger">Désactiver l'organisation</a>#}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue