| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | #pragma warning disable CA1307using System;using System.Collections.Generic;using System.Linq;using Jellyfin.Data.Entities;using MediaBrowser.Controller;using Microsoft.EntityFrameworkCore;namespace Jellyfin.Server.Implementations.Users{    /// <summary>    /// Manages the storage and retrieval of display preferences through Entity Framework.    /// </summary>    public class DisplayPreferencesManager : IDisplayPreferencesManager    {        private readonly JellyfinDbProvider _dbProvider;        /// <summary>        /// Initializes a new instance of the <see cref="DisplayPreferencesManager"/> class.        /// </summary>        /// <param name="dbProvider">The Jellyfin db provider.</param>        public DisplayPreferencesManager(JellyfinDbProvider dbProvider)        {            _dbProvider = dbProvider;        }        /// <inheritdoc />        public DisplayPreferences GetDisplayPreferences(Guid userId, string client)        {            using var dbContext = _dbProvider.CreateContext();            var prefs = dbContext.DisplayPreferences                .Include(pref => pref.HomeSections)                .FirstOrDefault(pref =>                    pref.UserId == userId && string.Equals(pref.Client, client));            if (prefs == null)            {                prefs = new DisplayPreferences(userId, client);                dbContext.DisplayPreferences.Add(prefs);            }            return prefs;        }        /// <inheritdoc />        public ItemDisplayPreferences GetItemDisplayPreferences(Guid userId, Guid itemId, string client)        {            using var dbContext = _dbProvider.CreateContext();            var prefs = dbContext.ItemDisplayPreferences                .FirstOrDefault(pref => pref.UserId == userId && pref.ItemId == itemId && string.Equals(pref.Client, client));            if (prefs == null)            {                prefs = new ItemDisplayPreferences(userId, Guid.Empty, client);                dbContext.ItemDisplayPreferences.Add(prefs);            }            return prefs;        }        /// <inheritdoc />        public IList<ItemDisplayPreferences> ListItemDisplayPreferences(Guid userId, string client)        {            using var dbContext = _dbProvider.CreateContext();            return dbContext.ItemDisplayPreferences                .Where(prefs => prefs.UserId == userId && prefs.ItemId != Guid.Empty && string.Equals(prefs.Client, client))                .ToList();        }        /// <inheritdoc />        public void SaveChanges(DisplayPreferences preferences)        {            using var dbContext = _dbProvider.CreateContext();            dbContext.Update(preferences);            dbContext.SaveChanges();        }        /// <inheritdoc />        public void SaveChanges(ItemDisplayPreferences preferences)        {            using var dbContext = _dbProvider.CreateContext();            dbContext.Update(preferences);            dbContext.SaveChanges();        }    }}
 |