using Newtonsoft.Json;

namespace OF_DL.Models.Dtos.Messages;

public class ListItemDto
{
    [JsonProperty("responseType")] public string ResponseType { get; set; } = "";

    [JsonProperty("text")] public string Text { get; set; } = "";

    [JsonProperty("giphyId")] public object GiphyId { get; set; } = new();

    [JsonProperty("lockedText")] public bool? LockedText { get; set; }

    [JsonProperty("isFree")] public bool? IsFree { get; set; }

    [JsonProperty("price")] public string Price { get; set; } = "";

    [JsonProperty("isMediaReady")] public bool? IsMediaReady { get; set; }

    [JsonProperty("mediaCount")] public int? MediaCount { get; set; }

    [JsonProperty("media")] public List<MediumDto> Media { get; set; } = [];

    [JsonProperty("previews")] public List<object> Previews { get; set; } = [];

    [JsonProperty("isTip")] public bool? IsTip { get; set; }

    [JsonProperty("isReportedByMe")] public bool? IsReportedByMe { get; set; }

    [JsonProperty("isCouplePeopleMedia")] public bool? IsCouplePeopleMedia { get; set; }

    [JsonProperty("queueId")] public object QueueId { get; set; } = new();

    [JsonProperty("fromUser")] public FromUserDto FromUser { get; set; } = new();

    [JsonProperty("isFromQueue")] public bool? IsFromQueue { get; set; }

    [JsonProperty("canUnsendQueue")] public bool? CanUnsendQueue { get; set; }

    [JsonProperty("unsendSecondsQueue")] public int? UnsendSecondsQueue { get; set; }

    [JsonProperty("id")] public long Id { get; set; }

    [JsonProperty("isOpened")] public bool? IsOpened { get; set; }

    [JsonProperty("isNew")] public bool? IsNew { get; set; }

    [JsonProperty("createdAt")] public DateTime? CreatedAt { get; set; }

    [JsonProperty("changedAt")] public DateTime? ChangedAt { get; set; }

    [JsonProperty("cancelSeconds")] public int? CancelSeconds { get; set; }

    [JsonProperty("isLiked")] public bool? IsLiked { get; set; }

    [JsonProperty("canPurchase")] public bool? CanPurchase { get; set; }

    [JsonProperty("canPurchaseReason")] public string CanPurchaseReason { get; set; } = "";

    [JsonProperty("canReport")] public bool? CanReport { get; set; }

    [JsonProperty("canBePinned")] public bool? CanBePinned { get; set; }

    [JsonProperty("isPinned")] public bool? IsPinned { get; set; }
}
