領収証発行サービス
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

92 rindas
2.2KB

  1. <?php
  2. namespace App\Models;
  3. use App\Codes\UserRole;
  4. use App\Events\Model\CreatedEvent;
  5. use App\Events\Model\DeletedEvent;
  6. use App\Events\Model\UpdatingEvent;
  7. use App\Models\Feature\ContractFeature;
  8. use App\Models\Feature\IModelFeature;
  9. use Illuminate\Database\Eloquent\Concerns\HasUuids;
  10. use Illuminate\Database\Eloquent\Factories\HasFactory;
  11. use Illuminate\Database\Query\Builder;
  12. use Illuminate\Foundation\Auth\User as Authenticatable;
  13. use Illuminate\Notifications\Notifiable;
  14. use Illuminate\Support\Facades\DB;
  15. use Laravel\Sanctum\HasApiTokens;
  16. class User extends Authenticatable implements IModelFeature
  17. {
  18. use HasApiTokens, HasFactory, Notifiable, HasUuids, ContractFeature;
  19. const COL_NAME_ID = 'id';
  20. const COL_NAME_ROLE = 'role';
  21. const COL_NAME_EMAIL = 'email';
  22. const COL_NAME_NAME = 'name';
  23. /**
  24. * The attributes that should be hidden for serialization.
  25. *
  26. * @var array<int, string>
  27. */
  28. protected $hidden = [
  29. 'password',
  30. ];
  31. protected $casts = [
  32. self::COL_NAME_ROLE => UserRole::class,
  33. ];
  34. protected $dispatchesEvents = [
  35. 'created' => CreatedEvent::class,
  36. 'updating' => UpdatingEvent::class,
  37. 'deleted' => DeletedEvent::class,
  38. ];
  39. public static function getBuilder(string $name = 'main'): Builder
  40. {
  41. return DB::table(static::getTableName(), $name);
  42. }
  43. public static function getTableName(): string
  44. {
  45. return (new static)->getTable();
  46. }
  47. public function copy(IModelFeature $from): static
  48. {
  49. $data = $from->getAttributeKeys();
  50. foreach ($data as $key) {
  51. $this->$key = $from->$key;
  52. }
  53. return $this;
  54. }
  55. public function getAttributeKeys(): array
  56. {
  57. return array_values(array_unique(array_merge(array_keys($this->attributesToArray()), $this->hidden)));
  58. }
  59. public function isNotSavedModel(): bool
  60. {
  61. return data_get($this, ColumnName::ID) === null;
  62. }
  63. public function getHistory(): ?HistoryModel
  64. {
  65. return new UserHistory();
  66. }
  67. public function getModelName(): string
  68. {
  69. return "ユーザー情報";
  70. }
  71. public function getChangeLogMessage($before, $after): ?string
  72. {
  73. return null;
  74. }
  75. }