HomeController.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. /*
  3. * This file is part of the Jiannei/lumen-api-starter.
  4. *
  5. * (c) Jiannei <longjian.huang@foxmail.com>
  6. *
  7. * This source file is subject to the MIT license that is bundled
  8. * with this source code in the file LICENSE.
  9. */
  10. namespace App\Http\Controllers\Admin\Lab;
  11. use App\Http\Controllers\Controller;
  12. use App\Repositories\Enums\Lab\OpenAppointmentStatusEnum;
  13. use App\Repositories\Enums\ModelStatusEnum;
  14. use App\Repositories\Enums\PermissionEnum;
  15. use App\Repositories\Enums\School\LessonScheduleApproveStatusEnum;
  16. use App\Repositories\Enums\School\LessonScheduleStatusEnum;
  17. use App\Repositories\Enums\School\ScheduleTypeEnum;
  18. use App\Repositories\Models\Lab\OpenAppointment;
  19. use App\Repositories\Models\News\Notice;
  20. use App\Repositories\Models\School\LessonSchedule;
  21. use App\Repositories\Models\School\LessonTeacher;
  22. use App\Repositories\Models\School\Room;
  23. use App\Repositories\Models\School\ScheduleApproveRecord;
  24. use App\Repositories\Presenters\News\NoticePresenter;
  25. use Illuminate\Http\Request;
  26. use Jiannei\Response\Laravel\Support\Facades\Response;
  27. class HomeController extends Controller
  28. {
  29. /**
  30. * 首页统计
  31. * @param Request $request
  32. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  33. */
  34. public function index(Request $request)
  35. {
  36. $lesson_total_nums = LessonSchedule::query()->where('term_id', self::$TERM_ID)->where('type', ScheduleTypeEnum::LESSON)->where('status', LessonScheduleStatusEnum::OK)->count();
  37. $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();
  38. $use_ratio = 0;
  39. if ($lesson_total_nums) $use_ratio = (int)($lesson_use_nums / $lesson_total_nums * 100);
  40. $open_nums = LessonSchedule::query()->where('term_id', self::$TERM_ID)->where('type', ScheduleTypeEnum::OPEN_APPOINTMENT)->where('status', LessonScheduleStatusEnum::OK)->count();
  41. $maintain_nums = LessonSchedule::query()->where('term_id', self::$TERM_ID)->where('type', ScheduleTypeEnum::MAINTAIN)->where('status', LessonScheduleStatusEnum::OK)->count();
  42. $teach_lesson_nums = LessonTeacher::query()->where('term_id', self::$TERM_ID)->where('status', ModelStatusEnum::OK)->count();
  43. $room_nums = Room::query()->where('status', ModelStatusEnum::OK)->count();
  44. $change_lesson_nums = ScheduleApproveRecord::query()->where('status', LessonScheduleApproveStatusEnum::COMPLETE)->count();
  45. $admin = login_admin();
  46. // $role_index = 0;
  47. $s_status = $o_status = [];
  48. if ($admin->can(PermissionEnum::controller_schedule_check_SYZX)) {
  49. $s_status[] = LessonScheduleApproveStatusEnum::YX_OK;
  50. $o_status[] = OpenAppointmentStatusEnum::WAIT;
  51. }
  52. if ($admin->can(PermissionEnum::controller_schedule_check_YX)) {
  53. $s_status[] = LessonScheduleApproveStatusEnum::WAIT;
  54. $o_status[] = OpenAppointmentStatusEnum::SYZX_OK;
  55. }
  56. // $role_index = $admin->can(PermissionEnum::controller_schedule_check_SYZX) ? 2 : 0;
  57. // $role_index += $admin->can(PermissionEnum::controller_schedule_check_YX) ? 1 : 0;
  58. $wait_check_schedule_nums = ScheduleApproveRecord::query()->where('term_id', self::$TERM_ID)->whereIn('status', $s_status)->count();
  59. $wait_check_open_nums = OpenAppointment::query()->where('term_id', self::$TERM_ID)->whereIn('status', $o_status)->count();
  60. $notices = Notice::query()->where('status', ModelStatusEnum::OK)->orderByDesc('id')->limit(3)->get();
  61. if ($notices) {
  62. $notices = (new NoticePresenter())->present($notices);
  63. }
  64. 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'));
  65. }
  66. }