Proje: Okul Platform · Hub: Okul Platform — Architecture

ShouldDispatchAfterCommit Interface

LeadUpdatedEventimplements ShouldDispatchAfterCommit

Bu interface Laravel’de bir event’in veritabanı transaction commit olduktan sonra dispatch edilmesini sağlar.

class LeadUpdatedEvent implements ShouldDispatchAfterCommit
{
    public function __construct(
        public Lead $lead,
        public array $oldData = [],
    ) {}
}

Neden Önemli?

CIO (CustomerIO) entegrasyonunda Lead güncellemesi CRM’e gönderilirken, önce DB’nin commit olması gerekiyor. Aksi halde Lead verisi tutarsız gönderilebilir.

Akış

Lead güncelle → DB transaction commit → LeadUpdatedEvent dispatch
                                            ↓
                                    LeadUpdateListener
                                            ↓
                                    B2BEventService::handleLeadUpdated()
                                            ↓
                                    CIO B2B Track API

oldData array’i: Değişiklik öncesi lead verisi — CIO’ya “önceki durum” vs “yeni durum” göndermek için.