HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/qas.sports-crowd.com/app/Http/Controllers/Api/ExternalApiController.php
<?php

namespace App\Http\Controllers\Api;

use App\Core\User\Application\UserService;
use App\Http\Controllers\Controller;
use App\Services\AcademyService;
use Exception;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class ExternalApiController extends Controller
{

    protected $academyService;
    protected $userService;

    public function __construct()
    {
        $this->middleware('auth:api');

        $this->academyService = new AcademyService();
        $this->userService = new UserService();
    }

    /**
     * Retrieve academy user data filtered by academy type and registration date.
     *
     * @return \Illuminate\Http\JsonResponse
     *
     * @OA\Get(
     *     path="/api/external-api/academy-data/{academyType}/{sinceDate}",
     *     tags={"external-api"},
     *     summary="External Get academy users by type and date",
     *     description="Returns a list of academy users filtered by academy type and registration date.",
     *     @OA\Parameter(
     *         name="academyType",
     *         in="path",
     *         description="Type of academy to filter users by (e.g., children, adults, etc.)",
     *         required=true,
     *         @OA\Schema(type="string")
     *     ),
     *     @OA\Parameter(
     *         name="sinceDate",
     *         in="path",
     *         description="Filter users registered on or after this date. Format: YYYY-MM-DD HH:MM:SS",
     *         required=false,
     *         @OA\Schema(type="string", format="date")
     *     ),
     *     @OA\Response(
     *         response=200,
     *         description="Successful response with filtered user data"
     *     ),
     *     @OA\Response(
     *         response=500,
     *         description="Server error"
     *     )
     * )
     */
    public function getAcademyData(
        Request $request
    ): JsonResponse {
        try {
            $data = $this->academyService->getAcademyData($request);
            return response()->json([
                'status' => 'success',
                'filters' => $request->all(),
                'data' => $data->get(),
            ]);
        } catch (Exception $e) {
            return response()->json([
                'status' => 'error',
                'filters' => $request->all(),
                'message' => $e->getMessage(),
            ]);
        }
    }

    /**
     * Retrieve client user data filtered by registration date.
     *
     * @return \Illuminate\Http\JsonResponse
     *
     * @OA\Get(
     *     path="/api/external-api/client-data/{sinceDate}",
     *     tags={"external-api"},
     *     summary="External Get all client users by date",
     *     description="Returns a list of client users filtered by registration date.",
     *     @OA\Parameter(
     *         name="sinceDate",
     *         in="path",
     *         description="Filter users registered on or after this date. Format: YYYY-MM-DD HH:MM:SS",
     *         required=false,
     *         @OA\Schema(type="string", format="date")
     *     ),
     *     @OA\Response(
     *         response=200,
     *         description="Successful response with filtered user data"
     *     ),
     *     @OA\Response(
     *         response=500,
     *         description="Server error"
     *     )
     * )
     */
    public function getClientData(
        Request $request
    ): JsonResponse {
        try {
            $data = $this->userService->getClientData($request);
            return response()->json([
                'status' => 'success',
                'filters' => $request->all(),
                'data' => $data->get(),
            ]);
        } catch (Exception $e) {
            return response()->json([
                'status' => 'error',
                'filters' => $request->all(),
                'message' => $e->getMessage(),
            ]);
        }
    }
}