File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Http/Controllers/Api/ExternalApiController.php
<?php
namespace App\Http\Controllers\Api;
use App\Core\Ticket\Application\TicketService;
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;
protected $ticketService;
public function __construct()
{
$this->middleware('auth:api');
$this->academyService = new AcademyService();
$this->userService = new UserService();
$this->ticketService = new TicketService();
}
/**
* 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(),
]);
}
}
/**
* Retrieve ticket parameters data.
*
* @return \Illuminate\Http\JsonResponse
*
* @OA\Get(
* path="/api/external-api/ticket-parameters",
* tags={"external-api"},
* summary="External Get ticket parameters",
* description="Returns a list of ticket parameters filtered by registration date.",
* @OA\Response(
* response=200,
* description="Successful response with filtered user data"
* ),
* @OA\Response(
* response=500,
* description="Server error"
* )
* )
*/
public function getTicketParametersData(
Request $request
): JsonResponse {
try {
$data = $this->ticketService->getTicketParametersData($request);
return response()->json([
'status' => 'success',
'filters' => $request->all(),
'data' => $data,
]);
} catch (Exception $e) {
return response()->json([
'status' => 'error',
'filters' => $request->all(),
'message' => $e->getMessage(),
]);
}
}
}