Skip to content
Snippets Groups Projects
ProfileController.php 6.8 KiB
Newer Older
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
<?php

namespace App\Controller;

use App\Service\Action\ActionServiceInterface;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
use App\Service\Dto\Classes\ChangeProfileDto;
use App\Service\Dto\Classes\ImageDto;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
use App\Service\Dto\Classes\RecoveryCodeDto;
use App\Service\Dto\Classes\RecoveryDto;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
use App\Service\Response\Classes\FavoritesResponse;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
use App\Service\Response\Classes\ProfileResponse;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
use App\Service\Response\Classes\QuestsResponse;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
use App\Service\Response\Classes\Response;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
use App\Service\Response\Classes\ReviewsResponse;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
use Nelmio\ApiDocBundle\Annotation\Model;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
use Nelmio\ApiDocBundle\Annotation\Security;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
use Symfony\Component\DependencyInjection\Attribute\Autowire;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Attribute\Route;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
use OpenApi\Attributes as OA;
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed

#[Route('/api', name: 'api_')]
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
#[OA\Tag(name: 'Профиль')]
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
class ProfileController extends AbstractController
{
    #[Route('/profile', name: 'profile', methods: ['GET'])]
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    #[OA\Response(
        response: 200,
        description: 'Ответ',
        content: new OA\JsonContent(
            ref: new Model(type: ProfileResponse::class, groups: ["message", "data", "profile"])
        )
    )]
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    public function profile(
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        #[Autowire(service: 'action.profile')]
        ActionServiceInterface $actionService
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    ): JsonResponse
    {
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        return $actionService->getResponse();
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    #[Route('/profile/favorites', name: 'favorites', methods: ['GET'])]
    #[OA\Response(
        response: 200,
        description: 'Ответ',
        content: new OA\JsonContent(
            ref: new Model(type: FavoritesResponse::class, groups: ["message", "data", "card"])
        )
    )]
    public function favorites(
        #[Autowire(service: 'action.favorites')]
        ActionServiceInterface $actionService
    ): JsonResponse
    {
        return $actionService->getResponse();
    }

    #[Route('/profile/reviews', name: 'reviews', methods: ['GET'])]
    #[OA\Response(
        response: 200,
        description: 'Ответ',
        content: new OA\JsonContent(
            ref: new Model(type: ReviewsResponse::class, groups: ["message", "data", "card"])
        )
    )]
    public function reviews(
        #[Autowire(service: 'action.reviews')]
        ActionServiceInterface $actionService
    ): JsonResponse
    {
        return $actionService->getResponse();
    }

    #[Route('/profile/quests', name: 'profile_quests', methods: ['GET'])]
    #[OA\Response(
        response: 200,
        description: 'Ответ',
        content: new OA\JsonContent(
            ref: new Model(type: QuestsResponse::class, groups: ["message", "data", "card"])
        )
    )]
    public function quests(
        #[Autowire(service: 'action.profile.quests')]
        ActionServiceInterface $actionService
    ): JsonResponse
    {
        return $actionService->getResponse();
    }

i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    #[Route('/profile/delete', name: 'profile_delete', methods: ['GET'])]
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    #[OA\Response(
        response: 200,
        description: 'Ответ',
        content: new OA\JsonContent(
            ref: new Model(type: Response::class, groups: ["message"])
        )
    )]
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    public function deleteProfile(
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        #[Autowire(service: 'action.profile.delete')]
        ActionServiceInterface $actionService,
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    ): JsonResponse
    {
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        return $actionService->getResponse();
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    }

    #[Route('/profile/recovery', name: 'profile_recovery', methods: ['POST'])]
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    #[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"])
        )
    )]
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    #[Security(name: null)]
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    public function recoveryProfile(
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        #[Autowire(service: 'action.recovery.send')]
        ActionServiceInterface $actionService,
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    ): JsonResponse
    {
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        return $actionService->getResponse();
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    }

    #[Route('/profile/recovery/check', name: 'profile_recovery_check', methods: ['POST'])]
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    #[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"])
        )
    )]
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    #[Security(name: null)]
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    public function recoveryCodeProfile(
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        #[Autowire(service: 'action.recovery.code')]
        ActionServiceInterface $actionService,
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    ): JsonResponse
    {
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        return $actionService->getResponse();
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed

    #[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(
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        #[Autowire(service: 'action.profile.change')]
        ActionServiceInterface $actionService,
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    ): JsonResponse
    {
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        return $actionService->getResponse();
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    #[Route('/profile/email/reset', name: 'profile_email_reset', methods: ['GET'])]
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    #[OA\Response(
        response: 200,
        description: 'Ответ',
        content: new OA\JsonContent(
            ref: new Model(type: Response::class, groups: ["message"])
        )
    )]
    public function resetLastConfirmEmail(
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        #[Autowire(service: 'action.reset.email')]
        ActionServiceInterface $actionService,
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    ): JsonResponse
    {
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        return $actionService->getResponse();
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
    }

    #[Route('/profile/image', name: 'profile_image', methods: ['POST'])]
    #[OA\RequestBody(
        content: new OA\JsonContent(ref: new Model(type: ImageDto::class))
    )]
    #[OA\Response(
        response: 200,
        description: 'Ответ',
        content: new OA\JsonContent(
            ref: new Model(type: Response::class, groups: ["message"])
        )
    )]
    public function saveImage(
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        #[Autowire(service: 'action.profile.image.save')]
        ActionServiceInterface $actionService,
    ): JsonResponse
    {
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        return $actionService->getResponse();
    }

    #[Route('/profile/image/delete', name: 'profile_image_delete', methods: ['GET'])]
    #[OA\Response(
        response: 200,
        description: 'Ответ',
        content: new OA\JsonContent(
            ref: new Model(type: Response::class, groups: ["message"])
        )
    )]
    public function deleteImage(
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        #[Autowire(service: 'action.profile.image.delete')]
        ActionServiceInterface $actionService,
    ): JsonResponse
    {
i.vasilenko@iq-adv.ru's avatar
i.vasilenko@iq-adv.ru committed
        return $actionService->getResponse();