using System;
using API.DTOs.Scrobbling;
using API.Entities.Interfaces;
using API.Services;
namespace API.Entities.Scrobble;
#nullable enable
///
/// Represents an event that would need to be sent to the API layer. These rows will be processed and deleted.
///
public class ScrobbleEvent : IEntityDate
{
public long Id { get; set; }
public required ScrobbleEventType ScrobbleEventType { get; set; }
public int? AniListId { get; set; }
public long? MalId { get; set; }
///
/// Rating for the Series
///
public float? Rating { get; set; }
///
/// Review for the Series
///
public string? ReviewBody { get; set; }
public string? ReviewTitle { get; set; }
public required MediaFormat Format { get; set; }
///
/// Depends on the ScrobbleEvent if filled in
///
public int? ChapterNumber { get; set; }
///
/// Depends on the ScrobbleEvent if filled in
///
public int? VolumeNumber { get; set; }
///
/// Has this event been processed and pushed to Provider
///
public bool IsProcessed { get; set; }
///
/// The date this was processed
///
public DateTime? ProcessDateUtc { get; set; }
public required int SeriesId { get; set; }
public Series Series { get; set; }
public required int LibraryId { get; set; }
public Library Library { get; set; }
public AppUser AppUser { get; set; }
public required int AppUserId { get; set; }
public DateTime Created { get; set; }
public DateTime LastModified { get; set; }
public DateTime CreatedUtc { get; set; }
public DateTime LastModifiedUtc { get; set; }
}