Passed
Push — master ( b4cb9f...51bac7 )
by Anthony
02:22
created

AccessRightsController::deleteList()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 9
nc 2
nop 1
dl 0
loc 15
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace PiouPiou\RibsAdminBundle\Controller;
4
5
use PiouPiou\RibsAdminBundle\Entity\AccessRight;
6
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
7
use Symfony\Component\HttpFoundation\RedirectResponse;
8
use Symfony\Component\HttpFoundation\Request;
9
use Symfony\Component\HttpFoundation\Response;
10
use Symfony\Component\Routing\Annotation\Route;
11
12
class AccessRightsController extends Controller
13
{
14
	//---------------------------------------------- VIEWS METHODS ---------------------------------------------------------//
15
	/**
16
	 * @Route("/access-rights-management/", name="ribsadmin_access_rights")
17
	 * @return Response
18
	 */
19
	public function listAction(): Response
20
	{
21
		$em = $this->getDoctrine()->getManager();
22
		$acces_right = $em->getRepository("RibsAdminBundle:AccessRight")->findAll();
23
		
24
		return $this->render("@RibsAdmin/access-rights/list-all-list.html.twig", [
25
			"access_right" => $acces_right
26
		]);
27
	}
28
	
29
	/**
30
	 * @Route("/access-rights-management/create/", name="ribsadmin_access_rights_create")
31
	 * @Route("/access-rights-management/edit/{guid}", name="ribsadmin_access_rights_edit")
32
	 * @param Request $request
33
	 * @param string|null $guid
34
	 * @return Response
35
	 */
36
	public function editAction(Request $request, string $guid = null): Response
37
	{
38
		$em = $this->getDoctrine()->getManager();
39
		$list_rights_user = [];
40
		
41
		if ($guid === null) {
42
			$access_right = new AccessRight();
43
		} else {
44
			$access_right = $em->getRepository("RibsAdminBundle:AccessRight")->findOneBy(["guid" => $guid]);
45
			$list_rights_user = explode(",", $access_right->getAccessRights());
46
		}
47
		
48
		$admins = $em->getRepository("RibsAdminBundle:User")->findBy(["admin" => true, "archived" => false]);
49
		
50
		$form = $this->createForm("PiouPiou\RibsAdminBundle\Form\AccessRight", $access_right);
51
		$form->handleRequest($request);
52
		
53
		if ($form->isSubmitted() && $form->isValid()) {
54
			return $this->handleEditForm($request, $access_right);
55
		}
56
		
57
		return $this->render("@RibsAdmin/access-rights/edit-list.html.twig", [
58
			"access_right" => $access_right,
59
			"form" => $form->createView(),
60
			"list_rights_user" => $list_rights_user,
61
			"admins" => $admins,
62
			"ribs_admin_rights" => json_decode(file_get_contents($this->get("ribs_admin.globals")->getBaseBundlePath() . "/Resources/json/ribsadmin_rights.json"))
63
		]);
64
	}
65
	//---------------------------------------------- END VIEWS METHODS ---------------------------------------------------------//
66
	
67
	/**
68
	 * @param Request $request
69
	 * @param AccessRight $access_right
70
	 * @return RedirectResponse function that handle the form request
71
	 */
72
	private function handleEditForm(Request $request, AccessRight $access_right): RedirectResponse
73
	{
74
		$em = $this->getDoctrine()->getManager();
75
		
76
		if ($request->get("right") === null) {
77
			$rights = "";
78
		} else {
79
			$rights = implode(",", $request->get("right"));
80
		}
81
		
82
		$access_right->setAccessRights($rights);
83
		
84
		$em->getRepository("RibsAdminBundle:AccessRight")->deleteAllUsersList($access_right);
85
		$admins = $request->get("admins");
86
		
87
		if ($admins !== null) {
88
			foreach ($admins as $admin) {
89
				$user = $em->getRepository("RibsAdminBundle:User")->findOneBy(["guid" => $admin]);
90
				$user->setAccessRightList($access_right);
91
				$access_right->addUser($user);
92
				$em->persist($user);
93
			}
94
		}
95
		
96
		$em->persist($access_right);
97
		$em->flush();
98
		
99
		$this->addFlash("success-flash", "The right list was correctly edited");
100
		
101
		return $this->redirectToRoute("ribsadmin_access_rights");
102
	}
103
	
104
	/**
105
	 * @Route("/access-rights-management/delete/{guid}", name="ribsadmin_access_rights_delete")
106
	 * @param string $guid
107
	 * @return RedirectResponse function that delete an access right list
108
	 */
109
	public function deleteList(string $guid): RedirectResponse
110
	{
111
		$em = $this->getDoctrine()->getManager();
112
		$list = $em->getRepository("RibsAdminBundle:AccessRight")->findOneBy(["guid" => $guid]);
113
		
114
		if ($list) {
115
			$em->remove($list);
116
			$em->flush();
117
			
118
			$this->addFlash("success-flash", "The right list was deleted");
119
		} else {
120
			$this->addFlash("error-flash", "The right list wasn't found");
121
		}
122
		
123
		return $this->redirectToRoute("ribsadmin_access_rights");
124
	}
125
}