using System;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using VkNet.Utils.JsonConverter;
namespace VkNet.Model;
///
/// Комментарий к записи.
/// См. описание .
///
[DebuggerDisplay("Id = {Id}, Text = {Text}, Date = {Date}")]
[Serializable]
public class Comment
{
///
/// Идентификатор комментария.
///
[JsonProperty("id")]
public long Id { get; set; }
///
/// Идентификатор автора комментария.
///
[JsonProperty("from_id")]
public long? FromId { get; set; }
///
/// Идентификатор автора комментария.
///
[JsonProperty("post_id")]
public long? PostId { get; set; }
///
/// Идентификатор фотографии.
///
[JsonProperty("pid")]
public long? PhotoId { get; set; }
///
/// Идентификатор автора комментария.
///
[JsonProperty("owner_id")]
public long? OwnerId { get; set; }
///
/// Идентификатор автора комментария.
///
[JsonProperty("parents_stack")]
public ReadOnlyCollection ParentsStack { get; set; }
///
/// Идентификатор автора комментария.
///
[JsonProperty("thread")]
public CommentThread Thread { get; set; }
///
/// Дата и время создания комментария.
///
[JsonConverter(typeof(UnixDateTimeConverter))]
[JsonProperty("date")]
public DateTime? Date { get; set; }
///
/// Текст комментария.
///
[JsonProperty("text")]
public string Text { get; set; }
///
/// Информация о VK Donut.
///
[JsonProperty("donut")]
public CommentDonut Donut { get; set; }
///
/// Идентификатор пользователя или сообщества, в ответ которому оставлен текущий
/// комментарий (если применимо).
///
[JsonProperty("reply_to_user")]
public long? ReplyToUser { get; set; }
///
/// Идентификатор комментария, в ответ на который оставлен текущий комментарий
/// (если применимо).
///
[JsonProperty("reply_to_comment")]
public long? ReplyToComment { get; set; }
///
/// Объект, содержащий информацию о медиавложениях в комментарии. См. описание
/// формата медиавложений.
///
[JsonConverter(typeof(AttachmentJsonConverter))]
[JsonProperty("attachments")]
public ReadOnlyCollection Attachments { get; set; }
///
/// Первое приложение к комментарию.
///
public Attachment Attachment => Attachments.FirstOrDefault();
#region Поля, установленные экспериментально
///
/// Информация о числе людей, которым понравился данный комментарий.
///
[JsonProperty("likes")]
public Likes Likes { get; set; }
#endregion
}