رویدادهای مشابه - با طعمی متفاوت

سلام
نسخه جدیدی از رویداد های مشابه ساخته و افتتاح گشت. دلیل این امر هم این بود به همزمان نیاز نباشه با فرانت جلو بریم و نسخه قبلی هم که فعلا استفاده می شه دست نخورده باقی مانده است.

ساختار رویدادهای نسخه جدید هم فرق کرده و property هر رویداد به شکل وحشت ناکی کمتر شده.
دلایلی هم این امر داشته که فعلا داخلش نمی شویم.

برای دریافت رویدادهای مشابه، هر رویدادی به شکل زیر درخواستی می فرستیم:
GET https://api.evand.com/v2/events/{eventSlug}/similar

که در لینک فوق یکی eventSlug رو با اسلاگ رویداد جایگزین می کنید و هم اینکه v2 به لینک اضافه شده که با حذف اون، رویدادهای مشابه قبلی لود می شه

دیتای برگشتی برای ریسورس فوق هم به این شکل خواهد بود:

{
    "data": [
        {
            "name": "دوره دفاع از شبکه-CND",
            "slug": "cnd1-summer-clickpro",
            "city_name": "تهران",
            "online": false,
            "organization_name": "کلیک پرو",
            "organization_slug": "کلیک-پرو-430947",
            "start_date": "2018-11-11T16:00:00+0330",
            "end_date": "2018-12-16T20:00:00+0330",
            "cover": "https://static.evand.net/images/events/covers/original/170716621dc3c6a48216e476c47a39b7.jpg",
            "available": true,
            "minimum_ticket_price": 1400000,
            "maximum_ticket_price": 1400000
        },
        {
            "name": "دوره مقدماتی تحلیل بدافزارها - IMA",
            "slug": "ima-1-summer-clickpro",
            "city_name": "تهران",
            "online": false,
            "organization_name": "کلیک پرو",
            "organization_slug": "کلیک-پرو-430947",
            "start_date": "2018-11-18T14:00:00+0330",
            "end_date": "2018-12-25T17:00:00+0330",
            "cover": "https://static.evand.net/images/events/covers/original/6e7d1b8fe7e568fa80ecb9859fb59bf2.jpg",
            "available": true,
            "minimum_ticket_price": 945000,
            "maximum_ticket_price": 945000
        },
        {
            "name": "ابزارها، تکنیک\u200cها و اکسپلویت\u200cهای نفوذگرها و مدیریت رخداد-SEC504",
            "slug": "sec504-summer-clickpro",
            "city_name": "تهران",
            "online": false,
            "organization_name": "کلیک پرو",
            "organization_slug": "کلیک-پرو-430947",
            "start_date": "2018-12-11T16:00:00+0330",
            "end_date": "2018-12-23T20:00:00+0330",
            "cover": "https://static.evand.net/images/events/covers/original/9c9cdf4548bb8151bcfd79ada80bf389.jpg",
            "available": true,
            "minimum_ticket_price": 1500000,
            "maximum_ticket_price": 1500000
        },
        {
            "name": "دوره جامع CCNP",
            "slug": "ccnp-summer-clickpro",
            "city_name": "تهران",
            "online": false,
            "organization_name": "کلیک پرو",
            "organization_slug": "کلیک-پرو-430947",
            "start_date": "2019-01-08T17:00:00+0330",
            "end_date": "2019-05-23T20:00:00+0330",
            "cover": "https://static.evand.net/images/events/covers/original/12d9acde1a6bff6440bd7a4867ec88f4.jpg",
            "available": true,
            "minimum_ticket_price": 2600000,
            "maximum_ticket_price": 2600000
        }
    ]
}

نکته ای که وجود داره، این ریسورس صفحه بندی نداره و تعداد آیتم هاش به ۴ تا محدود می شه. و قابلیت های include هم امان پذیر نیست و صرفا هر چیزی که قابل استفاده باشه برگشت داده شده و چیز مخفی دیگری هم درست نهفته نشده است. (شکلک با تشکر)

نکته مهم دیگه در رابطه با دیتای برگشتی ریسورس فوق، مربوط به پراپرتی available می شه که این مقدار از ۲ مقدار دیگه محاسبه می شه. یکی اینکه بلیت ها قابل خریداری باشه و اینکه تاریخ پایان رویداد نگذشته باشه و در اینصورت مقدارش true خواهد بود.
البته برای این ریسورس نیازه که این دو شرط باشه و رویدادهایی که این شرط رو دارن لیست خواهند شد و در عمل این پراپرتی همیشه مقدار true خواهد داشت.
دلیل توضیح این بود که معلوم شه که چی هست و اینکه بعدا در جاهای دیگه هم ممکنه رویدادها این شکلی شن.
یه مسئله هم اینکه در فرانت این پراپرتی محاسبه می شه و همین هم به درخواست مهدی اضافه شده.
(راستش راجب این مسئله فکر کردم، تو این ریسورس هیچ وقت نباید رویدادی که available اش false باشه بیاد، در نتنیجه نیازی هم نیست داشته باشیمش. صرفا به این خاطر که بعدا در لیست ها هم خروج رو همین شکلی در بیاریم، دلیل منطقی ای نیست که اینم الکی بزاریم. برای همین پاکش کردم و در این ریسورس قابل دسترس نیست )

مورد بعدی هم حداقل قیمت و حداکثر قیمت بلیت هاست که از ریسورس فوق می شه گرفت و نیازی به include بازی نیست.

و در نهایت اینکه این ریسورس مستقیم از elastic می خونه و ترکیدن elastic برابر با در دسترس نبود این ریسورس خواهد بود که شاید بهتر باشه خطای ۵۰۰ رو هم بتونید هندل کنید که اگه مثلا این خطا رو گرفتید کلا بخش رویدادهای مشابه رو نشون ندید.

پست‌های معروف از این وبلاگ

استفاده از Refresh Token جهت دریافت توکن‌های معتبر جدید (کانکت)

لیست کاربران نشان شده - سرویس کانکت

بلیت خریداری شده کاربر در رویداد