using Newtonsoft.Json;

namespace SicboSub.Web.Helpers
{
    /// <summary>
    /// Extension methods cho Session - lưu/đọc object phức tạp
    /// </summary>
    public static class SessionExtensions
    {
        /// <summary>
        /// Lưu object vào Session (serialize thành JSON)
        /// </summary>
        public static void SetComplexData<T>(this ISession session, string key, T value)
        {
            if (value == null)
            {
                session.Remove(key);
                return;
            }
            session.SetString(key, JsonConvert.SerializeObject(value));
        }

        /// <summary>
        /// Đọc object từ Session (deserialize từ JSON)
        /// </summary>
        public static T? GetComplexData<T>(this ISession session, string key)
        {
            var value = session.GetString(key);
            if (string.IsNullOrEmpty(value))
            {
                return default;
            }
            return JsonConvert.DeserializeObject<T>(value);
        }

        /// <summary>
        /// Check xem session có chứa key không
        /// </summary>
        public static bool HasKey(this ISession session, string key)
        {
            return !string.IsNullOrEmpty(session.GetString(key));
        }

        /// <summary>
        /// Xóa tất cả session data
        /// </summary>
        public static void ClearAll(this ISession session)
        {
            session.Clear();
        }
    }
}
