Files
clinicpro/docs/tasks/task-04-blog/task.md
T
hamed de1a78a235 feat: Implement SMS sending functionality with KavehNegar and Rangineh providers
- Add SendSmsMessage class for encapsulating SMS message data.
- Create KavehNegarProvider and RanginehProvider classes implementing SmsProviderInterface for sending SMS.
- Implement SmsLogRepository and SmsTemplateRepository for managing SMS logs and templates.
- Develop SendSmsHandler for handling SMS sending messages.
- Create SmsService to manage SMS dispatching and logging.
- Add UserProfileController for managing user profiles with CRUD operations.
- Implement UserProfile entity and repository for user profile data management.
- Update symfony.lock and bootstrap.php for project dependencies and environment setup.
2026-06-09 22:00:34 +03:30

1.9 KiB

تسک ۰۴: ماژول بلاگ

توضیح

پیاده‌سازی سیستم مدیریت مقالات (بلاگ) شامل ایجاد، ویرایش، حذف، نمایش لیست، بلاگ‌های برتر و آپلود تصویر.

Endpoint ها

متد مسیر توضیح نیاز به Auth
POST /api/v1/blog/ ایجاد بلاگ جدید بله (Admin/Doctor)
PATCH /api/v1/blog/{uuid} ویرایش بلاگ بله (Owner/Admin)
DELETE /api/v1/blog/{uuid} حذف بلاگ بله (Owner/Admin)
GET /api/v1/blog/{uuid} دریافت یک بلاگ خیر
GET /api/v1/blogs لیست بلاگ‌ها (با pagination) خیر
GET /api/v1/blogs/top بلاگ‌های برتر خیر
POST /api/v1/blog/image آپلود تصویر بلاگ بله

پیش‌نیازها

  • تسک ۰۱ و ۰۲

خروجی‌های مورد انتظار

  • CRUD کامل برای بلاگ
  • pagination در لیست
  • آپلود و ذخیره تصویر
  • بلاگ‌های برتر (براساس بازدید یا لایک)
  • slug برای SEO

زمان تخمینی

۶ تا ۸ ساعت

نمونه Request/Response

POST /api/v1/blog/

// Request
{
  "title": "راهنمای کامل دیابت",
  "body": "<p>محتوای مقاله...</p>",
  "summary": "خلاصه مقاله",
  "tags": [1, 2, 3],
  "status": "published",
  "image_uuid": "abc-..."
}

// Response 201
{
  "data": {
    "uuid": "72522a1d-...",
    "title": "راهنمای کامل دیابت",
    "slug": "rahnamai-kamel-diabet",
    "status": "published",
    "created_at": "2024-01-01T00:00:00Z"
  }
}

GET /api/v1/blogs

Query params: page=1&limit=10&category=1&tag=2

GET /api/v1/blogs/top

// Response
{
  "data": [
    { "uuid": "...", "title": "...", "views": 1250, "image": "..." }
  ]
}