using System;
using System.Collections.Generic;
using API.Data.Misc;
using API.Entities.Enums;
using API.Entities.Enums.Device;
namespace API.DTOs.Stats.V3;
public sealed record UserStatV3
{
    public AgeRestriction AgeRestriction { get; set; }
    /// 
    /// The last reading progress on the server (in UTC)
    /// 
    public DateTime LastReadTime { get; set; }
    /// 
    /// The last login on the server (in UTC)
    /// 
    public DateTime LastLogin { get; set; }
    /// 
    /// Has the user gone through email confirmation
    /// 
    public bool IsEmailConfirmed { get; set; }
    /// 
    /// Is the Email a valid address
    /// 
    public bool HasValidEmail { get; set; }
    /// 
    /// Float between 0-1 to showcase how much of the libraries a user has access to
    /// 
    public float PercentageOfLibrariesHasAccess { get; set; }
    /// 
    /// Number of reading lists this user created
    /// 
    public int ReadingListsCreatedCount { get; set; }
    /// 
    /// Number of collections this user created
    /// 
    public int CollectionsCreatedCount { get; set; }
    /// 
    /// Number of series in want to read for this user
    /// 
    public int WantToReadSeriesCount { get; set; }
    /// 
    /// Active locale for the user
    /// 
    public string Locale { get; set; }
    /// 
    /// Active Theme (name)
    /// 
    public string ActiveTheme { get; set; }
    /// 
    /// Number of series with Bookmarks created
    /// 
    public int SeriesBookmarksCreatedCount { get; set; }
    /// 
    /// Kavita+ only - Has an AniList Token set
    /// 
    public bool HasAniListToken { get; set; }
    /// 
    /// Kavita+ only - Has a MAL Token set
    /// 
    public bool HasMALToken { get; set; }
    /// 
    /// Number of Smart Filters a user has created
    /// 
    public int SmartFilterCreatedCount { get; set; }
    /// 
    /// Is the user sharing reviews
    /// 
    public bool IsSharingReviews { get; set; }
    /// 
    /// The number of devices setup and their platforms
    /// 
    public ICollection DevicePlatforms { get; set; }
    /// 
    /// Roles for this user
    /// 
    public ICollection Roles { get; set; }
    /// 
    /// Who manages the user (OIDC, Kavita)
    /// 
    public IdentityProvider IdentityProvider { get; set; }
}