48 lines
2.3 KiB
C#
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);
|
|
//}
|
|
} |