using Modules.Library.Database.Database.Models.Anime; using Modules.Library.Database.Repositories; namespace Modules.Library.Database.GatewaysImplementations.Converters; internal class AnimeEpisodeConverter { private readonly CommonPropertiesConverter _commonPropertiesConverter; internal AnimeEpisodeConverter(CommonPropertiesConverter commonPropertiesConverter) { _commonPropertiesConverter = commonPropertiesConverter; } internal AnimeEpisodeConverter(LanguageRepository languageRepository, GenreRepository genreRepository) { _commonPropertiesConverter = new CommonPropertiesConverter(languageRepository, genreRepository); } internal async Task Convert(AnimeEpisode episode) { return new Application.Models.Anime.Episode { Id = episode.Id, Deleted = episode.Deleted, Completed = episode.Completed, CommonProperties = await _commonPropertiesConverter.Convert(episode.CommonProperties), Number = episode.Number, Order = episode.Order, Variant = episode.Variant, ExpirationTime = episode.ExpirationTime, Type = (Application.Models.AnimeEpisodeType)episode.TypeFlag, Duration = episode.Duration, }; } internal AnimeEpisode Convert(Domain.Entities.MediaContent.Items.Anime.AnimeEpisode episode) { var dbEpisode = new AnimeEpisode { //Type = (AnimeEpisodeType)episode.Type, CommonProperties = _commonPropertiesConverter.Convert(episode.CommonProperties), Order = episode.Order, Variant = episode.Variant, Number = episode.Number, Completed = episode.Completed, Deleted = episode.Deleted, ExpirationTime = episode.ExpirationTime, }; if (!episode.IsTransient()) dbEpisode.Id = episode.Id; return dbEpisode; } internal async Task ConvertToDomain(AnimeEpisode episode) { return new Domain.Models.AnimeEpisode { Id = episode.Id, Deleted = episode.Deleted, Completed = episode.Completed, CommonProperties = await _commonPropertiesConverter.ConvertToDomain(episode.CommonProperties), Number = episode.Number, Order = episode.Order, Variant = episode.Variant, ExpirationTime = episode.ExpirationTime, Type = (Domain.Entities.MediaContent.Items.Anime.AnimeEpisodeType)episode.TypeFlag, Duration = episode.Duration, }; } }