Files
SVSimServer/SVSim.EmulatedEntrypoint/Mapping/PresentMapper.cs

31 lines
1.5 KiB
C#

using System.Globalization;
using SVSim.Database.Models;
using SVSim.EmulatedEntrypoint.Models.Dtos.Common;
namespace SVSim.EmulatedEntrypoint.Mapping;
internal static class PresentMapper
{
/// <summary>
/// Project a ViewerPresent row onto the wire DTO. Field-by-field stringification matches
/// the prod capture at data_dumps/captures/traffic_event_crate_free_pack.ndjson:
/// - present_id, reward_type, reward_detail_id, reward_count, condition_number,
/// present_limit_type — STRINGS on the wire.
/// - reward_limit_time, item_type — INTS on the wire.
/// - create_time — "yyyy-MM-dd HH:mm:ss" string, gift's row-creation time (NOT now()).
/// </summary>
public static PresentDto ToWire(ViewerPresent row) => new()
{
PresentId = row.PresentId,
RewardType = row.RewardType.ToString(CultureInfo.InvariantCulture),
RewardDetailId = row.RewardDetailId.ToString(CultureInfo.InvariantCulture),
RewardCount = row.RewardCount.ToString(CultureInfo.InvariantCulture),
ConditionNumber = row.ConditionNumber.ToString(CultureInfo.InvariantCulture),
PresentLimitType = row.PresentLimitType.ToString(CultureInfo.InvariantCulture),
RewardLimitTime = (int)row.RewardLimitTime,
CreateTime = row.CreatedAt.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture),
ItemType = row.ItemType,
Message = row.Message,
};
}