using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using Jellyfin.Data.Enums; namespace Jellyfin.Data.Entities { public partial class Group : IHasPermissions, ISavingChanges { partial void Init(); /// /// Default constructor. Protected due to required properties, but present because EF needs it. /// protected Group() { Permissions = new HashSet(); ProviderMappings = new HashSet(); Preferences = new HashSet(); Init(); } /// /// Public constructor with required data /// /// /// public Group(string name, User user) { if (string.IsNullOrEmpty(name)) { throw new ArgumentNullException(nameof(name)); } this.Name = name; user.Groups.Add(this); this.Permissions = new HashSet(); this.ProviderMappings = new HashSet(); this.Preferences = new HashSet(); Init(); } /// /// Static create function (for use in LINQ queries, etc.) /// /// /// public static Group Create(string name, User user) { return new Group(name, user); } /************************************************************************* * Properties *************************************************************************/ /// /// Identity, Indexed, Required /// [Key] [Required] public Guid Id { get; protected set; } /// /// Required, Max length = 255 /// [Required] [MaxLength(255)] [StringLength(255)] public string Name { get; set; } /// /// Required, ConcurrenyToken /// [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; } 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; } } }