using Core.Abstractions.DomainObjects; using Core.Abstractions.Models; using Core.DomainObjects; using Core.Enumerations; using WeatherForecast.Models.Responses; using WeatherForecast.Models.Responses.L10n; namespace WeatherForecast.Models.Abstractions { /// /// /// /// public abstract class PostItemResponseModelBase : ResponseModelBase { /// /// /// public Guid Id { get; set; } /// /// /// public Guid SiteId { get; set; } /// /// /// public List? L10n { get; set; } #region Localized costrutor /// /// /// public string? Slug { get; set; } /// /// /// public string? Description { get; set; } /// /// /// public string? Title { get; set; } /// /// /// public string? ShortText { get; set; } /// /// /// public string? Text { get; set; } /// /// /// public string? PlainText { get; set; } /// /// /// public string? ContentType { get; set; } /// /// /// public List? Badges { get; set; } #endregion /// /// /// public List? Images { get; set; } /// /// /// public AuthorModel? Author { get; set; } /// /// /// public DateTime Created { get; set; } /// /// /// public List? Tags { get; set; } /// /// /// public List? Categories { get; set; } /// /// /// public bool? FamilyFriendly { get; set; } /// /// /// /// public PostItemResponseModelBase(PostItemBase postItem) { Id = postItem.Id; SiteId = postItem.SiteId; //Author = new AuthorModel(postItem.Author); Created = postItem.Created; Tags = postItem.Tags; FamilyFriendly = postItem.FamilyFriendly; } /// /// /// /// /// public PostItemResponseModelBase(PostItemBase postItem, List categories) : this(postItem) { L10n = postItem.L10n.Select(x => new PostItemL10nModel(x)).ToList(); Categories = categories.Select(x => new CategoryItemResponseModel(x)).ToList(); Images = postItem.Images?.Select(x => new ImageResponseModel(x)).ToList(); } /// /// /// /// /// /// public PostItemResponseModelBase(PostItemBase postItem, List categories, Locales locale) : this(postItem) { var postItemL10n = postItem.L10n.Single(x => x.Locale == locale); if (postItemL10n != null) { Slug = postItemL10n.Slug; Badges = postItemL10n.Badges; Title = postItemL10n.Title; ShortText = postItemL10n.ShortText; Text = postItemL10n.Text; PlainText = postItemL10n.PlainText; Badges = postItemL10n.Badges; } Categories = categories.Select(x => new CategoryItemResponseModel(x, locale)).ToList(); Images = postItem.Images?.Select(x => new ImageResponseModel(x, locale)).ToList(); } } }