using MediatR;
using MktXService.Domain.AggregatesModel.TwitterAccountAggregate;

namespace MktXService.Domain.Events;

/// <summary>
/// EN: Domain event raised when a Twitter account status changes.
/// VI: Domain event được phát ra khi trạng thái tài khoản Twitter thay đổi.
/// </summary>
public class TwitterAccountStatusChangedDomainEvent : INotification
{
    /// <summary>
    /// EN: The account ID.
    /// VI: ID tài khoản.
    /// </summary>
    public Guid AccountId { get; }

    /// <summary>
    /// EN: The previous status.
    /// VI: Trạng thái trước đó.
    /// </summary>
    public TwitterAccountStatus PreviousStatus { get; }

    /// <summary>
    /// EN: The new status.
    /// VI: Trạng thái mới.
    /// </summary>
    public TwitterAccountStatus NewStatus { get; }

    public TwitterAccountStatusChangedDomainEvent(
        Guid accountId,
        TwitterAccountStatus previousStatus,
        TwitterAccountStatus newStatus)
    {
        AccountId = accountId;
        PreviousStatus = previousStatus;
        NewStatus = newStatus;
    }
}
