reactredux/webapi/WeatherForecast/Models/Abstractions/PostItemResponseModelBase.cs

75 lines
2.3 KiB
C#

using Core.Abstractions.DomainObjects;
using Core.Abstractions.Models;
using Core.DomainObjects;
using Core.Enumerations;
using WeatherForecast.Models.L10n;
namespace WeatherForecast.Models.Abstractions {
public abstract class PostItemResponseModelBase<T> : ResponseModelBase {
public Guid Id { get; set; }
public Guid SiteId { get; set; }
public List<PostItemL10nModel>? 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<string>? Badges { get; set; }
#endregion
public List<ImageModel> Images { get; set; }
public AuthorModel Author { get; set; }
public DateTime Created { get; set; }
public List<string> Tags { get; set; }
public List<CategoryModel> Categories { get; set; }
public bool? FamilyFriendly { get; set; }
public PostItemResponseModelBase(PostItemBase<T> postItem) {
Id = postItem.Id;
SiteId = postItem.SiteId;
// Author = new AuthorModel(postItem.Author);
Created = postItem.Created;
Tags = postItem.Tags;
FamilyFriendly = postItem.FamilyFriendly;
}
public PostItemResponseModelBase(PostItemBase<T> postItem, List<Category> categories) : this(postItem) {
L10n = postItem.L10n.Select(x => new PostItemL10nModel(x)).ToList();
Categories = categories.Select(x => new CategoryModel(x)).ToList();
Images = postItem.Images.Select(x => new ImageModel(x)).ToList();
}
public PostItemResponseModelBase(PostItemBase<T> postItem, List<Category> categories, Locales locale) : this(postItem) {
var postItemL10n = postItem.L10n.SingleOrDefault(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 CategoryModel(x, locale)).ToList();
Images = postItem.Images.Select(x => new ImageModel(x, locale)).ToList();
}
}
}