246 lines
5.5 KiB
C#
246 lines
5.5 KiB
C#
using Core.Enumerations;
|
|
using Core.Abstractions.Models;
|
|
|
|
using DomainObjects;
|
|
using DomainObjects.Enumerations;
|
|
using DomainObjects.Documents.Posts;
|
|
using DomainObjects.Documents.Users;
|
|
using DomainObjects.Documents.Categories;
|
|
|
|
|
|
namespace WeatherForecast.Models.Blog.Responses {
|
|
|
|
#region Media attachment
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public class GetBlogItemSlugMediaAttachmentResponseModel {
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string Src { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public MediaTypes MediaType { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string? Alt { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string? Target { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string? Title { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string? Description { get; set; }
|
|
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="mediaAttachment"></param>
|
|
/// <param name="locale"></param>
|
|
public GetBlogItemSlugMediaAttachmentResponseModel(MediaAttachment mediaAttachment, Locales locale) {
|
|
|
|
var l10n = mediaAttachment.L10n.Single(x => x.Locale == locale);
|
|
|
|
Src = mediaAttachment.Src;
|
|
MediaType = mediaAttachment.MediaType;
|
|
Alt = l10n.Alt;
|
|
Target = l10n.Target;
|
|
Title = l10n.Title;
|
|
Description = l10n.Description;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Author
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public class GetBlogItemSlugAuthorModel : ResponseModelBase {
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public GetBlogItemSlugMediaAttachmentResponseModel? Avatar { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string NickName { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="author"></param>
|
|
/// <param name="locale"></param>
|
|
public GetBlogItemSlugAuthorModel(User author, Locales locale) {
|
|
|
|
if(author.Avatar != null)
|
|
Avatar = new GetBlogItemSlugMediaAttachmentResponseModel(author.Avatar, locale);
|
|
|
|
NickName = author.Username;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Category
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public class GetBlogItemSlugCategoryResponseModel : ResponseModelBase {
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string Slug { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string Text { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="category"></param>
|
|
/// <param name="locale"></param>
|
|
public GetBlogItemSlugCategoryResponseModel(Category category, Locales locale) {
|
|
|
|
var l10n = category.L10n.Single(x => x.Locale == locale);
|
|
|
|
Slug = l10n.Slug;
|
|
Text = l10n.Text;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Blog item
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public class GetBlogItemSlugResponseModel : ResponseModelBase {
|
|
|
|
/// <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; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public List<GetBlogItemSlugMediaAttachmentResponseModel>? MediaAttachemnts { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public GetBlogItemSlugAuthorModel? Author { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public DateTime Created { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public List<string>? Tags { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public List<GetBlogItemSlugCategoryResponseModel> Categories { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public bool? FamilyFriendly { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public uint? ReadTime { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public uint? Likes { get; set; }
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="blogItem"></param>
|
|
/// <param name="categories"></param>
|
|
/// <param name="author"></param>
|
|
/// <param name="locale"></param>
|
|
public GetBlogItemSlugResponseModel(BlogDocument blogItem, List<Category> categories, User author, Locales locale) {
|
|
|
|
var postItemL10n = blogItem.L10n.Single(x => x.Locale == locale);
|
|
|
|
Slug = postItemL10n.Slug;
|
|
Badges = postItemL10n.Badges;
|
|
Title = postItemL10n.Title;
|
|
ShortText = postItemL10n.ShortText;
|
|
Text = postItemL10n.Text;
|
|
PlainText = postItemL10n.PlainText;
|
|
Badges = postItemL10n.Badges;
|
|
Created = blogItem.Created;
|
|
Tags = blogItem.Tags;
|
|
Categories = categories.Select(x => new GetBlogItemSlugCategoryResponseModel(x, locale)).ToList();
|
|
MediaAttachemnts = blogItem.MediaAttachments?.Select(x => new GetBlogItemSlugMediaAttachmentResponseModel(x, locale)).ToList();
|
|
Author = new GetBlogItemSlugAuthorModel(author, locale);
|
|
ReadTime = blogItem.ReadTime;
|
|
Likes = blogItem.Likes;
|
|
}
|
|
}
|
|
#endregion
|
|
}
|