Skip to main content
#P1695

POST /v2/academy/course/steps/update

Academy: Update / Store / Delete Course Steps

این اندپوینت سه عملیات روی مراحل دوره (Course Steps) انجام می‌دهد: ایجاد (store)، ویرایش (update) و حذف (delete). نوع عملیات از طریق پارامتر action مشخص می‌شود. همه عملیات‌ها روی جدول academy_course_steps انجام می‌شود و در صورت خطا، پاسخ استاندارد شامل پیام خطا بازگردانده می‌شود.

URL: /v2/academy/course/steps/update
Method: POST
Controller: AcademyController@updateStepsCourse
Middleware: authWithJwt
Auth: JWT Required

Body Parameters

Field Type Required Description
action string yes مشخص‌کننده عملیات. یکی از مقادیر: update، store، delete.
data.course integer yes (store/update) شناسه دوره
data.step_id integer yes (update/delete) شناسه مرحله
data.title_fa string yes (store/update) عنوان فارسی مرحله
data.title_en string | null no اگر رشته خالی ارسال شود → مقدار null ذخیره می‌شود (دقیقاً مطابق کد).
data.subtitle_fa string yes زیرعنوان فارسی
data.subtitle_en string | null no اگر رشته خالی باشد تبدیل به null می‌شود.
data.content string yes محتوای مرحله (HTML یا Markdown)
data.order integer yes ترتیب مرحله در دوره

Controller Logic

action = $request->get('action');
data = $request->data;

try {

  // ---------- UPDATE ----------
  if (action == 'update') {
      update academy_course_steps where id = data['step_id']
      set:
        course = data['course']
        title_fa = data['title_fa']
        title_en = data['title_en'] == '' ? null : data['title_en']
        subtitle_fa = data['subtitle_fa']
        subtitle_en = data['subtitle_en'] == '' ? null : data['subtitle_en']
        content = data['content']
        order = data['order']
        updated_at = now()

      return status=true, time

  // ---------- STORE ----------
  } else if (action == 'store') {
      insert into academy_course_steps:
        course = data['course']
        title_fa = data['title_fa']
        title_en = data['title_en'] == '' ? null : data['title_en']
        subtitle_fa = data['subtitle_fa']
        subtitle_en = data['subtitle_en'] == '' ? null : data['subtitle_en']
        content = data['content']
        order = data['order']
        created_at = now()
        updated_at = now()

      return status=true, time

  // ---------- DELETE ----------
  } else if (action == 'delete') {
      delete from academy_course_steps where id = data['step_id']
      return status=true, time
  }

} catch (Exception $e) {
    return status=false, time, message=$e->getMessage();
}
  

Important Notes

  • هر سه عملیات خروجی یکسان دارند: {"status": true, "time": ...}
  • رشته‌های خالی "" در فیلدهای title_en و subtitle_en به null تبدیل می‌شوند.
  • عملیات حذف، Soft Delete نیست — رکورد کاملاً حذف می‌شود.
  • در صورت بروز Exception، پیام خطا همان مقدار واقعی Exception بازگردانی می‌شود.

Example Requests

1. Update Step

POST /v2/academy/course/steps/update
{
  "action": "update",
  "data": {
    "step_id": 12,
    "course": 4,
    "title_fa": "ویرایش شده",
    "title_en": "",
    "subtitle_fa": "ساب جدید",
    "subtitle_en": "",
    "content": "

New HTML

",
    "order": 3
  }
}
  

2. Store New Step

POST /v2/academy/course/steps/update
{
  "action": "store",
  "data": {
    "course": 4,
    "title_fa": "مرحله جدید",
    "title_en": "New Step",
    "subtitle_fa": "ساب",
    "subtitle_en": "",
    "content": "

Hello

",
    "order": 5
  }
}
  

3. Delete Step

POST /v2/academy/course/steps/update
{
  "action": "delete",
  "data": {
    "step_id": 12
  }
}
  

Flowchart

Validate JWT
Read action (update / store / delete)
Run respective DB query
Return status=true | handle exception