MyBookmark/Modules.Library.Application/Services/MediaContent/AnimeTitleService.cs
2024-09-04 23:08:56 +03:00

48 lines
2.3 KiB
C#

using Modules.Library.Domain.Gateways;
using Modules.Library.Domain.Entities.MediaContent.Items.Anime;
using Modules.Library.Domain.EntityBuilders;
using Modules.Library.Domain.Interactors.MediaContent.Anime.Title;
namespace Modules.Library.Application.Services.MediaContent;
public class AnimeTitleService(IAnimeTitleGateway titleGateway, ILanguageGateway languageGateway, IGenreGateway genreGateway)
{
private readonly CreateInteractor createInteractor = new (titleGateway, languageGateway, genreGateway);
public async Task<Guid> New(string nameOriginal, Guid nameOriginalLanguageId) =>
await createInteractor.Create(nameOriginal, nameOriginalLanguageId);
public async Task<Guid> AddSeason(Guid titleId, string nameOriginal, Guid nameOriginalLanguageId) =>
await createInteractor.CreateAnimeSeason(titleId, nameOriginal, nameOriginalLanguageId);
public async Task<Guid> AddEpisode(Guid titleId, Guid? seasonId, AnimeEpisodeType episodeType, string nameOriginal, Guid nameOriginalLanguageId)
{
if (seasonId.HasValue)
return await createInteractor.CreateAnimeEpisode(titleId, seasonId.Value, episodeType, nameOriginal, nameOriginalLanguageId);
else
return await createInteractor.CreateAnimeEpisode(titleId, episodeType, nameOriginal, nameOriginalLanguageId);
}
/*
public async Task AddEpisodeAsVariant(string titleId, string seasonId, AnimeEpisodeType episodeType, ushort order)
{
var title = await titleGateway.GetByIdAsync(titleId);
var season = title.Items.OfType<AnimeSeason>().FirstOrDefault(q => q.Id == seasonId) ??
throw new Exception("NotFound");
season.AddEpisodeAsVariant(episodeType, order);
}
*/
//public async Task RemoveItem(string titleId, string itemId)
//{
// var title = await titleGateway.GetByIdAsync(titleId);
// var item = title.Items.FirstOrDefault(q => q.Id == itemId) ??
// throw new Exception("NotFound");
// if (item is AnimeSeason season) title.RemoveSeason(season);
// else if (item is AnimeEpisode episode) title.RemoveEpisode(episode);
//}
//public async Task Edit(string seasonId, TimeSpan? expirationTime)
//{
// var title = await titleGateway.GetByIdAsync(seasonId);
// title.SetExpirationTime(expirationTime ?? TimeSpan.Zero);
//}
}