Files
telegram-bot/modules/RichSiteSummary/Data/Post.cs
T

109 lines
2.9 KiB
C#
Raw Normal View History

2020-03-02 00:00:52 +04:00
/// This file is a part of RSS Bot for Telegram.
/// License: MIT
/// Author: CrazyHackGUT aka Kruzya (Sergey Gut) <kruzefag@gmail.com>
///
using System;
using System.ComponentModel.DataAnnotations;
using System.Text;
2020-03-04 11:55:10 +04:00
using System.Web;
using Kruzya.TelegramBot.RichSiteSummary.UrchinTrackingModule;
2020-03-02 00:00:52 +04:00
using Telegram.Bot.Types.Enums;
namespace Kruzya.TelegramBot.RichSiteSummary.Data
{
/// <summary>
/// Represents a post from feed in database.
/// </summary>
public class Post : RepresentableEntity
{
#region RepresentableEntity
protected override ParseMode DefaultRepresentation
{
get => ParseMode.Html;
}
protected override string ViewableText
{
get => Title;
}
protected override string ViewableUrl
{
2023-02-15 18:28:37 +03:00
get => UtmUtility.ApplyParameters(new Uri(new(Feed.Url), Url), new UtmParameters()
2020-03-04 11:55:10 +04:00
{
Source = "telegram",
Type = "rss_post",
Campaign = "subscriber",
Content = PostId.ToString()
});
2020-03-02 00:00:52 +04:00
}
2020-03-04 11:55:10 +04:00
2020-03-02 00:00:52 +04:00
#endregion
/// <summary>
/// The unique post id.
/// </summary>
[Key]
public Guid PostId { get; set; }
/// <summary>
/// The feed unique identifier from where this post is fetched.
/// </summary>
public Guid FeedId { get; set; }
/// <summary>
/// The feed from where this post is fetched.
/// </summary>
[Required]
public virtual Feed Feed { get; set; }
/// <summary>
/// The post title.
/// </summary>
[MaxLength(256)]
[Required]
public string Title { get; set; }
/// <summary>
/// The URI where this post is located in web.
/// </summary>
[Required]
2021-10-21 10:26:31 +04:00
[MaxLength(256)]
2020-03-02 00:00:52 +04:00
public string Url { get; set; }
/// <summary>
/// DateTime when post is created in RSS feed.
/// </summary>
[Required]
public DateTime PostedAt { get; set; }
/// <summary>
/// DateTime when post is fetched/updated in database.
/// </summary>
[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();
}
}
}
2021-10-21 10:26:31 +04:00
}