Proje: Okul Platform · Hub: Okul Platform — Domain
UserContact Nedir?
Kullanıcıların iletişim bilgileri (e-posta, telefon). Her kullanıcının birden fazla iletişim bilgisi olabilir.
İletişim Tipleri
CONTACT_TYPE_EMAIL_KEY = 'email'
CONTACT_TYPE_PHONE_KEY = 'phone'Önemli Alanlar
user_id→ Usertype— email veya phonevalue— İletişim değeri (normalize edilmiş)is_primary— Birincil iletişim bilgisi miunsubscribed— E-posta aboneliğinden çıktı mıis_verified— Doğrulandı mıis_email_bounced— E-posta bounce oldu muis_valid— Geçerli mi
Özel Scope’lar
UserContact::query()->forPhone('05362238422') // Telefona göre filtrele
UserContact::query()->forEmail('test@test.com') // E-postaya göre filtreleforPhone → getPhoneNakedWithDigit_11() ile normalize eder.
OTP Login Bağlantısı
OTP login: value alanı hem telefon hem de e-posta olabilir.
Duplicate contact check (aynı telefon/e-posta birden fazla hesapta olursa hata):
- Telefon duplicate → E-posta ile giriş öner
- E-posta duplicate → Telefon ile giriş öner
B2C Kullanım
User::contactsilişkisi üzerinden erişilir- CIO’ya gönderilirken:
$user->contacts->firstWhere('type', 'phone')ile telefon alınır
B2B CustomerUser İletişim
B2B kullanıcılar da UserContact kullanır.
createUserWithCustomerSchool() test helper’ı UserContact::factory() ile telefon oluşturur.
Related
- api-domain-model — User modeli
- api-auth-system — OTP ile iletişim bilgisi doğrulama