Proje: Okul Platform · Hub: Okul Platform — Conventions

HasDelimiterSeparatedRelations

app/Models/Relations/Seperated/ — Virgülle ayrılmış değerleri ilişki gibi yüklemek için.

Kullanım: SchoolFeatureName modelinde.

$this->getDelimiterSeparatedModels(RelatedModel::class, 'column_name', ',')
$this->delimiterSeparatedRelation(...)

SchoolFeatureName Sistemi

Okul özellik adları dinamik yapı:

  • SchoolFeatureName — Özellik tanımı (type: general/highlight, icon, input_type, value_type, validation_rule)
  • SchoolFeature — Okul + özellik adı + değer kombinasyonu
  • SchoolFeatureValue — Olası değerler

Pivot alanlar: school_feature_name_id, school_feature_value_id, value

Audit Modeli

app/Models/Audit.php — Custom audit log (Revisionable’dan farklı).

  • table_name, action, row_id — Neyin değiştiği
  • old_value, new_value — Değişiklik detayları
  • approve_status, approved_by, approved_at — Onay akışı
  • is_customer — B2B kullanıcısı mı yaptı
  • ip — IP adresi

SchoolFranchise

app/Models/SchoolFranchise.php — Okul franchise yönetimi.

SchoolBadge

app/Models/SchoolBadge.php — Okul rozetleri.

SchoolReferral

app/Models/SchoolReferral.php + SchoolReferralObserver — Okul referans sistemi.

UserDetail / AdminUserData

  • UserDetail — Kullanıcı profil detayları
  • AdminUserData — Admin kullanıcı ek verisi

UserFavorite

app/Models/UserFavorite.php — B2C kullanıcıların favori okulları.

UserLog

app/Models/UserLog.php — Kullanıcı eylem logları.

Award / AwardType

app/Models/Award.php + AwardType — Okul ödülleri.

CheckoutStatusType vs CheckoutStatus

İki farklı enum var:

  • App\Enums\CheckoutStatus — draft/completed/sent/cancelled (primary)
  • App\Enums\CheckoutStatusType — Muhtemelen eski/farklı kullanım

NotProvided Type

App\DTO\CustomTypes\NotProvided — DTO’larda “bu alan gönderilmedi” ile “null gönderildi” farkını ifade etmek için special type.