Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

69 lines
1.5KB

  1. <?php
  2. namespace App\Logics\LoginUser;
  3. use App\Codes\UserRole;
  4. use App\Exceptions\ParamException;
  5. use App\Models\Htpms\MstCustomer;
  6. use App\Models\HtpmsCustomer\Mst\Shop;
  7. use App\Models\User;
  8. class LoginUserLogic
  9. {
  10. private User|null $user = null;
  11. public function createCustomerUser(User $user)
  12. {
  13. $this->user = $user;
  14. $user->role = UserRole::CUSTOMER;
  15. // チェック処理
  16. $this->checkEmailForCreate();
  17. $this->checkCustomerCode();
  18. $user->save();
  19. }
  20. public function createShopUser(Shop $shop, User $user)
  21. {
  22. $this->user = $user;
  23. $user->role = UserRole::SHOP;
  24. $user->shop_id = $shop->id;
  25. $user->shop_name = $shop->name;
  26. // チェック処理
  27. $this->checkEmailForCreate();
  28. $this->checkCustomerCode();
  29. $user->save();
  30. }
  31. public function delete(User $user)
  32. {
  33. $user->delete();
  34. }
  35. private function checkEmailForCreate()
  36. {
  37. if (User::whereEmail($this->user->email)
  38. ->exists()
  39. ) {
  40. ParamException::throw(User::COL_NAME_EMAIL, trans('validation.unique'));
  41. }
  42. }
  43. private function checkCustomerCode()
  44. {
  45. $customer = MstCustomer::whereCustomerId($this->user->customer_code)
  46. ->first();
  47. if ($customer === null) {
  48. ParamException::throw(User::COL_NAME_CUSTOMER_CODE, trans('validation.exists'));
  49. return;
  50. }
  51. $this->user->customer_id = $customer->id;
  52. }
  53. }