namespace MiningService.Domain.Exceptions;

/// <summary>
/// EN: Base exception for mining domain errors.
/// VI: Exception cơ sở cho lỗi domain mining.
/// </summary>
public class MiningDomainException : Exception
{
    public MiningDomainException() { }

    public MiningDomainException(string message) : base(message) { }

    public MiningDomainException(string message, Exception innerException) 
        : base(message, innerException) { }
}

/// <summary>
/// EN: Exception when miner is not found.
/// VI: Exception khi không tìm thấy thợ đào.
/// </summary>
public class MinerNotFoundException : MiningDomainException
{
    public MinerNotFoundException(Guid minerId) 
        : base($"Miner with ID {minerId} was not found") { }

    public MinerNotFoundException(string message) : base(message) { }
}

/// <summary>
/// EN: Exception when circle operation fails.
/// VI: Exception khi thao tác vòng tròn thất bại.
/// </summary>
public class CircleDomainException : MiningDomainException
{
    public CircleDomainException(string message) : base(message) { }
}

/// <summary>
/// EN: Exception when referral operation fails.
/// VI: Exception khi thao tác giới thiệu thất bại.
/// </summary>
public class ReferralDomainException : MiningDomainException
{
    public ReferralDomainException(string message) : base(message) { }
}
