UserController.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace App\Http\Controllers\Admin\Popup;
  3. use Illuminate\Http\Request;
  4. use App\Http\Controllers\Controller;
  5. use App\Models\User;
  6. use App\Models\UserGroup;
  7. use App\Models\UserGrade;
  8. use App\Models\DTO\SearchData;
  9. class UserController extends Controller
  10. {
  11. private User $userModel;
  12. private UserGroup $userGroupModel;
  13. private UserGrade $userGradeModel;
  14. public function __construct(
  15. User $user,
  16. UserGroup $userGroup,
  17. UserGrade $userGrade
  18. ) {
  19. $this->userModel = $user;
  20. $this->userGroupModel = $userGroup;
  21. $this->userGradeModel = $userGrade;
  22. }
  23. /**
  24. * AJAX 회원 검색
  25. * @method GET
  26. * @see /admin/popup/user
  27. */
  28. public function index(Request $request)
  29. {
  30. $params = SearchData::fromRequest($request);
  31. $params->activated = $request->get('activated');
  32. $params->isAdmin = $request->get('is_admin');
  33. $params->isDenied = $request->get('is_denied');
  34. $params->isWithdraw = $request->get('is_withdraw');
  35. $params->userGroupID = $request->get('user_group_id', []);
  36. $params->userGradeID = $request->get('user_grade_id', []);
  37. $userData = $this->userModel->data($params);
  38. if ($userData->rows > 0) {
  39. $num = listNum($userData->total, $params->page, $params->perPage);
  40. foreach ($userData->list as $i => $row) {
  41. $row->num = $num--;
  42. $row->point = number_format($row->point);
  43. $userData->list[$i] = $row;
  44. }
  45. }
  46. return view('admin.popup.user.index', [
  47. 'userGroupData' => $this->userGroupModel->all(),
  48. 'userGradeData' => $this->userGradeModel->all(),
  49. 'userData' => $userData,
  50. 'params' => $params
  51. ]);
  52. }
  53. /**
  54. * AJAX 회원그룹 검색
  55. * @method GET
  56. * @see /admin/popup/user/group
  57. */
  58. public function group()
  59. {
  60. $userGroupData = $this->userGroupModel->data();
  61. $userTotalCount = $this->userModel->count(); // 전체 회원 수
  62. if($userGroupData->rows > 0) {
  63. $num = 1;
  64. foreach($userGroupData->list as $i =>$row) {
  65. $row->num = $num++;
  66. $row->userGroupCount = $row->user->count();
  67. $row->strName = ($row->kor_name . ($row->eng_name ? ' (' . $row->eng_name . ')' : ''));
  68. $row->strShare = (($row->userGroupCount > 0) ? round(($row->userGroupCount / $userTotalCount) * 100) : 0);
  69. $userGroupData->list[$i] = $row;
  70. }
  71. }
  72. return view('admin.popup.user.group', [
  73. 'userGroupData' => $userGroupData
  74. ]);
  75. }
  76. }