#pragma warning disable CS1591 using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using Jellyfin.Data.Enums; using Jellyfin.Data.Interfaces; namespace Jellyfin.Data.Entities { /// /// An entity representing a group. /// public partial class Group : IHasPermissions, IHasConcurrencyToken { /// /// Initializes a new instance of the class. /// Public constructor with required data. /// /// The name of the group. public Group(string name) { if (string.IsNullOrEmpty(name)) { throw new ArgumentNullException(nameof(name)); } Name = name; Id = Guid.NewGuid(); Permissions = new HashSet(); ProviderMappings = new HashSet(); Preferences = new HashSet(); Init(); } /// /// Initializes a new instance of the class. /// Default constructor. Protected due to required properties, but present because EF needs it. /// protected Group() { Init(); } /************************************************************************* * Properties *************************************************************************/ /// /// Gets or sets the id of this group. /// /// /// Identity, Indexed, Required. /// [Key] [Required] public Guid Id { get; protected set; } /// /// Gets or sets the group's name. /// /// /// Required, Max length = 255. /// [Required] [MaxLength(255)] [StringLength(255)] public string Name { get; set; } /// /// Gets or sets the row version. /// /// /// Required, Concurrency Token. /// [ConcurrencyCheck] [Required] public uint RowVersion { get; set; } public void OnSavingChanges() { RowVersion++; } /************************************************************************* * Navigation properties *************************************************************************/ [ForeignKey("Permission_GroupPermissions_Id")] public virtual ICollection Permissions { get; protected set; } [ForeignKey("ProviderMapping_ProviderMappings_Id")] public virtual ICollection ProviderMappings { get; protected set; } [ForeignKey("Preference_Preferences_Id")] public virtual ICollection Preferences { get; protected set; } /// /// Static create function (for use in LINQ queries, etc.) /// /// The name of this group. public static Group Create(string name) { return new Group(name); } /// public bool HasPermission(PermissionKind kind) { return Permissions.First(p => p.Kind == kind).Value; } /// public void SetPermission(PermissionKind kind, bool value) { Permissions.First(p => p.Kind == kind).Value = value; } partial void Init(); } }