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

namespace Lada.Framework.Data.Domains.Hr
{
    public class JobPost : BaseEntityWithKey<int>
    {
        /// <summary>
        /// Ảnh đại diện
        /// </summary>
        [MaxLength(1024)]
        public string Thumbnail { get; set; }

        #region Thông tin chung
        /// <summary>
        /// Tên công việc / chức danh
        /// </summary>
        [MaxLength(128)]
        public string Title { get; set; }

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

        /// <summary>
        /// Yêu cầu kinh nghiệm (ví dụ: 2 năm c++)
        /// </summary>
        //[MaxLength(512)]
        //public string ExperienceRequirements { get; set; }

        /// <summary>
        /// Địa chỉ làm việc
        /// </summary>
        [MaxLength(512)]
        public string WorkingAddress { get; set; }

        /// <summary>
        /// Loại hình công việc
        /// </summary>
        public JobType JobType { get; set; }
        #endregion

        /// <summary>
        /// Ngày bắt đầu
        /// </summary>
        public DateTimeOffset? StartDate { get; set; }

        /// <summary>
        /// Ngày kết thúc
        /// </summary>
        public DateTimeOffset? EndDate { get; set; }

        /// <summary>
        /// Email tiếp nhận CV
        /// </summary>
        [MaxLength(128)]
        public string Email { get; set; }

        /// <summary>
        /// Phòng ban
        /// </summary>
        [MaxLength(128)]
        public string Department { get; set; }

        /// <summary>
        /// Vị trí ứng tuyển
        /// </summary>
        [MaxLength(128)]
        public string Position { get; set; }

        #region Lương

        /// <summary>
        /// Mức lương tối thiểu
        /// </summary>
        public decimal MinSalary { get; set; }

        /// <summary>
        /// Mức lương tối đa
        /// </summary>
        public decimal MaxSalary { get; set; }
        #endregion

        /// <summary>
        /// Trạng thái tin tuyển dụng: mở / đóng
        /// </summary>
        public JobStatus JobStatus { get; set; }

        /// <summary>
        /// Danh sách ứng viên
        /// </summary>
        public virtual ICollection<Candidate> Candidates { get; set; } = new List<Candidate>();

        /// <summary>
        /// Đường dẫn
        /// </summary>
        public UrlRecord? UrlRecord { get; set; }
        public virtual ICollection<JobPostTag>? JobPostTags { get; set; } = new List<JobPostTag>();



    }

    public enum JobType
    {
        [Description("Toàn thời gian")]
        FullTime = 10,
        [Description("Bán thời gian")]
        PartTime = 20,
        [Description("Thực tập")]
        Intern = 30

    }

    public enum JobStatus
    {
        [Description("Đang biên tập")]
        Editing = 10,
        [Description("Chờ xuất bản")]
        WaitToPublish = 15,
        [Description("Đang mở")]
        Opening = 20,
        [Description("Đã đóng")]
        Closed = 30

    }


}
