@page "/PrivateList" @rendermode InteractiveServer @using CouchLog.Components.Pages.PrivateList.Components @using Microsoft.AspNetCore.Authorization @using CouchLog.Data @using Microsoft.AspNetCore.Identity @using Microsoft.EntityFrameworkCore @inject ApplicationDbContext CouchLogDb @inject UserManager UserManager @inject AuthenticationStateProvider AuthenticationStateProvider @inject NavigationManager NavigationManager @attribute [Authorize] Private List @*Top of the Page*@ @*Page Title*@ Private List
@*Search bar*@ @*Refresh button*@ @* *@ @*More Filters button*@ No Filters avalible yet! @*To be exstendet*@
Active Watching
@foreach (var privateEntity in VisibleActiveWatchingEntities) { }


Library @foreach (var privateEntity in VisibleLibraryEntities) { }
@code { //Filter private string? _searchString; private bool _showFilters; //private bool _showAlreadyAddedEntities = false; private IEnumerable FiltertGlobalEntities => _privateEntities.Where(entity => (string.IsNullOrWhiteSpace(_searchString) || entity.GlobalEntity.Title.Contains(_searchString, StringComparison.OrdinalIgnoreCase)) //Search bar ); //Paging Active Watching private int _currentActiveWatchingPage = 1; private readonly int _pageSizeActiveWatching = 12; private int TotalPagesActiveWatching => (int)Math.Ceiling(ActiveWatchingEntities.Count() / (double)_pageSizeActiveWatching); private IEnumerable VisibleActiveWatchingEntities => ActiveWatchingEntities.Skip((_currentActiveWatchingPage - 1) * _pageSizeActiveWatching).Take(_pageSizeActiveWatching); //Paging Library private int _currentLibraryPage = 1; private readonly int _pageSizeLibrary = 12; private int TotalPagesLibrary => (int)Math.Ceiling(LibraryEntities.Count() / (double)_pageSizeLibrary); private IEnumerable VisibleLibraryEntities => LibraryEntities.Skip((_currentLibraryPage - 1) * _pageSizeLibrary).Take(_pageSizeLibrary); //User private ApplicationUser? _appUser; //Entities private List _privateEntities = []; private List _userWatchStatuses = []; private IEnumerable ActiveWatchingEntities => FiltertGlobalEntities.Where(x => x.UserWatchStatus?.Name == "Watching").ToList(); private IEnumerable LibraryEntities => FiltertGlobalEntities.Where(x => x.UserWatchStatus?.Name != "Watching").ToList(); protected override async Task OnInitializedAsync() { await GetPrivateEntities(); _userWatchStatuses = await CouchLogDb.UserWatchStatuses.OrderBy(entity => entity.Id).ToListAsync(); } private async Task GetPrivateEntities() { var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); _appUser = await UserManager.GetUserAsync(authState.User); if (_appUser != null) { _privateEntities = await CouchLogDb.PrivateEntities .Where(x => x.UserId == _appUser.Id) .Include(x => x.GlobalEntity) .Include(x => x.UserWatchStatus) .Include(x => x.GlobalEntity.MediaType) .OrderByDescending(entity => entity.LastChange ?? entity.CreationTime) .ToListAsync(); } } private async Task RefreshPages() { _currentLibraryPage = 1; _currentActiveWatchingPage = 1; StateHasChanged(); } private async Task ChangeWatchStatus(PrivateEntity privateEntity, int newUserWatchStatusId) { privateEntity.UserWatchStatus = _userWatchStatuses.FirstOrDefault(s => s.Id == newUserWatchStatusId); await CouchLogDb.SaveChangesAsync(); } private async Task ChangeSeason(PrivateEntity privateEntity, int? newSeason) { privateEntity.Season = newSeason; await CouchLogDb.SaveChangesAsync(); } private async Task ChangeEpisode(PrivateEntity privateEntity, int? newEpisode) { privateEntity.Episode = newEpisode; await CouchLogDb.SaveChangesAsync(); } private async Task RemovePrivateEntity(PrivateEntity privateEntity) { CouchLogDb.PrivateEntities.Remove(privateEntity); await CouchLogDb.SaveChangesAsync(); await GetPrivateEntities(); } }