154 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			154 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Core.Abstractions.DomainObjects;
 | |
| using Core.Abstractions.Models;
 | |
| using Core.DomainObjects.Documents;
 | |
| using Core.Enumerations;
 | |
| using WeatherForecast.Models.Responses;
 | |
| using WeatherForecast.Models.Responses.L10n;
 | |
| 
 | |
| namespace WeatherForecast.Models.Abstractions {
 | |
|   
 | |
|   /// <summary>
 | |
|   /// 
 | |
|   /// </summary>
 | |
|   /// <typeparam name="T"></typeparam>
 | |
|   public abstract class PostItemResponseModelBase<T> : ResponseModelBase {
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public Guid Id { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public Guid SiteId { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public List<PostItemL10nModel>? L10n { get; set; }
 | |
| 
 | |
|     #region Localized costrutor
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public string? Slug { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public string? Description { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public string? Title { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public string? ShortText { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public string? Text { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public string? PlainText { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public string? ContentType { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public List<string>? Badges { get; set; }
 | |
|     #endregion
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public List<MediaAttachmentResponseModel>? MediaAttachemnts { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public AuthorModel? Author { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public DateTime Created { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public List<string>? Tags { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public List<CategoryItemResponseModel>? Categories { get; set; }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     public bool? FamilyFriendly { get; set; }
 | |
| 
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     /// <param name="postItem"></param>
 | |
|     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;
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     /// <param name="postItem"></param>
 | |
|     /// <param name="categories"></param>
 | |
|     public PostItemResponseModelBase(PostItemBase<T> postItem, List<Category> categories) : this(postItem) {
 | |
|       L10n = postItem.L10n.Select(x => new PostItemL10nModel(x)).ToList();
 | |
|       Categories = categories.Select(x => new CategoryItemResponseModel(x)).ToList();
 | |
|       MediaAttachemnts = postItem.MediaAttachments?.Select(x => new MediaAttachmentResponseModel(x)).ToList();
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     /// <param name="postItem"></param>
 | |
|     /// <param name="categories"></param>
 | |
|     /// <param name="locale"></param>
 | |
|     public PostItemResponseModelBase(PostItemBase<T> postItem, List<Category> 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();
 | |
|       MediaAttachemnts = postItem.MediaAttachments?.Select(x => new MediaAttachmentResponseModel(x, locale)).ToList();
 | |
|     }
 | |
|   }
 | |
| }
 |