#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/updateMethod: 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