Skip to content

Commit 6022ac8

Browse files
authored
Merge pull request #8 from yazilimacademy/Application
[Feature]: ✨ Update EntityBase and ICreatedByEntity to support nullable CreatedByUserId and add domain event management functionality
2 parents 29630f8 + 2d6b1ee commit 6022ac8

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

src/YazilimAcademy.Domain/Common/EntityBase.cs

+10-1
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,19 @@ namespace YazilimAcademy.Domain.Common;
33
public abstract class EntityBase : ICreatedByEntity, IModifiedByEntity, IIsActive
44
{
55
public virtual Guid Id { get; set; }
6-
public virtual string CreatedByUserId { get; set; }
6+
public virtual string? CreatedByUserId { get; set; }
77
public virtual DateTimeOffset CreatedAt { get; set; }
88
public virtual string? ModifiedByUserId { get; set; }
99
public virtual DateTimeOffset? ModifiedAt { get; set; }
1010
public virtual bool IsActive { get; set; }
11+
12+
private readonly List<IDomainEvent> _domainEvents = [];
13+
14+
public IReadOnlyCollection<IDomainEvent> DomainEvents => _domainEvents.AsReadOnly();
15+
16+
protected void AddDomainEvent(IDomainEvent domainEvent) => _domainEvents.Add(domainEvent);
17+
protected void RemoveDomainEvent(IDomainEvent domainEvent) => _domainEvents.Remove(domainEvent);
18+
19+
public void ClearDomainEvents() => _domainEvents.Clear();
1120
}
1221

src/YazilimAcademy.Domain/Common/ICreatedByEntity.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ namespace YazilimAcademy.Domain.Common;
44

55
public interface ICreatedByEntity
66
{
7-
public string CreatedByUserId { get; set; }
7+
public string? CreatedByUserId { get; set; }
88
public DateTimeOffset CreatedAt { get; set; }
99
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
using MediatR;
2+
3+
namespace YazilimAcademy.Domain.Common;
4+
5+
public interface IDomainEvent : INotification
6+
{
7+
8+
}

0 commit comments

Comments
 (0)