Kavita/API/Helpers/Builders/PlusSeriesDtoBuilder.cs
Joe Milazzo 9f29fa593d
Progress Overhaul + Profile Page and a LOT more! (#4262)
Co-authored-by: Amelia <77553571+Fesaa@users.noreply.github.com>
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
2025-12-09 10:00:11 -07:00

40 lines
1.5 KiB
C#

using System.Linq;
using API.DTOs.Scrobbling;
using API.Entities;
using API.Extensions;
using API.Services.Plus;
namespace API.Helpers.Builders;
public class PlusSeriesDtoBuilder : IEntityBuilder<PlusSeriesRequestDto>
{
private readonly PlusSeriesRequestDto _seriesRequestDto;
public PlusSeriesRequestDto Build() => _seriesRequestDto;
/// <summary>
/// This must be a FULL Series
/// </summary>
/// <param name="series"></param>
public PlusSeriesDtoBuilder(Series series)
{
_seriesRequestDto = new PlusSeriesRequestDto()
{
MediaFormat = series.Library.Type.ConvertToPlusMediaFormat(series.Format),
SeriesName = series.Name,
AltSeriesName = series.LocalizedName,
AniListId = ScrobblingService.ExtractId<int?>(series.Metadata.WebLinks,
ScrobblingService.AniListWeblinkWebsite),
MalId = ScrobblingService.ExtractId<long?>(series.Metadata.WebLinks,
ScrobblingService.MalWeblinkWebsite),
GoogleBooksId = ScrobblingService.ExtractId<string?>(series.Metadata.WebLinks,
ScrobblingService.GoogleBooksWeblinkWebsite),
MangaDexId = ScrobblingService.ExtractId<string?>(series.Metadata.WebLinks,
ScrobblingService.MangaDexWeblinkWebsite),
VolumeCount = series.Volumes.Count,
ChapterCount = series.Volumes.SelectMany(v => v.Chapters).Count(c => !c.IsSpecial),
Year = series.Metadata.ReleaseYear
};
}
}