* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace App\Http\Controllers\Admin\Lab; use App\Http\Controllers\Controller; use App\Repositories\Enums\Lab\OpenAppointmentStatusEnum; use App\Repositories\Enums\ModelStatusEnum; use App\Repositories\Enums\PermissionEnum; use App\Repositories\Enums\School\LessonScheduleApproveStatusEnum; use App\Repositories\Enums\School\LessonScheduleStatusEnum; use App\Repositories\Enums\School\ScheduleTypeEnum; use App\Repositories\Models\Lab\OpenAppointment; use App\Repositories\Models\News\Notice; use App\Repositories\Models\School\LessonSchedule; use App\Repositories\Models\School\LessonTeacher; use App\Repositories\Models\School\Room; use App\Repositories\Models\School\ScheduleApproveRecord; use App\Repositories\Presenters\News\NoticePresenter; use Illuminate\Http\Request; use Jiannei\Response\Laravel\Support\Facades\Response; class HomeController extends Controller { /** * 首页统计 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource */ public function index(Request $request) { $lesson_total_nums = LessonSchedule::query()->where('term_id', self::$TERM_ID)->where('type', ScheduleTypeEnum::LESSON)->where('status', LessonScheduleStatusEnum::OK)->count(); $lesson_use_nums = LessonSchedule::query()->where('term_id', self::$TERM_ID)->whereDate('day', '<', date('Y-m-d'))->where('type', ScheduleTypeEnum::LESSON)->where('status', LessonScheduleStatusEnum::OK)->count(); $use_ratio = 0; if ($lesson_total_nums) $use_ratio = (int)($lesson_use_nums / $lesson_total_nums * 100); $open_nums = LessonSchedule::query()->where('term_id', self::$TERM_ID)->where('type', ScheduleTypeEnum::OPEN_APPOINTMENT)->where('status', LessonScheduleStatusEnum::OK)->count(); $maintain_nums = LessonSchedule::query()->where('term_id', self::$TERM_ID)->where('type', ScheduleTypeEnum::MAINTAIN)->where('status', LessonScheduleStatusEnum::OK)->count(); $teach_lesson_nums = LessonTeacher::query()->where('term_id', self::$TERM_ID)->where('status', ModelStatusEnum::OK)->count(); $room_nums = Room::query()->where('status', ModelStatusEnum::OK)->count(); $change_lesson_nums = ScheduleApproveRecord::query()->where('status', LessonScheduleApproveStatusEnum::COMPLETE)->count(); $admin = login_admin(); // $role_index = 0; $s_status = $o_status = []; if ($admin->can(PermissionEnum::controller_schedule_check_SYZX)) { $s_status[] = LessonScheduleApproveStatusEnum::YX_OK; $o_status[] = OpenAppointmentStatusEnum::WAIT; } if ($admin->can(PermissionEnum::controller_schedule_check_YX)) { $s_status[] = LessonScheduleApproveStatusEnum::WAIT; $o_status[] = OpenAppointmentStatusEnum::SYZX_OK; } // $role_index = $admin->can(PermissionEnum::controller_schedule_check_SYZX) ? 2 : 0; // $role_index += $admin->can(PermissionEnum::controller_schedule_check_YX) ? 1 : 0; $wait_check_schedule_nums = ScheduleApproveRecord::query()->where('term_id', self::$TERM_ID)->whereIn('status', $s_status)->count(); $wait_check_open_nums = OpenAppointment::query()->where('term_id', self::$TERM_ID)->whereIn('status', $o_status)->count(); $notices = Notice::query()->where('status', ModelStatusEnum::OK)->orderByDesc('id')->limit(3)->get(); if ($notices) { $notices = (new NoticePresenter())->present($notices); } return Response::success(compact('notices', 'lesson_total_nums', 'lesson_use_nums', 'use_ratio', 'open_nums', 'maintain_nums', 'teach_lesson_nums', 'room_nums', 'change_lesson_nums', 'wait_check_schedule_nums', 'wait_check_open_nums')); } }