navLinks = [ 'admin_dashboard' => 'nav-link text-dark', 'user_dashboard' => 'nav-link text-dark', 'profile' => 'nav-link text-dark', 'user_list' => 'nav-link text-dark', ]; } #[Route('/admin-dashboard', name: 'app_admin_dashboard')] public function adminDashboard(#[CurrentUser()] User $user): Response { $this->denyAccessUnlessGranted('ROLE_ADMIN'); $this->navLinks['admin_dashboard'] = 'nav-link text-white active bg-gradient-dark'; return $this->render( 'internal/admin-dashboard.html.twig', array_merge( $this->navLinks, [ 'breadcrumbs' => [ 'Admin Dashboard' ], 'notifications' => $user->retrieveUnreadNotifications(), ] ) ); } #[Route('/list-users', name: 'app_list_users')] public function listUsers(#[CurrentUser()] User $user): Response { $this->denyAccessUnlessGranted('ROLE_ADMIN'); $users = $user->getCompany()->getUsers(); $this->navLinks['user_list'] = 'nav-link text-white active bg-gradient-dark'; return $this->render( 'internal/admin/list-users.html.twig', array_merge( $this->navLinks, [ 'breadcrumbs' => [ 'User List' ], 'users' => $users, 'notifications' => $user->retrieveUnreadNotifications(), ] ) ); } #[Route('/add-user', name: 'app_add_user')] public function addUser(Request $request, #[CurrentUser()] User $admin): Response { $this->denyAccessUnlessGranted('ROLE_ADMIN'); $user = new User(); $form = $this->createForm(UserFormType::class, $user); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $plainPassword = $form->get('password')->getData(); $user->setUsername($form->get('username')->getData()); $user->setPassword( $this->userPasswordHasher->hashPassword( $user, $plainPassword ) ); $user->setRoles(['ROLE_USER']); $user->setName($form->get('name')->getData()); $user->setEmail($form->get('email')->getData()); $user->setJob($form->get('job')->getData()); $user->setRateType($form->get('rateType')->getData()); $user->setRate($form->get('rate')->getData()); $user->setLevel($form->get('level')->getData()); $user->setCompany($admin->getCompany()); $this->entityManager->persist($user); $this->entityManager->flush(); return $this->redirectToRoute('app_list_users'); } $this->navLinks['user_list'] = 'nav-link text-white active bg-gradient-dark'; return $this->render( 'internal/admin/add-user.html.twig', array_merge( $this->navLinks, [ 'breadcrumbs' => [ 'Add User' ], 'form' => $form, 'notifications' => $admin->retrieveUnreadNotifications(), ] ) ); } #[Route('/edit-user/{id}', name: 'app_edit_user')] public function editUser(string $id, Request $request, #[CurrentUser()] User $admin): Response { /** @var User $user */ $user = $this->entityManager->getRepository(User::class)->find($id); $form = $this->createForm(UserFormType::class, $user); $form->handleRequest($request); $this->navLinks['user_list'] = 'nav-link text-white active bg-gradient-dark'; if ($form->isSubmitted() && $form->isValid()) { $user->setName($form->get('name')->getData()) ->setEmail($form->get('email')->getData()) ->setJob($form->get('job')->getData()) ->setRateType($form->get('rateType')->getData()) ->setRate($form->get('rate')->getData()) ->setLevel($form->get('level')->getData()); $this->entityManager->persist($user); $this->entityManager->flush(); return $this->redirectToRoute('app_list_users'); } return $this->render( 'internal/admin/edit-user.html.twig', array_merge( $this->navLinks, [ 'breadcrumbs' => [ 'Edit User' ], 'data' => $user, 'form' => $form, 'notifications' => $admin->retrieveUnreadNotifications(), ] ) ); } }