using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Vrh.iScheduler.Report
{
    /// <summary>
    /// A rioport csomagokat tartalmazó táblázat.
    /// </summary>
    [Table("SchedulerReportPackages")]
    public class SchedulerReportPackage
    {
        /// <summary>
        /// Report csomag belső egyedi azonosítója.
        /// </summary>
        [Key]
        public int Id { get; set; }

        /// <summary>
        /// Riport csomag neve.
        /// Csoport azonosítóval együtt egyedinek kell lennie.
        /// </summary>
        [Required, MaxLength(100)]
        [Index("IX_SchedulerReportPackages_NameGroup", 1, IsUnique = true)]
        public string Name { get; set; }

        /// <summary>
        /// Csoport azonosító, a riport csomag ehhez a csoporthoz tartozik.
        /// A névvel együtt egyedinek kell lennie.
        /// </summary>
        [Required, MaxLength(100)]
        [Index("IX_SchedulerReportPackages_NameGroup", 2, IsUnique = true)]
        public string GroupId { get; set; }

        /// <summary>
        /// A riport csomag leírása.
        /// </summary>
        [Required, MaxLength(200)]
        public string Description { get; set; }

        /// <summary>
        /// A riport csomaghoz tartozó szerep neve.
        /// </summary>
        [MaxLength(100)]
        public string RoleName { get; set; }

        /// <summary>
        /// A riport csomag aktivált állapotban  van-e.
        /// </summary>
        public bool Active { get; set; }

        /// <summary>
        /// Ellenőrzéskor használt mező, amelybe jelölések (betűk) kerülnek.
        /// </summary>
        [MaxLength(10)]
        public string Mark { get; set; }

        /// <summary>
        /// A riport csomaghoz ezek ez egyedek tartoznak.
        /// </summary>
        public virtual ICollection<SchedulerReportPackageItem> SchedulerReportPackageItems { get; set; } = new List<SchedulerReportPackageItem>();
    }
}
