using Modules.Library.Application.Models.Anime; using Modules.Library.Database.Database.Models; using Modules.Library.Database.Database.Models.Anime; using Modules.Library.Database.Database.Models.CommonProperties; namespace Modules.Library.Database.GatewaysImplementations.Converters; internal class AnimeSeasonConverter { private readonly CommonPropertiesConverter _commonPropertiesConverter; private readonly AnimeEpisodeConverter _animeEpisodeConverter; internal AnimeSeasonConverter(CommonPropertiesConverter commonPropertiesConverter) { _commonPropertiesConverter = commonPropertiesConverter; _animeEpisodeConverter = new AnimeEpisodeConverter(commonPropertiesConverter); } /* internal async Task GetBuilder(AnimeSeason season) { var seasonBuilder = new AnimeSeasonBuilder(); seasonBuilder.SetDirector(season.Director) .SetOriginCountry(season.OriginCountry) .SetNumber(season.Number) .SetOrder(season.Order) .SetCommonProperties(await _commonPropertiesConverter.GetBuilder(season.CommonProperties)) .SetExpirationTime(season.ExpirationTime); if (season.Deleted) seasonBuilder.Deleted(); if (season.Completed) seasonBuilder.Completed(); if (!season.IsTransient()) seasonBuilder.SetId(season.Id); foreach (var episode in season.Episodes) { seasonBuilder.AddEpisode(await _animeEpisodeConverter.GetBuilder(episode)); } return seasonBuilder; } */ internal async Task Convert(AnimeSeason season) { var result = new Application.Models.Anime.Season { Id = season.Id, Deleted = season.Deleted, Completed = season.Completed, CommonProperties = await _commonPropertiesConverter.Convert(season.CommonProperties), Number = season.Number, Order = season.Order, //Variant = season.Variant, ExpirationTime = season.ExpirationTime, Director = season.Director, OriginCountry = season.OriginCountry, }; foreach (var episode in season.Episodes) { result.Episodes.Add(await _animeEpisodeConverter.Convert(episode)); } return result; } internal AnimeSeason Convert(Domain.Entities.MediaContent.Items.Anime.AnimeSeason season) { var dbSeason = new AnimeSeason { CommonProperties = new CommonProperties { Names = season.CommonProperties.Names.Select(q => new NameItem { Value = q.Value, Type = (NameType)q.Type, LanguageId = q.LanguageId, }).ToList(), Preview = season.CommonProperties.Preview == null ? null : new MediaInfo { //Id = Type = (MediaInfoType)season.CommonProperties.Preview.Type, Url = season.CommonProperties.Preview.Url, }, Descriptions = season.CommonProperties.Descriptions.Select(q => new DescriptionItem { IsOriginal = q.IsOriginal, Value = q.Value, }).ToList(), Genres = season.CommonProperties.Genres.Select(q => new GenreProportionItem { GenreId = q.GenreId, Proportion = q.Proportion, }).ToList(), RelatedContent = season.CommonProperties.RelatedContent.Select(q => new MediaInfo { Type = (MediaInfoType)q.Type, Url = q.Url, }).ToList(), AnnouncementDate = season.CommonProperties.AnnouncementDate, EstimatedReleaseDate = season.CommonProperties.EstimatedReleaseDate, ReleaseDate = season.CommonProperties.ReleaseDate, }, OriginCountry = season.OriginCountry, Director = season.Director, Number = season.Number, Order = season.Order, //Variant = season.Variant, Completed = season.Completed, Deleted = season.Deleted, ExpirationTime = season.ExpirationTime, }; if (!season.IsTransient()) dbSeason.Id = season.Id; foreach (var episode in season.Episodes) { dbSeason.Episodes.Add(_animeEpisodeConverter.Convert(episode)); } return dbSeason; } }