DiyanetCleanArchitecture.Domain— aggregate’ler, domain event’ler, factory ve domain service’ler.DiyanetCleanArchitecture.Domain.SharedKernel— DDD yapı taşları (Entity,ValueObject,Enumeration,DomainEvent), guard yardımcıları ve paylaşılan value object’ler.
Bağımlılık yönü tek taraflıdır:
Domain yalnızca SharedKernel’e bağımlıdır. SharedKernel ise sadece MediatR (INotification için) ve Ardalis.Specification (repository arayüzleri için) gibi minimal paketlere dayanır. Domain, Application/Infrastructure’a asla bağımlı değildir.DDD yapı taşları
Entity
Kimliği (
Id) olan, yaşam döngüsü boyunca takip edilen nesneler. Entity : EntityBase<Guid>.Value Object
Kimliği olmayan, değerine göre eşitlenen, değişmez (immutable) nesneler.
FullName, Email, Phone.Aggregate Root
Tutarlılık sınırı. Dışarıdan yalnızca root üzerinden erişilir.
IAggregateRoot marker arayüzü ile işaretlenir.Domain Event
Aggregate içinde olup biteni anlatan olaylar.
DomainEvent + INotification. AddDomainEvent ile yayılır.Enumeration
Tip-güvenli, davranış taşıyabilen sabit küme (enum yerine).
UserStatus, Role, OtpType.Factory / Domain Service
Karmaşık oluşturma ve tek aggregate’e sığmayan iş kuralları.
IUserFactory, UserRegistrationService.Klasör yapısı
Aggregate listesi
| Aggregate | Root türü | Kısa açıklama |
|---|---|---|
User | Entity, IAggregateRoot | Personel (back-office) kullanıcısı. OTP, TOTP, oturum, rol, dış IdP. |
Citizen | Entity, IAggregateRoot | Vatandaş portal kullanıcısı. User’a paralel ayrı aggregate. |
Organization | Entity, IAggregateRoot | Kurum/tenant. Çocuklar: Branch, StaffMember, StaffPermission. |
RolePermission | Entity, IAggregateRoot | Rol–izin eşlemesi (RBAC). |
Announcement | Entity, IAggregateRoot | Duyuru. Kapak görseli (AnnouncementImageInfo). |
BagisBasvuru | Entity, IAggregateRoot | Bağış başvurusu. State machine + status history. |
BagisBasvuruPlan | Entity, IAggregateRoot | Bağış planı (başvuru şablonu). |
EtkinlikBasvuru | Entity, IAggregateRoot | Etkinlik başvurusu. State machine + kontenjan. |
EtkinlikBasvuruPlan | Entity, IAggregateRoot | Etkinlik planı. |
SupportTicket | Entity, IAggregateRoot | Destek talebi. Yorum, ek, durum geçmişi. |
AdminNotification | Entity, IAggregateRoot | Admin bildirimi (SSE yayını). |
LegalDocument | Entity, IAggregateRoot | Yasal metin + versiyon (LegalDocumentVersion). |
Faq | Entity, IAggregateRoot | Sık sorulan soru. |
Center | Entity, IAggregateRoot | Merkez/şube lokasyonu. |
SiteSettings | Entity, IAggregateRoot | Site geneli ayarlar (tekil). |
District | EntityBase<int>, IAggregateRoot | İlçe — sabit reference data (seed). |
District, Guid yerine int kimlik kullanan tek aggregate’tir (EntityBase<int>). Sabit reference data olduğu için audit alanları boş kalır.Sonraki adımlar
SharedKernel
EntityBase, ValueObject, Enumeration, DomainEvent ve guard altyapısı.Aggregate'ler
User aggregate’i derinlemesine + tüm aggregate’lerin özeti.Value Object'ler
Değişmezlik, ctor validasyonu ve hazır VO kataloğu.
Domain Event'ler
Olay yayma, MediatR dispatch ve domain vs integration event ayrımı.