using System.Text.Json.Serialization;
using SPTarkov.Server.Core.Models.Eft.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
using SPTarkov.Server.Core.Models.Enums;
using SPTarkov.Server.Core.Models.Utils;
namespace SPTarkov.Server.Core.Models.Eft.Match;
public record EndLocalRaidRequestData : IRequestData
{
///
/// ID of server player just left
///
[JsonPropertyName("serverId")]
public string? ServerId
{
get;
set;
}
[JsonPropertyName("results")]
public EndRaidResult? Results
{
get;
set;
}
///
/// Insured items left in raid by player
///
[JsonPropertyName("lostInsuredItems")]
public List- ? LostInsuredItems
{
get;
set;
}
///
/// Items sent via traders to player, keyed to service e.g. BTRTransferStash
///
[JsonPropertyName("transferItems")]
public Dictionary>? TransferItems
{
get;
set;
}
[JsonPropertyName("locationTransit")]
public LocationTransit? LocationTransit
{
get;
set;
}
}
public record EndRaidResult
{
[JsonPropertyName("profile")]
public PmcData? Profile
{
get;
set;
}
///
/// "Survived/Transit" etc
///
[JsonPropertyName("result")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public ExitStatus? Result
{
get;
set;
}
[JsonPropertyName("killerId")]
public string? KillerId
{
get;
set;
}
[JsonPropertyName("killerAid")]
public string? KillerAid
{
get;
set;
}
///
/// "Gate 3" etc
///
[JsonPropertyName("exitName")]
public string? ExitName
{
get;
set;
}
[JsonPropertyName("inSession")]
public bool? InSession
{
get;
set;
}
[JsonPropertyName("favorite")]
public bool? Favorite
{
get;
set;
}
///
/// Seconds in raid
///
[JsonPropertyName("playTime")]
public double? PlayTime
{
get;
set;
}
}
public record LocationTransit
{
[JsonPropertyName("hash")]
public string? Hash
{
get;
set;
}
[JsonPropertyName("playersCount")]
public int? PlayersCount
{
get;
set;
}
[JsonPropertyName("ip")]
public string? Ip
{
get;
set;
}
[JsonPropertyName("location")]
public string? Location
{
get;
set;
}
[JsonPropertyName("profiles")]
public Dictionary? Profiles
{
get;
set;
}
[JsonPropertyName("transitionRaidId")]
public string? TransitionRaidId
{
get;
set;
}
[JsonPropertyName("raidMode")]
public string? RaidMode
{
get;
set;
}
[JsonPropertyName("side")]
public string? Side
{
get;
set;
}
[JsonPropertyName("dayTime")]
public string? DayTime
{
get;
set;
}
///
/// The location player last visited
///
[JsonPropertyName("sptLastVisitedLocation")]
public string? SptLastVisitedLocation
{
get;
set;
}
///
/// Name of exit taken
///
[JsonPropertyName("sptExitName")]
public string? SptExitName
{
get;
set;
}
}
public record TransitProfile
{
[JsonPropertyName("_id")]
public string? Id
{
get;
set;
}
[JsonPropertyName("keyId")]
public string? KeyId
{
get;
set;
}
[JsonPropertyName("isSolo")]
public bool? IsSolo
{
get;
set;
}
}