using System.Text.Json.Serialization; using SPTarkov.Server.Core.Models.Common; 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 IEnumerable? 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 MongoId? 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; } }