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,
|
||||
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');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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>#}
|
||||
|
|
|
|||
Loading…
Reference in New Issue