namespace Grand.Domain.Vendors;

/// <summary>
///     Represents a vendor review
/// </summary>
public class VendorReview : BaseEntity
{
    private ICollection<VendorReviewHelpfulness> _vendorReviewHelpfulnessEntries;

    /// <summary>
    ///     Gets or sets the customer identifier
    /// </summary>
    public string CustomerId { get; set; }

    /// <summary>
    ///     Gets or sets the vendor identifier
    /// </summary>
    public string VendorId { get; set; }

    /// <summary>
    ///     Gets or sets a value indicating whether the content is approved
    /// </summary>
    public bool IsApproved { get; set; }

    /// <summary>
    ///     Gets or sets the title
    /// </summary>
    public string Title { get; set; }

    /// <summary>
    ///     Gets or sets the review text
    /// </summary>
    public string ReviewText { get; set; }

    /// <summary>
    ///     Review rating
    /// </summary>
    public int Rating { get; set; }

    /// <summary>
    ///     Review helpful votes total
    /// </summary>
    public int HelpfulYesTotal { get; set; }

    /// <summary>
    ///     Review not helpful votes total
    /// </summary>
    public int HelpfulNoTotal { get; set; }

    /// <summary>
    ///     Gets the entries of vendor review helpfulness
    /// </summary>
    public virtual ICollection<VendorReviewHelpfulness> VendorReviewHelpfulnessEntries {
        get => _vendorReviewHelpfulnessEntries ??= new List<VendorReviewHelpfulness>();
        protected set => _vendorReviewHelpfulnessEntries = value;
    }
}