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

<?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;
}
}