# GET /api/v2/support/ticket/notes/list

<div id="bkmrk-" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"></div>### Route Info

<div id="bkmrk-method-endpoint-cont" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"><div><table border="1" style="width: 100%; margin: auto; border-collapse: collapse; text-align: center; border: 1px solid #ddd;"><tbody><tr style="background: #f4f4f4; font-weight: bold;"><td style="padding: 10px;">Method</td><td style="padding: 10px;">Endpoint</td><td style="padding: 10px;">Controller</td></tr><tr><td style="direction: ltr; padding: 10px;">GET</td><td style="direction: ltr; padding: 10px;">/api/v2/support/ticket/notes/list</td><td style="direction: ltr; padding: 10px;">OfficialController@listNotesTicketSupport</td></tr></tbody></table>

</div></div>### شرح عملکرد (Functionality)

این متد وظیفه بازگرداندن جزئیات کامل یک تیکت و لیست گفتگوهای (Notes) آن را بر عهده دارد. همچنین به صورت همزمان عملیات "خوانده شدن" پیام‌ها را انجام می‌دهد. نکات فنی و منطقی آن عبارتند از:

<div id="bkmrk-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%28access" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;">- **کنترل دسترسی (Access Control):** سیستم بررسی می‌کند که کاربر جاری اجازه مشاهده تیکت را دارد یا خیر. کاربر مجاز است اگر: 
    - درخواست‌کننده (Requester) تیکت باشد.
    - اپراتور (Operator) تخصیص داده شده به تیکت باشد.
    - عضو لیست `members` دپارتمان مربوطه باشد.
    - مدیر دپارتمان باشد (که در این صورت نقش مدیریتی او به عضویت عادی تبدیل شده و پردازش می‌شود).
    
    <span style="color: red; font-size: 12px;">\* در صورت عدم دسترسی، `status: false` و پیام خطا برگردانده می‌شود.</span>
- **منطق "خوانده شدن" (Mark as Read):**
    - پیام‌هایی که توسط خود کاربر نوشته شده‌اند، نادیده گرفته می‌شوند.
    - اگر کاربر جاری عضو دپارتمان باشد (پشتیبان)، سیستم فقط پیام‌هایی را به عنوان "خوانده شده" علامت می‌زند که نویسنده آن‌ها عضو دپارتمان **نباشد** (یعنی پیام‌های مشتری).
    - فیلدهای `read_by` و `read_on` در دیتابیس به‌روزرسانی می‌شوند.
- **فرمت‌دهی محتوا (HTML Content):**
    - اگر نوع پیام `attachment` باشد، بک‌اند به جای بازگرداندن صرفِ URL، کد **HTML** تولید می‌کند. 
        - برای تصاویر: تگ `<img>` درون لینک قرار می‌گیرد.
        - برای فایل‌ها: نام فایل به همراه یک آیکون SVG درون لینک قرار می‌گیرد.
    - آدرس فایل‌ها به دامین `storage.service01.ir` اشاره دارد.
- **هیدراتاسیون داده‌ها:** اطلاعات کاربران (نویسنده پیام، درخواست‌کننده، اپراتور) با استفاده از متد `StaticController::getOperators` به آبجکت کامل تبدیل می‌شود.

</div>### پارامترهای ورودی (Input Parameters)

<div id="bkmrk-%D9%86%D8%A7%D9%85-%D9%BE%D8%A7%D8%B1%D8%A7%D9%85%D8%AA%D8%B1-%D9%86%D9%88%D8%B9-%D8%A7%D9%84%D8%B2%D8%A7" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"><div><table border="1" style="width: 100%; border-collapse: collapse; text-align: right;"><thead><tr style="background: #f4f4f4;"><th style="padding: 8px;">نام پارامتر</th><th style="padding: 8px;">نوع</th><th style="padding: 8px;">الزامی؟</th><th style="padding: 8px;">توضیحات</th></tr></thead><tbody><tr><td style="direction: ltr;">ticket</td><td>Integer</td><td>بله</td><td>شناسه تیکت مورد نظر برای دریافت جزئیات و گفتگوها.</td></tr></tbody></table>

</div></div>### نمونه خروجی (Response)

```
{
    "status": true,
    "time": 1732623000,
    "data": {
        "department": {
            "id": 3,
            "type": "send", // 'send' if user is requester, else 'receive'
            "title": {
                "fa": "پشتیبانی فنی",
                "en": "Technical Support"
            }
        },
        "requester": { // آبجکت کامل کاربر درخواست دهنده
            "id": 10,
            "text": "1001 - نام کاربر",
            "query": {
                "id": 10,
                "sex": "male",
                "first_name": "Ali",
                "last_name": "Rezaei",
                "avatar": "...",
                "position": "...",
                "personnel_id": 1001
            }
        },
        "operator": false, // یا آبجکت کامل اپراتور پاسخگو
        "ticket": {
            "status": 1,
            "score": 0
        },
        "notes": [
            {
                "id": 1205,
                "type": "text",
                "operator": { ... }, // نویسنده پیام
                "note": "سلام، لطفا بررسی کنید.", // متن پیام
                "read_by": false, // یا آبجکت کاربری که پیام را خوانده
                "read_on": false, // تاریخ خوانده شدن
                "created_at": "2024-11-26 10:00:00"
            },
            {
                "id": 1206,
                "type": "text", // نوع در دیتابیس attachment است اما در خروجی text ست می‌شود (چون به HTML تبدیل شده)
                "operator": { ... },
                "note": "<a href="https://docs.airplus.app/..." rel="noopener" target="_blank"><img src="https://docs.airplus.app/..."></img></a>", // خروجی HTML
                "read_by": { ... },
                "read_on": "2024-11-26 10:05:00",
                "created_at": "2024-11-26 10:01:00"
            }
        ]
    }
}
```

#### نمونه خطا (عدم دسترسی):

```
{
    "status": false,
    "time": 1732623000,
    "message": "شما اجازه دسترسی به این گفتگو را ندارید"
}
```