#P1095
Function getAgeTitle
· هدف:
این متد یک ابزار کمکی ساده و کاربردی برای تعیین گروه سنی (adult, child, infant) یک شخص بر اساس تاریخ تولد و یک تاریخ مبنا (معمولاً تاریخ پرواز یا شروع اقامت) است. منطق آن بر اساس محاسبه اختلاف تعداد روزها بین دو تاریخ کار میکند. ابتدا تاریخ تولد را با استفاده از Functions::checkDatetime به فرمت استاندارد تبدیل کرده و سپس اختلاف آن با تاریخ مبنا را بر حسب روز محاسبه میکند. در نهایت، بر اساس قوانین استاندارد صنعت هوانوردی و گردشگری، گروه سنی را مشخص میکند: کمتر یا مساوی ۷۳۰ روز (۲ سال) به عنوان infant (نوزاد)، بین ۷۳۰ و ۴۳۸۰ روز (۲ تا ۱۲ سال) به عنوان child (کودک)، و بیشتر از ۴۳۸۰ روز (۱۲ سال) به عنوان adult (بزرگسال) در نظر گرفته میشود.
| ویژگیها |
توضیحات |
| هدف کلی |
ایجادتعیین یکگروه یاسنی چند(نوزاد، چارترکودک، بزرگسال) بر اساس تنظیماتتاریخ ورودی، شامل نوع، جزئیات مسیر/اقامتگاه و الگوی تکرار.تولد. |
عملیاتمنطق اتمیاصلی |
(Atomic)محاسبه اختلاف روز بین تاریخ تولد و تاریخ مبنا. |
| قوانین سنی |
infant <= 2 سال, child > 2 و <= 12 سال, adult > 12 سال. |
| استانداردسازی ورودی |
استفاده از DB:Functions::transactioncheckDatetime برای تضمینمدیریت یکپارچگیفرمتهای دادهها؛مختلف تمام عملیات یا با هم موفق میشوند یا با هم لغو میگردند.تاریخ. |
پشتیبانی از انواع چارترکاربرد |
مدیریتابزار منطقکمکی متفاوتداخلی برای چارترهای route (پرواز، قطار، اتوبوس) و accommodation (هتل). |
موتور تکرار (Repeat Engine) |
قابلیت ایجاد چارترها بر اساس یک الگوی تکرار: لیست تاریخهای مشخص (dates)، روزهای هفتگی (weekly) یا دورههای زمانی متناوب (periodic). |
ساختار داده پیچیده |
پردازش ساختارهای تواستفاده در توسایر برایمتدهای جزئیاتنیازمند مسیر،به کلاسهایگروه قیمتی (calculations)، مالیاتها (taxes) و اطلاعات مالی (financial). |
پاکسازی کش |
پس از ایجاد موفقیتآمیز، کلیدهای مرتبط در Redis را حذف میکند تا اطمینان حاصل شود که دادههای جدید در پاسخهای بعدی لحاظ میشوند.سنی. |
· ورودیها (پارامترها):
| توضیحات |
موقعیت |
نوع داده |
نام پارمتر |
آبجکتتاریخ اصلیتولد درخواستشخص حاویدر تمام دادهفرمتهای لازممختلف برای(مثلاً ایجاد1990-05-20, چارتر.1369/02/30). |
Illuminate\Http\RequestParameter |
string |
$requestbirth |
کلیدتاریخ اصلی.مبنا نوعبرای چارترمحاسبه راسن مشخص(مثلاً میکند.تاریخ مقادیر معتبر: 'route' یا 'accommodation'پرواز). |
Parameter |
string |
$request->type |
(برای type: 'route') نوع وسیله نقلیه را مشخص میکند: 'aircraft', 'train', 'bus'. |
string |
$request->subtype |
آرایهای حاوی جزئیات اصلی چارتر، مانند مبدأ، مقصد، تاریخ و اطلاعات وسیله نقلیه. |
array |
$request->items |
مهم. آرایهای از آبجکتها که کلاسهای مختلف قیمتی و ظرفیتی چارتر را تعریف میکنند. |
array |
$request->calculations |
(اختیاری) آبجکتی که منطق تکرار چارتر را مشخص میکند. شامل type (مانند 'weekly') و جزئیات مربوطه. |
object |
$request->repeat |
(برای type: 'accommodation') شامل start و end برای محدوده تاریخ اقامت. |
object |
$request->date_range |
سایر فیلدها مانند capacity, description, permissions و غیره. |
... |
...datetime |
· خروجی (Return):
| توضیحات |
نوع داده |
یکیکی پاسخاز JSONسه کهرشته در صورت موفقیت، حاوی یک آرایه با کلیدهایزیر: main'infant'،, calculations'child'،, taxes'adult' و financial است. این کلیدها به ترتیب شناسههای ایجاد شده برای چارتر اصلی، کلاسهای قیمتی، مالیاتها و اطلاعات مالی را در خود جای دادهاند. در صورت بروز خطا، یک پاسخ با کد وضعیت 500 و پیام خطا برگردانده میشود.. |
Illuminate\Http\JsonResponsestring |
· مثالمثال استفاده:استفاده / سناریو:
سناریو //۱
: سناریو:تعیین ایجادگروه سنی یک چارترکودک
پرواز
هفتگی- Call:
برایgetAgeTitle('2015-08-01', روزهای'2025-10-15 شنبه14:30:00')
- Action:
- اختلاف روز بین
2015-08-01 و دوشنبه2025-10-15 //محاسبه POSTمیشود /api/panel/v2/charter/storeکه //تقریباً Body۳۷۲۷ (JSON):روز {است.
"type":3727 "route",بین "subtype": "aircraft",
"capacity": 180,
"description": "چارتر هفتگی تهران-مشهد",
"permissions": { /* ... */ },
"repeat": {
"type": "weekly",
"from": "1404/08/01",
"to": "1404/08/30",
"days": [6, 1] // شنبه730 و دوشنبه4380 }قرار دارد.
سناریو ۲: تعیین گروه سنی یک نوزاد
- Call:
getAgeTitle('1402/11/10', "items":'2025-10-15 [14:30:00') {-> "details":(1402/11/10 {معادل "origin":2024-01-30)
{- Action:
"id":
1,
"name": "THR" },
"destination": { "id": 2, "name": "MHD" },
"datetime": "1404/08/04 10:30", //checkDatetime تاریخ یکیشمسی را به میلادی تبدیل میکند.
- اختلاف روز بین
2024-01-30 و 2025-10-15 محاسبه میشود که تقریباً ۶۲۴ روز است.
624 کمتر از روزهای730 الگواست.
(یکشنبه)
"vehicle":
*/ }
}
}
],
"calculations": [
{
"name": "اکونومی",
"capacity": 150,
"financial": { /* ... */ }
},
{
"name": "بیزنس",
"capacity": 30,
"financial": { /* ... */ }
}
]
}
// خروجی مورد انتظار (در صورت موفقیت):
{
"main": [101, 102, 103, ...], // شناسههای چارترهای اصلی ایجاد شده برای هر تاریخ
"calculations": [201, 202, 203, ...], // شناسههای کلاسهای قیمتی
"taxes": [301, 302, ...], // شناسههای مالیاتها
"financial": [401, 402, ...] // شناسههای اطلاعات مالی
}