using System.Text.Json; namespace Fitness_core_BE.Helpers { public record EquipmentCount(string Name, int Count); public class GymFacilitiesData { public bool HasAc { get; set; } public List Equipment { get; set; } = new(); } public static class GymFacilities { private static readonly JsonSerializerOptions Opts = new(JsonSerializerDefaults.Web); public static GymFacilitiesData Parse(string? facilities) { if (string.IsNullOrWhiteSpace(facilities)) return new GymFacilitiesData(); try { return JsonSerializer.Deserialize(facilities, Opts) ?? new GymFacilitiesData(); } catch (JsonException) { // Older records may hold plain-text facilities — treat as no structured data. return new GymFacilitiesData(); } } public static string Serialize(bool hasAc, IEnumerable? equipment) { var data = new GymFacilitiesData { HasAc = hasAc, Equipment = (equipment ?? Enumerable.Empty()) .Where(e => !string.IsNullOrWhiteSpace(e.Name)) .GroupBy(e => e.Name.Trim(), StringComparer.OrdinalIgnoreCase) .Select(group => new EquipmentCount( group.First().Name.Trim(), (int)Math.Min( group.Sum(item => Math.Max(0L, item.Count)), int.MaxValue))) .ToList() }; return JsonSerializer.Serialize(data, Opts); } } }