using Newtonsoft.Json;
using OF_DL.Models.Dtos.Common;
using MessageDtos = OF_DL.Models.Dtos.Messages;

namespace OF_DL.Models.Dtos.Purchased;

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<MessageDtos.MediumDto>? Media { get; set; }

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

    [JsonProperty("preview")] public List<object>? Preview { 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; }

    [JsonProperty("author")] public AuthorDto? Author { get; set; }

    [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("postedAt")] public DateTime? PostedAt { 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("canReport")] public bool? CanReport { get; set; }

    [JsonProperty("isCanceled")] public bool? IsCanceled { get; set; }

    [JsonProperty("isArchived")] public bool? IsArchived { get; set; }
}
