'active', ]; // ========================================================================= // 관계 정의 // ========================================================================= /** * 담당자 */ public function assignedUser(): BelongsTo { return $this->belongsTo(User::class, 'assigned_user_id'); } /** * 생성자 */ public function creator(): BelongsTo { return $this->belongsTo(User::class, 'created_by'); } /** * 수정자 */ public function updater(): BelongsTo { return $this->belongsTo(User::class, 'updated_by'); } // ========================================================================= // 암호화/복호화 메서드 // ========================================================================= /** * 카드번호 암호화 설정 */ public function setCardNumber(string $cardNumber): void { $this->card_number_encrypted = Crypt::encryptString($cardNumber); $this->card_number_last4 = substr($cardNumber, -4); } /** * 카드번호 복호화 조회 */ public function getDecryptedCardNumber(): string { return Crypt::decryptString($this->card_number_encrypted); } /** * 카드 비밀번호 암호화 설정 */ public function setCardPassword(?string $password): void { $this->card_password_encrypted = $password ? Crypt::encryptString($password) : null; } /** * 카드 비밀번호 복호화 조회 */ public function getDecryptedCardPassword(): ?string { return $this->card_password_encrypted ? Crypt::decryptString($this->card_password_encrypted) : null; } // ========================================================================= // 헬퍼 메서드 // ========================================================================= /** * 마스킹된 카드번호 조회 */ public function getMaskedCardNumber(): string { return '****-****-****-'.$this->card_number_last4; } /** * 활성 상태 여부 */ public function isActive(): bool { return $this->status === 'active'; } /** * 상태 토글 */ public function toggleStatus(): void { $this->status = $this->status === 'active' ? 'inactive' : 'active'; } }