H&R + exam user support bulk action

This commit is contained in:
xiaomlove
2022-05-13 03:12:38 +08:00
parent 2f5b643c6e
commit 5110ef6e7d
44 changed files with 285 additions and 31 deletions
+41
View File
@@ -740,6 +740,47 @@ class ExamRepository extends BaseRepository
return $result;
}
public function removeExamUserBulk(array $params, User $user)
{
$result = $this->getExamUserBulkQuery($params)->delete();
do_log(sprintf(
'user: %s bulk delete by filter: %s, result: %s',
$user->id, json_encode($params), json_encode($result)
), 'alert');
return $result;
}
public function avoidExamUserBulk(array $params, User $user): int
{
$query = $this->getExamUserBulkQuery($params)->where('status', ExamUser::STATUS_NORMAL);
$update = [
'status' => ExamUser::STATUS_AVOIDED,
];
$affected = $query->update($update);
do_log(sprintf(
'user: %s bulk avoid by filter: %s, affected: %s',
$user->id, json_encode($params), $affected
), 'alert');
return $affected;
}
private function getExamUserBulkQuery(array $params): Builder
{
$query = ExamUser::query();
$hasWhere = false;
$validFilter = ['uid', 'id', 'exam_id'];
foreach ($validFilter as $item) {
if (!empty($params[$item])) {
$hasWhere = true;
$query->whereIn($item, Arr::wrap($params[$item]));
}
}
if (!$hasWhere) {
throw new \InvalidArgumentException("No filter.");
}
return $query;
}
public function recoverExamUser(int $examUserId)
{
$examUser = ExamUser::query()->where('status',ExamUser::STATUS_AVOIDED)->findOrFail($examUserId);