using MessagePack;
using System.Text.Json.Serialization;
using SVSim.EmulatedEntrypoint.Models.Dtos.Common;
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Guild;
///
/// Request for POST /guild/join.
/// NOTE: named GuildJoinEndpointRequest (not GuildJoinRequest) to avoid collision with
/// SVSim.Database.Entities.Guild.GuildJoinRequest which is an EF entity.
///
[MessagePackObject]
public class GuildJoinEndpointRequest
{
[JsonPropertyName("viewer_id"), Key("viewer_id")]
public string ViewerId { get; set; } = "";
[JsonPropertyName("steam_id"), Key("steam_id")]
public ulong SteamId { get; set; }
[JsonPropertyName("steam_session_ticket"), Key("steam_session_ticket")]
public string SteamSessionTicket { get; set; } = "";
[JsonPropertyName("guild_id"), Key("guild_id"), JsonConverter(typeof(StringifiedIntConverter))]
public int GuildId { get; set; }
/// true = consuming an open invite (from /guild/invited_guild_list).
[JsonPropertyName("from_invite"), Key("from_invite")]
public bool FromInvite { get; set; }
}