/// This file is a part of RSS Bot for Telegram. /// License: MIT /// Author: CrazyHackGUT aka Kruzya (Sergey Gut) /// using System; using System.ComponentModel.DataAnnotations; using System.Text; using Telegram.Bot.Types.Enums; namespace Kruzya.TelegramBot.RichSiteSummary.Data { /// /// Represents a post from feed in database. /// public class Post : RepresentableEntity { #region RepresentableEntity protected override ParseMode DefaultRepresentation { get => ParseMode.Html; } protected override string ViewableText { get => Title; } protected override string ViewableUrl { get => Url; } #endregion /// /// The unique post id. /// [Key] public Guid PostId { get; set; } /// /// The feed unique identifier from where this post is fetched. /// public Guid FeedId { get; set; } /// /// The feed from where this post is fetched. /// [Required] public virtual Feed Feed { get; set; } /// /// The post title. /// [MaxLength(256)] [Required] public string Title { get; set; } /// /// The URI where this post is located in web. /// [Required] public string Url { get; set; } /// /// DateTime when post is created in RSS feed. /// [Required] public DateTime PostedAt { get; set; } /// /// DateTime when post is fetched/updated in database. /// [Required] public DateTime ReceivedAt { get; set; } public Post() { PostId = new Guid(); ReceivedAt = DateTime.Now; } public string MessageText { get { var message = new StringBuilder(); message.Append($"{Representation("🗞")} New on {Feed.Representation(ParseMode.Html)}\n"); message.Append("\n"); message.Append(Title); message.Append("\n"); message.Append(Representation("Open in browser")); return message.ToString(); } } } }