// EN: Business information value object.
// VI: Value object thông tin doanh nghiệp.

namespace MerchantService.Domain.AggregatesModel.MerchantAggregate;

/// <summary>
/// EN: Value object representing business information for verification.
/// VI: Value object đại diện cho thông tin doanh nghiệp để xác minh.
/// </summary>
public record BusinessInfo
{
    /// <summary>
    /// EN: Tax identification number.
    /// VI: Mã số thuế.
    /// </summary>
    public string? TaxId { get; init; }
    
    /// <summary>
    /// EN: Business license number.
    /// VI: Số giấy phép kinh doanh.
    /// </summary>
    public string? BusinessLicenseNumber { get; init; }
    
    /// <summary>
    /// EN: Company registration number.
    /// VI: Số đăng ký công ty.
    /// </summary>
    public string? CompanyRegistrationNumber { get; init; }
    
    /// <summary>
    /// EN: Date when the business was established.
    /// VI: Ngày thành lập doanh nghiệp.
    /// </summary>
    public DateTime? EstablishedDate { get; init; }
    
    /// <summary>
    /// EN: Creates empty business info.
    /// VI: Tạo thông tin doanh nghiệp rỗng.
    /// </summary>
    public static BusinessInfo Empty => new();
    
    /// <summary>
    /// EN: Check if business info is complete for verification.
    /// VI: Kiểm tra thông tin doanh nghiệp đã đủ để xác minh chưa.
    /// </summary>
    public bool IsCompleteForVerification =>
        !string.IsNullOrWhiteSpace(TaxId) &&
        !string.IsNullOrWhiteSpace(BusinessLicenseNumber);
}
