using System;
using System.Collections.Generic;

namespace Knot.Modules.Conversations.Application.DTOs;

public record MessageDetailDto(
    Guid Id,
    Guid ChatId,
    Guid SenderId,
    string? Content,
    string Type,
    Guid? ReplyToId,
    ReplyToMessageDto? ReplyTo,
    string? Quote,
    bool IsEdited,
    bool IsDeleted,
    DateTime CreatedAt,
    long SequenceId,
    Guid? ForwardedFromId,
    MessageSenderDto? ForwardedFrom,
    Guid? StoryId,
    string? StoryMediaUrl,
    string? StoryMediaType,
    List<MediaDto> Media,
    MessageSenderDto? Sender,
    List<ReadByDto> ReadBy,
    List<MessageReactionDto> Reactions,
    string? CallType = null,
    string? CallStatus = null,
    int? Duration = null,
    List<PollOptionDto>? PollOptions = null,
    bool? PollIsMultipleChoice = null,
    bool? PollIsAnonymous = null,
    bool? PollIsClosed = null,
    List<Guid>? UserVotedOptionIds = null,
    bool IsDeletedForUser = false
);

public record ReplyToMessageDto(
    Guid Id,
    string? Content,
    bool IsDeleted,
    List<MediaDto> Media,
    MessageSenderDto? Sender
);

public record MessageReactionDto(
    Guid Id,
    string Emoji,
    Guid UserId,
    MessageSenderDto? User
);

