領収証発行サービス
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.7KB

  1. <?php
  2. namespace App\Http\Controllers\Web\LoginUser;
  3. use App\Codes\UserRole;
  4. use App\Exceptions\AppCommonException;
  5. use App\Features\LoginUser;
  6. use App\Http\Controllers\Web\IParam;
  7. use App\Http\Controllers\Web\WebController;
  8. use App\Repositories\LoginUserRepository;
  9. use Illuminate\Http\JsonResponse;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Support\Arr;
  12. class LoginUsersController extends WebController
  13. {
  14. use LoginUser;
  15. public function name(): string
  16. {
  17. return "ログインユーザー一覧取得";
  18. }
  19. public function description(): string
  20. {
  21. return "ログインユーザー一覧を取得する";
  22. }
  23. public function __construct(
  24. protected LoginUsersParam $param,
  25. private LoginUserRepository $repository
  26. ) {
  27. parent::__construct();
  28. $this->roleAllow(UserRole::NORMAL_ADMIN);
  29. }
  30. protected function getParam(): IParam
  31. {
  32. return $this->param;
  33. }
  34. protected function run(Request $request): JsonResponse
  35. {
  36. $param = $this->param;
  37. $role = $this->loginUser()->user()->role;
  38. $currentContractId = $this->loginUser()->getCurrentContractId();
  39. if (!$currentContractId && $role !== UserRole::SUPER_ADMIN) {
  40. throw new AppCommonException("認証不正");
  41. }
  42. $condition = [
  43. ...$param->toArray(),
  44. LoginUserRepository::CONDITION_CONTRACT_ID => $currentContractId,
  45. ];
  46. if ($role === UserRole::NORMAL_ADMIN) {
  47. Arr::add($condition, LoginUserRepository::CONDITION_ID, $this->loginUser()->user()->id);
  48. }
  49. $list = $this->repository->get($condition);
  50. return $this->successResponse([
  51. 'records' => $list
  52. ]);
  53. }
  54. }