← Back
Editing: UserApiController.php
<?php namespace App\Controller\Api; use App\Entity\User; use App\Repository\UserRepository; use App\Service\AgentService; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; #[Route(path: '/api/user')] class UserApiController extends AbstractApiController { #[Route(path: '/', name: 'api_user_get')] public function getAction(Request $request): JsonResponse { $users = $this->em->createQueryBuilder() ->select('u') ->from('App:User', 'u'); $users->setMaxResults($request->query->get('count', 20)); if ($request->query->get('sort')) { $users->orderBy('u.id', $request->query->get('sort', 'asc')); } return $this->response($users->getQuery()->getResult()); } #[Route(path: '/me', name: 'api_user_me', options: [])] public function meAction(): JsonResponse { $user = $this->getUser(); $user->setClient($user->getAgency()); return $this->response($user, 'show_user'); } /** * @throws \Exception */ #[Route(path: '/objectif', name: 'api_user_goal')] public function getGoalAction(AgentService $agentService): JsonResponse { /** @var User $user */ $user = $this->getUser(); return $this->response($agentService->getGoal($user)); } /** * @throws \Exception */ #[Route(path: '/objectif/superagent', name: 'api_user_superagent_goal')] public function getSuperAgentGoalAction( AgentService $agentService, UserRepository $userRepository, Request $request ): JsonResponse { /** @var User $superAgent */ $superAgent = $this->getUser(); $remainingControls = 0; $objective = 0; $cntAgents = 0; $agents = $this->getAgentsFromUser($superAgent, $userRepository, $request); foreach ($agents as $agent) { $agent = $agent[0]; if (in_array('ROLE_AGENT', $agent->getRoles())) { $agentService->setAgent($agent); $agentGoal = $agentService->getGoal($agent); $remainingControls += $agentGoal['controle_a_effectuer']; $objective += $agentGoal['objectif']; ++$cntAgents; } } return $this->response([ 'controle_a_effectuer' => $remainingControls, 'objectif' => $objective, 'totalAgents' => $cntAgents, ]); } private function getAgentsFromUser(User $superAgent, UserRepository $userRepository, Request $request): array { if (in_array('ROLE_ORGANIZATION', $superAgent->getRoles())) { $agents = []; foreach ($superAgent->getOrganization()->getAgencies() as $agency) { $agencyAgents = $userRepository->findAgentsByAgency($request, $agency->getId()); $agents = array_merge($agents, $agencyAgents); } return $agents; } return $userRepository->findAgentsByAgency($request, $superAgent->getAgency()->getId()); } /** * @return JsonResponse * * @throws \Exception */ #[Route(path: '/objectif/manager', name: 'api_user_manager_goal')] public function getManagerGoalAction(AgentService $agentService) { /** @var User $user */ $manager = $this->getUser(); $remainingControls = 0; $objective = 0; $cntAgents = 0; foreach ($manager->getAgents() as $agent) { if (in_array('ROLE_AGENT', $agent->getRoles())) { $agentService->setAgent($agent); $agentGoal = $agentService->getGoal($agent); $remainingControls += $agentGoal['controle_a_effectuer']; $objective += $agentGoal['objectif']; ++$cntAgents; } } return $this->response([ 'controle_a_effectuer' => $remainingControls, 'objectif' => $objective, 'totalAgents' => $cntAgents, ]); } }
Save File
Cancel