using System.ComponentModel.DataAnnotations;
using Lada.Framework.Data.Domains.BaseEntities;

namespace Lada.Framework.Data.Domains.Premises
{
    /// <summary>
    /// Điểm chấm của 1 mặt bằng theo từng tiêu chí
    /// </summary>
    public class PremiseScore : BaseEntityWithKey<int>
    {
        /// <summary>
        /// FK → Premise
        /// </summary>
        public int PremiseId { get; set; }

        /// <summary>
        /// FK → PremiseScoringCriteria
        /// </summary>
        public int CriteriaId { get; set; }

        /// <summary>
        /// FK → PremiseScoringOption (option được chọn, nullable cho nhập tay)
        /// </summary>
        public int? SelectedOptionId { get; set; }

        /// <summary>
        /// Giá trị text do NV nhập (VD: "12", "Nhà thô 2 tầng")
        /// </summary>
        [MaxLength(500)]
        public string? TextValue { get; set; }

        /// <summary>
        /// Giá trị số (dùng để tự khớp khoảng Range, VD: 8000000 → khớp "5-8 triệu")
        /// </summary>
        public decimal? NumericValue { get; set; }

        /// <summary>
        /// Điểm chấm (auto từ Option/Range hoặc override thủ công)
        /// </summary>
        public int Score { get; set; }

        /// <summary>
        /// Ghi chú của NV khảo sát
        /// </summary>
        [MaxLength(1000)]
        public string? Note { get; set; }

        #region Navigation Properties

        public virtual Premise Premise { get; set; } = null!;
        public virtual PremiseScoringCriteria Criteria { get; set; } = null!;
        public virtual PremiseScoringOption? SelectedOption { get; set; }

        #endregion
    }
}
