Proje: Okul Platform · Hub: Okul Platform — Domain

Genel Ayrım

B2CB2B
Kim?Veli / öğrenciOkul sahibi firma
ModelUser (user_group_type=user)CustomerUser + Customer
AuthSanctum tokenSanctum token (ayrı)
Route prefix/api/ general/api/customer/
CustomerIOB2CServiceB2BService
OneSignalVeliye bildirimOkula bildirim
Lead almakForm gönderirLead görüntüler

B2C (Veliler/Öğrenciler)

User modeli:

  • user_group_type = 'user'
  • user_type_id → UserType (veli/öğrenci/stajyer vs.)
  • Favori okul kaydedebilir (UserFavorite)
  • Okul yorum yapabilir (SchoolComment)
  • Makale yorum yapabilir (ArticleComment)
  • Lead formu gönderebilir

CustomerIO B2CService:

  • importUser() — Kullanıcıyı CIO’ya gönder
  • batchImportUsers() — Toplu gönder
  • dispatchDeleteUser() — Siler

B2B (Okul Sahipleri/Müşteriler)

Customer modeli: Firma bilgileri (fatura, adres, sözleşme)

CustomerUser modeli: Firma adına paneli kullanan kişiler

  • Bir Customer’ın birden fazla CustomerUser’ı olabilir
  • Her CustomerUser birden fazla okula erişebilir (CustomerUserSchool)

CustomerUserSchool pivot: Her kullanıcı-okul kombinasyonunda:

  • has_lead_access — Lead’leri görebilir mi
  • can_receive_leads_sms — Lead gelince SMS alır mı
  • can_receive_leads_mail — Lead gelince mail alır mı

CustomerIO B2BService:

  • importSchool() — Okulu CIO’ya gönder (object olarak)
  • importSchool(school, importUsers: true) — Okul + kullanıcıları toplu
  • B2B tarafında CIO “object” kullanıyor (school = object, kullanıcı = person + relationship)

Lead Bildirimi Akışı (B2B)

  1. Veli form gönderir → Lead oluşur
  2. School::leadNotificationUsers() ilişkisi üzerinden has_lead_access=true kullanıcılar bulunur
  3. School::notifyEmails() / notifyGsmNumbers() — SchoolContact’tan bildirim adresleri
  4. Bildirim gönderilir (SMS + mail)