# POST /v2/comments/{commentId}/{action}

# Like or Dislike a Comment

این اندپوینت برای ثبت لایک یا دیسلایک برای یک نظر مشخص استفاده می‌شود. عملیات مورد نظر (لایک یا دیسلایک) از طریق پارامتر `action` در URL تعیین می‌گردد.   
این متد به صورت اتمیک عمل نمی‌کند، اما شمارنده‌های `likes` و `dislikes` را در مدل `Comment` یک واحد افزایش می‌دهد.

<div class="api-docs" id="bkmrk-">  ---

</div>## Increment Like/Dislike Counter

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Fcomments%2F%7Bc"><div class="endpoint-info"><div>**URL:** `/v2/comments/{commentId}/{action}`</div><div>**Method:** <span class="method-post">POST</span></div><div>**Controller:** CommentController@likeOrDislike</div><div>**Middleware:** `authWithJwt`</div></div></div>### Path Parameters

<div class="api-docs" id="bkmrk-parameter-type-descr"><table class="schema-table" dir="rtl"><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>commentId</td><td>integer</td><td>شناسه منحصر به فرد نظری که لایک یا دیسلایک می‌شود.</td></tr><tr><td>action</td><td>string</td><td>عملیات مورد نظر. این پارامتر باید یکی از دو مقدار زیر باشد: - `like`: برای افزایش شمارنده لایک.
- `dislike`: برای افزایش شمارنده دیسلایک.

</td></tr></tbody></table>

</div>### Request Body

این اندپوینت به هیچ داده‌ای در بدنه درخواست (Request Body) نیاز ندارد.

### Server-Side Logic

<div class="api-docs" id="bkmrk-%D8%A7%D8%A8%D8%AA%D8%AF%D8%A7-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7">- ابتدا سیستم با استفاده از متد `findOrFail`، نظر مربوط به `commentId` را پیدا می‌کند. اگر شناسه نامعتبر باشد، به طور خودکار خطای 404 بازگردانده می‌شود.
- اگر پارامتر `action` برابر با `'like'` باشد، فیلد `likes` یک واحد افزایش می‌یابد.
- اگر پارامتر `action` برابر با `'dislike'` باشد، فیلد `dislikes` یک واحد افزایش می‌یابد.
- در نهایت، تغییرات در دیتابیس ذخیره شده و شمارنده‌های جدید بازگردانده می‌شوند.

</div><div class="api-docs" id="bkmrk-%D8%B1%D9%81%D8%AA%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%B5%D9%88%D8%B1%D8%AA-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-"><div class="api-notice warning" dir="rtl">**رفتار در صورت ارسال `action` نامعتبر:** اگر مقداری غیر از `'like'` یا `'dislike'` برای پارامتر `action` ارسال شود، هیچ خطایی رخ نمی‌دهد و هیچ شمارنده‌ای تغییر نمی‌کند. درخواست با موفقیت پردازش شده و مقادیر فعلی لایک و دیسلایک بازگردانده می‌شود.</div></div>### Success Response

در صورت موفقیت‌آمیز بودن عملیات، سرور یک پاسخ با کد 200 به همراه مقادیر به‌روز شده‌ی شمارنده‌های `likes` و `dislikes` برمی‌گرداند.

```json
{
    "status": true,
    "time": 1715000000,
    "data": {
        "likes": 25,
        "dislikes": 3
    }
}
```

### Error Response

<div class="api-docs" id="bkmrk-%DA%A9%D8%AF-404-%28not-found%29%3A-">- **کد 404 (Not Found):** در صورتی که `commentId` ارسال شده در URL در دیتابیس موجود نباشد.

</div>