// Copyright (c) Microsoft. All rights reserved.
using System.Text.Json.Serialization;
namespace AGUIDojoClient.Components.Shared;
///
/// Weather information model for backend tool rendering.
///
public sealed class WeatherInfo
{
[JsonPropertyName("temperature")]
public int Temperature { get; init; }
[JsonPropertyName("conditions")]
public string Conditions { get; init; } = string.Empty;
[JsonPropertyName("humidity")]
public int Humidity { get; init; }
[JsonPropertyName("wind_speed")]
public int WindSpeed { get; init; }
[JsonPropertyName("feelsLike")]
public int FeelsLike { get; init; }
///
/// Gets the temperature in Fahrenheit.
///
public double TemperatureFahrenheit => (this.Temperature * 9.0 / 5.0) + 32;
///
/// Gets an emoji icon based on weather conditions.
///
public string ConditionIcon => GetConditionIcon(this.Conditions);
private static string GetConditionIcon(string conditions)
{
if (string.Equals(conditions, "sunny", StringComparison.OrdinalIgnoreCase) ||
string.Equals(conditions, "clear", StringComparison.OrdinalIgnoreCase))
{
return "☀️";
}
if (string.Equals(conditions, "cloudy", StringComparison.OrdinalIgnoreCase) ||
string.Equals(conditions, "overcast", StringComparison.OrdinalIgnoreCase))
{
return "☁️";
}
if (string.Equals(conditions, "rainy", StringComparison.OrdinalIgnoreCase) ||
string.Equals(conditions, "rain", StringComparison.OrdinalIgnoreCase))
{
return "🌧️";
}
if (string.Equals(conditions, "stormy", StringComparison.OrdinalIgnoreCase) ||
string.Equals(conditions, "thunderstorm", StringComparison.OrdinalIgnoreCase))
{
return "⛈️";
}
if (string.Equals(conditions, "snowy", StringComparison.OrdinalIgnoreCase) ||
string.Equals(conditions, "snow", StringComparison.OrdinalIgnoreCase))
{
return "❄️";
}
if (string.Equals(conditions, "foggy", StringComparison.OrdinalIgnoreCase) ||
string.Equals(conditions, "fog", StringComparison.OrdinalIgnoreCase))
{
return "🌫️";
}
if (string.Equals(conditions, "windy", StringComparison.OrdinalIgnoreCase))
{
return "💨";
}
if (string.Equals(conditions, "partly cloudy", StringComparison.OrdinalIgnoreCase))
{
return "⛅";
}
return "🌡️";
}
}