123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- /*
- * This file is part of the Jiannei/lumen-api-starter.
- *
- * (c) Jiannei <longjian.huang@foxmail.com>
- *
- * 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'));
- }
- }
|