<?php namespace App\Controller; use App\Service\Action\ActionServiceInterface; use App\Service\Dto\Classes\ChangeProfileDto; use App\Service\Dto\Classes\RecoveryCodeDto; use App\Service\Dto\Classes\RecoveryDto; use App\Service\Response\Classes\ProfileResponse; use App\Service\Response\Classes\Response; use Nelmio\ApiDocBundle\Annotation\Model; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\Routing\Attribute\Route; use OpenApi\Attributes as OA; #[Route('/api', name: 'api_')] #[OA\Tag(name: 'Профиль')] class ProfileController extends AbstractController { #[Route('/profile', name: 'profile', methods: ['GET'])] #[OA\Response( response: 200, description: 'Ответ', content: new OA\JsonContent( ref: new Model(type: ProfileResponse::class, groups: ["message", "data", "profile"]) ) )] public function profile( ActionServiceInterface $profileService ): JsonResponse { return $profileService->getResponse(); } #[Route('/profile/delete', name: 'profile_delete', methods: ['GET'])] #[OA\Response( response: 200, description: 'Ответ', content: new OA\JsonContent( ref: new Model(type: Response::class, groups: ["message"]) ) )] public function deleteProfile( ActionServiceInterface $deleteProfileService, ): JsonResponse { return $deleteProfileService->getResponse(); } #[Route('/profile/recovery', name: 'profile_recovery', methods: ['POST'])] #[OA\RequestBody( content: new OA\JsonContent(ref: new Model(type: RecoveryDto::class)) )] #[OA\Response( response: 200, description: 'Ответ', content: new OA\JsonContent( ref: new Model(type: Response::class, groups: ["message"]) ) )] public function recoveryProfile( ActionServiceInterface $recoveryProfileService, ): JsonResponse { return $recoveryProfileService->getResponse(); } #[Route('/profile/recovery/check', name: 'profile_recovery_check', methods: ['POST'])] #[OA\RequestBody( content: new OA\JsonContent(ref: new Model(type: RecoveryCodeDto::class)) )] #[OA\Response( response: 200, description: 'Ответ', content: new OA\JsonContent( ref: new Model(type: Response::class, groups: ["message"]) ) )] public function recoveryCodeProfile( ActionServiceInterface $checkRecoveryService, ): JsonResponse { return $checkRecoveryService->getResponse(); } #[Route('/profile/change', name: 'profile_change', methods: ['POST'])] #[OA\RequestBody( content: new OA\JsonContent(ref: new Model(type: ChangeProfileDto::class)) )] #[OA\Response( response: 200, description: 'Ответ', content: new OA\JsonContent( ref: new Model(type: ProfileResponse::class, groups: ["message", "data", "profile"]) ) )] public function changeProfile( ActionServiceInterface $profileChangeService, ): JsonResponse { return $profileChangeService->getResponse(); } #[Route('/profile/reset/email', name: 'profile_reset_email', methods: ['GET'])] #[OA\Response( response: 200, description: 'Ответ', content: new OA\JsonContent( ref: new Model(type: Response::class, groups: ["message"]) ) )] public function resetLastConfirmEmail( ActionServiceInterface $resetEmailService, ): JsonResponse { return $resetEmailService->getResponse(); } }