using System.Text.Json;
namespace Server.WatchBody.Web.Dto;
/// Ответы API (specs 03–05); сериализация camelCase, null-поля опускаются.
public class SyncResponse
{
public List Accepted { get; set; } = [];
}
public class ErrorResponse
{
public string Error { get; set; } = string.Empty;
}
public class WorkoutSetDto
{
public Guid SetId { get; set; }
public Guid? ExerciseId { get; set; }
public int Seq { get; set; }
public decimal WeightKg { get; set; }
public int Reps { get; set; }
public DateTime DoneAt { get; set; }
public string Source { get; set; } = string.Empty;
public bool InPlan { get; set; }
public int? Rpe { get; set; }
public int? KneePain { get; set; }
}
public class WorkoutDto
{
public Guid WorkoutId { get; set; }
public DateTime StartedAt { get; set; }
public DateTime? EndedAt { get; set; }
public string Status { get; set; } = string.Empty;
public string SessionKind { get; set; } = string.Empty;
public int? AvgHr { get; set; }
public List Sets { get; set; } = [];
}
public class WorkoutListResponse
{
public List Items { get; set; } = [];
public int Total { get; set; }
}
public class CommandLogDto
{
public Guid Id { get; set; }
public int TOffsetS { get; set; }
public string RecognizedText { get; set; } = string.Empty;
public JsonElement Semantics { get; set; }
public bool Accepted { get; set; }
}
public class WorkoutCardResponse : WorkoutDto
{
public List CommandLog { get; set; } = [];
}
public class ActiveProgramResponse
{
public int ProgramId { get; set; }
public Guid VersionId { get; set; }
public int Version { get; set; }
public int? BasedOnVersion { get; set; }
public string Author { get; set; } = string.Empty;
public string Status { get; set; } = string.Empty;
public JsonElement Body { get; set; }
public string? Rationale { get; set; }
public DateTime CreatedAt { get; set; }
}