using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aitex.Core.RT.Log;

namespace Aitex.Core.Util
{
    public static class Globals
    {
        static Globals()
        {
            Session = new Session();
        }

        public static T SessionAs<T>(string sessionId)
        {
            try
            {
                return (T)Session[sessionId];
            }
            catch (Exception ex)
            {
                LOG.Error(ex.ToString());
            }
            return default(T);
        }

        public static Session Session { get; private set; }      
    }

    public class Session
    {
        public object this[string sessionId]
        {
            get
            {
                if (_sessions.Keys.Contains(sessionId))
                    return _sessions[sessionId];
                return null;
            }
            set
            {
                if (_sessions.Keys.Contains(sessionId))
                {
                    _sessions[sessionId] = value;
                }
                else
                {
                    _sessions.Add(sessionId, value);
                }
            }
        }

        public void Remove(string sessionId)
        {
            if (_sessions.Keys.Contains(sessionId))
                _sessions.Remove(sessionId);
        }

        Dictionary<string, object> _sessions = new Dictionary<string, object>();
    }
}