using PARR.Domain.Constants;
using PARR.Domain.Entities.Base;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace PARR.Domain.Entities.Schedule
{
    /// <summary>
    /// Расписание ЕСПП: значения типов повторений
    /// </summary>
    [Table("EsppSchTypeValues", Schema = DatabaseSchemas.Schedule)]
    public class EsppSchTypeValue : IBaseEntity
    {
        [Key]
        public Guid Id { get; set; }

        public DateTimeOffset DateCreated { get; set; }

        [NotMapped]
        public DateTimeOffset? DateModified { get; set; }

        /// <summary>
        /// Значение в ЕСПП, при создании/изменении расписания
        /// </summary>
        public required string Value { get; set; }

        public int TypeId { get; set; }

        /// <summary>
        /// Значение ЕСПП при отображении представления, используется при экспорте
        /// </summary>
        public required string EsppExportValue { get; set; }

        /// <summary>
        /// Сортировка в интерфейсе ПАРР (для удобста должна совпадать с ЕСПП)
        /// </summary>
        public int Order { get; set; }


        ///// <summary>
        ///// Если есть связь с периодом, то есть функция автораспределения
        ///// </summary>
        //public Guid? DistributionPeriodId { get; set; }


        //[ForeignKey(nameof(DistributionPeriodId))]
        //public DistributionPeriod? DistributionPeriod { get; set; }


        [ForeignKey(nameof(TypeId))]
        public EsppSchType? EsppSchType { get; set; }

        public ICollection<EsppSchValue> EsppSchValues { get; set; } = new HashSet<EsppSchValue>();
    }
}
