You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.7 KiB
55 lines
1.7 KiB
<?php
|
|
|
|
namespace App\Services;
|
|
|
|
use App\Models\Exercise;
|
|
|
|
class ExerciseService
|
|
{
|
|
|
|
public function getExercises($params)
|
|
{
|
|
$limit = isset($params['limit']) ? min((int)$params['limit'], 100) : 10;
|
|
$offset = isset($params['offset']) ? max((int)$params['offset'], 0) : 0;
|
|
$lessonName = $params['search'] ?? null;
|
|
|
|
$query = Exercise::select('id', 'lesson_name', 'description', 'status', 'level', 'year', 'created_at');
|
|
|
|
if (!empty($lessonName)) {
|
|
$query->where('lesson_name', 'like', '%' . $lessonName . '%');
|
|
}
|
|
|
|
// Lấy dữ liệu chính
|
|
$data = $query->orderByDesc('created_at')
|
|
->skip($offset)
|
|
->take($limit)
|
|
->get()
|
|
->map(function ($item) {
|
|
$item->level = match ((int)$item->level) {
|
|
0 => 'easy',
|
|
1 => 'normal',
|
|
2 => 'hard',
|
|
default => 'unknown',
|
|
};
|
|
return $item;
|
|
});
|
|
|
|
return $data;
|
|
}
|
|
public function createExercise($dataExercise)
|
|
{
|
|
$dataCreateExercise = [
|
|
'lesson_name' => $dataExercise['name'] ?? null,
|
|
'description' => $dataExercise['description'] ?? null,
|
|
'subject_id' => $dataExercise['subject_id'] ?? null,
|
|
'level' => $dataExercise['level'] ?? null,
|
|
'status' => $dataExercise['status'] ?? null,
|
|
'category_id' => $dataExercise['category_id'] ?? null,
|
|
'year' => $dataExercise['year'] ?? null,
|
|
];
|
|
|
|
$exercise = Exercise::create($dataCreateExercise);
|
|
|
|
return $exercise->id;
|
|
}
|
|
}
|
|
|