123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- <?php
- namespace App\Repositories\Criteria\School;
- use App\Repositories\Enums\ModelStatusEnum;
- use App\Repositories\Enums\PermissionEnum;
- use App\Repositories\Enums\School\ScheduleTypeEnum;
- use Illuminate\Http\Request;
- use Prettus\Repository\Contracts\CriteriaInterface;
- use Prettus\Repository\Contracts\RepositoryInterface;
- /**
- * Class LessonScheduleCriteria.
- *
- * @package namespace App\Repositories\Criteria\School;
- */
- class LessonScheduleCriteria implements CriteriaInterface
- {
- private $request;
- public function __construct(Request $request = null)
- {
- if (is_null($request)) {
- $this->request = \request();
- } else {
- $this->request = $request;
- }
- }
- /**
- * Apply criteria in query repository
- *
- * @param string $model
- * @param RepositoryInterface $repository
- *
- * @return mixed
- */
- public function apply($model, RepositoryInterface $repository)
- {
- if ($this->request->filled('teach_title')) {
- $teach_title = $this->request->get('teach_title');
- $model = $model->where('teach_title', 'like', "%{$teach_title}%");
- }
- if ($this->request->filled('term_id')) {
- $term_id = $this->request->get('term_id');
- $model = $model->where('term_id', '=', $term_id);
- }
- if ($this->request->filled('lesson_teacher_id')) {
- $lesson_teacher_id = $this->request->get('lesson_teacher_id');
- $model = $model->where('lesson_teacher_id', '=', $lesson_teacher_id);
- }
- if ($this->request->filled('week')) {
- $week = $this->request->get('week');
- $model = $model->where('week', '=', $week);
- }
- if ($this->request->filled('time_id')) {
- $time_id = $this->request->get('time_id');
- $model = $model->where('time_id', '=', $time_id);
- }
- if ($this->request->filled('day')) {
- $day = $this->request->get('day');
- $model = $model->where('day', '=', $day);
- }
- if ($this->request->filled('week_index')) {
- $week_index = $this->request->get('week_index');
- $model = $model->where('week_index', '=', $week_index);
- }
- if ($this->request->filled('lesson_id')) {
- $lesson_id = $this->request->get('lesson_id');
- $model = $model->where('lesson_id', '=', $lesson_id);
- }
- if ($this->request->filled('lesson_name')) {
- $lesson_name = $this->request->get('lesson_name');
- $model = $model->whereHas('lesson', function ($query) use ($lesson_name) {
- return $query->where('name', 'like', "%{$lesson_name}%");
- });
- }
- if ($this->request->filled('grade_id')) {
- $grade_id = $this->request->get('grade_id');
- $model = $model->where('grade_id', '=', $grade_id);
- }
- if ($this->request->filled('grade_name')) {
- $grade_name = $this->request->get('grade_name');
- $model = $model->whereHas('grade', function ($query) use ($grade_name) {
- return $query->where('name', 'like', "%{$grade_name}%");
- });
- }
- if ($this->request->filled('room_id')) {
- $room_id = $this->request->get('room_id');
- $model = $model->where('room_id', '=', $room_id);
- }
- if ($this->request->filled('teacher_id')) {
- $teacher_id = $this->request->get('teacher_id');
- $model = $model->where('teacher_id', '=', $teacher_id);
- }
- if ($this->request->filled('teacher_name')) {
- $teacher_name = $this->request->get('teacher_name');
- $model = $model->whereHas('teacher', function ($query) use ($teacher_name) {
- return $query->where('name', 'like', "%{$teacher_name}%");
- });
- }
- if ($this->request->filled('status')) {
- $status = $this->request->get('status');
- if ($status == 4) {
- $model = $model->where('status', '=', ModelStatusEnum::OK)->where('migrate_id', '>', 0);
- } else {
- $model = $model->where('status', '=', $status);
- }
- }
- $model = $model->where('term_id', $this->request->header('term-id'));
- $model = $model->orderByDesc('day')->where('type', ScheduleTypeEnum::LESSON);
- //权限控制
- $admin = login_admin();
- $source = getControllerAndFunction();
- $controller = $source['controller'];
- $method = $source['method'];
- if (!$admin->can(PermissionEnum::model_schedule_all) && !in_array($method, ['show'])) {
- //教师
- if ($admin->can(PermissionEnum::model_schedule_me)) {
- $model = $model->where('teacher_admin_id', $admin['id']);
- }
- }
- return $model;
- }
- }
|