using MediatR;
using SocialService.Domain.AggregatesModel.UserBlockAggregate;

namespace SocialService.Domain.Events;

/// <summary>
/// EN: Domain event raised when a user blocks another user.
/// VI: Domain event được raise khi user block user khác.
/// </summary>
public class UserBlockedDomainEvent : INotification
{
    public UserBlock Block { get; }
    public DateTime OccurredOn { get; }

    public UserBlockedDomainEvent(UserBlock block)
    {
        Block = block;
        OccurredOn = DateTime.UtcNow;
    }
}

/// <summary>
/// EN: Domain event raised when a user unblocks another user.
/// VI: Domain event được raise khi user unblock user khác.
/// </summary>
public class UserUnblockedDomainEvent : INotification
{
    public Guid BlockerId { get; }
    public Guid BlockedId { get; }
    public DateTime OccurredOn { get; }

    public UserUnblockedDomainEvent(Guid blockerId, Guid blockedId)
    {
        BlockerId = blockerId;
        BlockedId = blockedId;
        OccurredOn = DateTime.UtcNow;
    }
}
