using System;
using System.Collections.Generic;
using System.Text;
using System.Text.Json;
using NCuid;

namespace CoviDok.BLL
{
    class SessionHandler
    {
        private readonly ISessionProvider SessionStore;

        public SessionHandler(ISessionProvider Provider)
        {
            SessionStore = Provider;
        }

        public Session GetSession(string SessionID)
        {
            string Candidate = SessionStore.Get(SessionID);
            if (Candidate == null) return null;
            Session session = JsonSerializer.Deserialize<Session>(Candidate);
            session.LastAccess = DateTime.Now;
            SessionStore.Set(SessionID, JsonSerializer.Serialize(session));
            return session;
        }

        public string CreateSession(string UserType, string UserID)
        {
            Session session = new Session
            {
                ID = UserID,
                Type = UserType,
                LastAccess = DateTime.Now
            };
            string ID = Cuid.Generate();
            SessionStore.Set(ID, JsonSerializer.Serialize(session));
            return ID;
        }

        public void DeleteSession(string SessionID)
        {
            SessionStore.Del(SessionID);
        }
    }
}