using Bp.Sync.Domain.Elastics.BaseEntities;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations.Schema;

namespace Bp.Sync.Domain.Elastics.Inventories.Categories
{
    public class CategoryElastic : ElasticBaseEntityWithKey<long>
    {
        //base catoegory
        /// <summary>
        /// Tên
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Tên không dấu
        /// </summary>
        public string UnsignName { get; set; }

        /// <summary>
        /// Mã
        /// </summary>
        public string Code { get; set; }

        /// <summary>
        /// Mô tả
        /// </summary>
        public string Description { get; set; }

        //area
        public Region Region { get; set; }

        //city
        /// <summary>
        /// Mã khu vực
        /// </summary>
        public int? AreaId { get; set; }

        public string AreaName { get; set; }

        //District
        /// <summary>
        /// Mã tỉnh / thành phố
        /// </summary>
        public int CityId { get; set; }

        public string CityName { get; set; }

        /// <summary>
        /// true: Nội thành, false: ngoại thành
        /// </summary>
        public bool IsUrban { get; set; }

        //ward
        /// <summary>
        /// Mã quận / huyện
        /// </summary>
        public int DistrictId { get; set; }

        public string DistrictName { get; set; }

        /// <summary>
        /// Mã người dùng phụ trách phường / xã
        /// </summary>
        public int? UserId { get; set; }

        //Prescription
        /// <summary>
        /// Mã hàng hóa
        /// </summary>
        [Column(TypeName = "nvarchar(64)")]
        public string ProductCode { get; set; }

        public string Discriminator { get; set; }
    }

    public enum Region
    {
        [Description("Miền Bắc")]
        Northern = 1,

        [Description("Miền Trung")]
        Central = 2,

        [Description("Miền Nam")]
        South = 3,
    }
}