#P1076
Function indexCharter
· هدف:
این متد کنترلی (Controller Method)، به عنوان یک نقطه پایانی (Endpoint) برای دریافت اطلاعات مربوط به یک یا چند "چارتر" (Charter) از پایگاه داده طراحی شده است. هدف اصلی این است که فرآیند بازیابی دادهها را با یک ورودی شناسه (ID) هوشمند کند؛ به طوری که اگر یک شناسه واحد (عددی) ارسال شود، تنها همان رکورد را بازگرداند، و اگر یک آرایه از شناسهها ارسال شود، تمامی رکوردهای منطبق را بازیابی کند. این متد برای اطمینان از سازگاری و ساختاردهی خروجی، از Laravel Resources (CharterResource) برای تبدیل مدلهای خام پایگاه داده به یک فرمت JSON استاندارد و غنی استفاده میکند. در نهایت، پاسخ خروجی همیشه به صورت JSON شامل وضعیت (status)، زمان (timestamp) و دادههای اصلی (data) ارائه میشود.
| ویژگیها | توضیحات |
| هدف کلی | بازیابی اطلاعات یک یا چند رکورد "charter" از جدول charters بر اساس شناسه(ها)ی ارسالی در درخواست. |
| ورودی هوشمند | پشتیبانی از بازیابی بر اساس یک شناسه تکی (با is_numeric) یا چندین شناسه (با whereIn). |
| قالببندی خروجی | استفاده از CharterResource برای استانداردسازی و قالببندی دادههای خروجی قبل از ارسال به کلاینت. |
| مورد استفاده | فراهم کردن یک API منعطف برای سیستمهای فرانتاند که نیاز دارند به طور همزمان یا منفرد، جزئیات چارترها را نمایش دهند. |
· ورودیها (پارامترها):
| توضیحات | نوع داده | نام پارمتر |
| شیء درخواست HTTP که حاوی دادههای ورودی است. | Request (Laravel) |
$request |
| array | int | $request->id |
· خروجی (Return):
| توضیحات | نوع داده |
یک پاسخ استاندارد JSON که همیشه شامل کلیدهای status, time و data یا message است. |
JsonResponse |
status: true و data حاوی یک شیء CharterResource یا یک کالکشن از آن. |
حالت موفقیت |
status: false و message: "item not found!" در صورتی که شناسه(ها) معتبر باشند اما رکوردی یافت نشود. |
حالت عدم یافتن |
· مثال استفاده:
// سناریو ۱: درخواست برای یک چارتر با شناسه 12
// متد و آدرس: GET /api/panel/v2/charter/index?id=12
// خروجی مورد انتظار (در صورت موفقیت):
{
"status": true,
"time": 1729017600,
"data": {
"id": 12,
"slug": "abc1234",
"type": "route",
// ... سایر جزئیات فرمتشده توسط CharterResource
}
}
// ----------------------------------------------------------------
// سناریو ۲: درخواست برای سه چارتر با شناسههای 15، 20 و 21
// متد و آدرس: GET /api/panel/v2/charter/index?id[]=15&id[]=20&id[]=21
// خروجی مورد انتظار (در صورت موفقیت):
{
"status": true,
"time": 1729017600,
"data": [
{ "id": 15, /* ... */ },
{ "id": 20, /* ... */ },
{ "id": 21, /* ... */ }
]
}
// ----------------------------------------------------------------
// سناریو ۳: درخواست برای یک چارتر با شناسه ناموجود (مثلاً 9999)
// متد و آدرس: GET /api/panel/v2/charter/index?id=9999
// خروجی مورد انتظار:
{
"status": false,
"time": 1729017600,
"message": "item not found!"
}