using System; using System.Globalization; namespace Sonex.Client.Views; internal static class LocationViewHelpers { public static bool TryParseLocationId(string key, out int locationId) { return int.TryParse(key, NumberStyles.Integer, CultureInfo.CurrentCulture, out locationId) || int.TryParse(key, NumberStyles.Integer, CultureInfo.InvariantCulture, out locationId); } public static bool? ToBool(string? value) { if (string.IsNullOrWhiteSpace(value)) { return null; } var normalized = value.Trim(); if (bool.TryParse(normalized, out var boolValue)) { return boolValue; } if (normalized.Equals("1", StringComparison.OrdinalIgnoreCase) || normalized.Equals("y", StringComparison.OrdinalIgnoreCase) || normalized.Equals("yes", StringComparison.OrdinalIgnoreCase) || normalized.Equals("true", StringComparison.OrdinalIgnoreCase)) { return true; } if (normalized.Equals("0", StringComparison.OrdinalIgnoreCase) || normalized.Equals("n", StringComparison.OrdinalIgnoreCase) || normalized.Equals("no", StringComparison.OrdinalIgnoreCase) || normalized.Equals("false", StringComparison.OrdinalIgnoreCase)) { return false; } return null; } public static string Text(object? value) { return Convert.ToString(value, CultureInfo.CurrentCulture) ?? string.Empty; } }