EscolaLMS/Auth

View on GitHub
src/Http/Controllers/Admin/Swagger/UserInterestsSwagger.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace EscolaLms\Auth\Http\Controllers\Admin\Swagger;

use EscolaLms\Auth\Http\Requests\Admin\UserInterestAddRequest;
use EscolaLms\Auth\Http\Requests\Admin\UserInterestDeleteRequest;
use EscolaLms\Auth\Http\Requests\Admin\UserInterestsListRequest;
use EscolaLms\Auth\Http\Requests\Admin\UserInterestsUpdateRequest;
use Illuminate\Http\JsonResponse;

interface UserInterestsSwagger
{
    /**
     * @OA\Get(
     *     path="/api/admin/users/{id}/interests",
     *     summary="Get user interests",
     *     description="",
     *     tags={"Admin User Interests"},
     *      security={
     *          {"passport": {}},
     *      },
     *     @OA\Parameter(
     *          name="id",
     *          required=true,
     *          in="path",
     *          @OA\Schema(
     *              type="integer",
     *              format="int64",
     *          ),
     *     ),
     *     @OA\Response(
     *          response=200,
     *          description="successful operation, returns list of user interests",
     *          @OA\JsonContent(
     *              @OA\Schema(
     *                  type="array",
     *                  @OA\Items(
     *                      ref="#/components/schemas/Category"
     *                  )
     *              )
     *          )
     *     ),
     * )
     */
    public function listUserInterests(UserInterestsListRequest $request): JsonResponse;

    /**
     * @OA\Put(
     *     path="/api/admin/users/{id}/interests",
     *     summary="Set user interests",
     *     description="Set user interests",
     *     tags={"Admin User Interests"},
     *     security={
     *          {"passport": {}},
     *     },
     *     @OA\Parameter(
     *          name="id",
     *          required=true,
     *          in="path",
     *          @OA\Schema(
     *              type="integer",
     *              format="int64",
     *          ),
     *     ),
     *     @OA\RequestBody(
     *          @OA\JsonContent(
     *              @OA\Property(
     *                  property="interests",
     *                  type="array",
     *                  description="Ids of categories to be set",
     *                  @OA\Items(
     *                      type="integer",
     *                      format="int64"
     *                  )
     *              )
     *          )
     *     ),
     *     @OA\Response(
     *          response=200,
     *          description="successful operation, returns list of user interests",
     *          @OA\JsonContent(
     *              @OA\Schema(
     *                  type="array",
     *                  @OA\Items(
     *                      ref="#/components/schemas/Category"
     *                  )
     *              )
     *          )
     *     ),
     * )
     */
    public function updateUserInterests(UserInterestsUpdateRequest $request): JsonResponse;

    /**
     * @OA\Post(
     *     path="/api/admin/users/{id}/interests",
     *     summary="Add single user interest",
     *     description="Add single user interest",
     *     tags={"Admin User Interests"},
     *      security={
     *          {"passport": {}},
     *      },
     *     @OA\Parameter(
     *          name="id",
     *          required=true,
     *          in="path",
     *          @OA\Schema(
     *              type="integer",
     *              format="int64",
     *          ),
     *     ),
     *     @OA\RequestBody(
     *          required=true,
     *          @OA\MediaType(
     *              mediaType="multipart/form-data",
     *              @OA\Schema(
     *              required={"interest_id"},
     *                  @OA\Property(
     *                      property="interest_id",
     *                      type="integer",
     *                      format="int64",
     *                      description="Id of category to be added"
     *                  )
     *              )
     *          )
     *     ),
     *     @OA\Response(
     *          response=200,
     *          description="successful operation, returns list of user interests",
     *          @OA\JsonContent(
     *              @OA\Schema(
     *                  type="array",
     *                  @OA\Items(
     *                      ref="#/components/schemas/Category"
     *                  )
     *              )
     *          )
     *     ),
     * )
     */
    public function addUserInterest(UserInterestAddRequest $request): JsonResponse;

    /**
     * @OA\Delete(
     *     path="/api/admin/users/{id}/interests/{interest_id}",
     *     summary="Add single user interest",
     *     description="",
     *     tags={"Admin User Interests"},
     *      security={
     *          {"passport": {}},
     *      },
     *     @OA\Parameter(
     *          name="id",
     *          required=true,
     *          in="path",
     *          @OA\Schema(
     *              type="integer",
     *              format="int64",
     *          ),
     *     ),
     *     @OA\Parameter(
     *          name="interest_id",
     *          required=true,
     *          in="path",
     *          @OA\Schema(
     *              type="integer",
     *              format="int64",
     *          ),
     *     ),
     *     @OA\Response(
     *          response=200,
     *          description="successful operation, returns list of user interests",
     *          @OA\JsonContent(
     *              @OA\Schema(
     *                  type="array",
     *                  @OA\Items(
     *                      ref="#/components/schemas/Category"
     *                  )
     *              )
     *          )
     *     ),
     * )
     */
    public function deleteUserInterest(UserInterestDeleteRequest $request): JsonResponse;
}