using System.Text.Json.Serialization;
using Discord;

namespace Boyfriend.Data;

public record MemberData {
    public DateTimeOffset? BannedUntil;
    public ulong Id;
    public bool IsInGuild;
    public List<DateTimeOffset> JoinedAt;
    public List<DateTimeOffset> LeftAt;
    public DateTimeOffset? MutedUntil;
    public List<Reminder> Reminders;
    public List<ulong> Roles;

    [JsonConstructor]
    public MemberData(DateTimeOffset? bannedUntil, ulong id, bool isInGuild, List<DateTimeOffset> joinedAt,
        List<DateTimeOffset> leftAt, DateTimeOffset? mutedUntil, List<Reminder> reminders, List<ulong> roles) {
        BannedUntil = bannedUntil;
        Id = id;
        IsInGuild = isInGuild;
        JoinedAt = joinedAt;
        LeftAt = leftAt;
        MutedUntil = mutedUntil;
        Reminders = reminders;
        Roles = roles;
    }

    public MemberData(IGuildUser user) {
        Id = user.Id;
        IsInGuild = true;
        JoinedAt = new List<DateTimeOffset> { user.JoinedAt!.Value };
        LeftAt = new List<DateTimeOffset>();
        Roles = user.RoleIds.ToList();
        Roles.Remove(user.Guild.Id);
        Reminders = new List<Reminder>();
    }
}