checkUserAuthorization($leagueId, $seasonId); $seasonDto = new SeasonDto(); $seasonDto->fillFromObject($seasonObj); $seasonDto->fillFromArray($request->toArray()); $seasonDto->validate(); if (!empty($seasonDto->validationErrors)) { return $this->generateErrorResponse($seasonDto->validationErrors); } $seasonObj->setActive(true); $this->seasonSaver->save($seasonObj, $seasonDto); $this->entityManager->flush(); return new JsonResponse( data: [ 'success' => true, 'season' => $seasonDto->toArray() ], status: Response::HTTP_OK ); } public function generateErrorResponse(array $validationErrors): JsonResponse { return new JsonResponse( data: [ 'success' => false, 'errors' => $validationErrors ], status: Response::HTTP_OK ); } public function checkUserAuthorization(int $leagueId, int $seasonId): Season { $user = $this->security->getUser(); if (is_null($user)) { throw new HttpException(Response::HTTP_FORBIDDEN, "Usuario no encontrado."); } $customRole = $this->customRoleRepository->findBy([ 'name' => $leagueId.'_LEAGUE_PRESIDENT', 'user' => $user ]); if (is_null($customRole)) { throw new HttpException(Response::HTTP_FORBIDDEN, "Usuario no tiene permiso para editar la liga."); } $seasonObj = $this->seasonRepository->find($seasonId); if (is_null($seasonObj)) { throw new HttpException(Response::HTTP_NOT_FOUND, 'Temporada no encontrada.'); } return $seasonObj; } }