using Microsoft.AspNetCore.Mvc;
using System;
using WcfControlMonitorLib;

namespace WcfControlMonitorWebLib.Controllers
{
    /// <summary>
    /// 会话服务
    /// </summary>
    [ApiController, Route("api/sessions")]
    public class SessionsController : ControllerBase
    {
        /// <summary>
        /// 登录
        /// </summary>
        [HttpPost, Anonymous]
        public IActionResult Login([FromMember] string account, [FromMember] string password)
        {
            var dr = CStaticClass.dbo.ExceSQL($"SELECT USER_ID FROM T_SYS_USER WHERE USER_ACCOUNT='{account}' AND USER_PASSWORD='{password}'").Tables[0].DefaultView.Table.Rows;
            if (dr.Count > 0)
            {
                // 创建会话
                var token = Guid.NewGuid().ToString("N");
                WebSession.Store.Add(token, new WebSession { Value = account, Timestamp = DateTime.Now });
                return StatusCode(201, new { token });
            }
            else
            {
                return StatusCode(401);
            }
        }

        /// <summary>
        /// 注销
        /// </summary>
        [HttpDelete, Anonymous]
        public IActionResult Logout(string token)
        {
            // 删除会话
            if (WebSession.Store.ContainsKey(token))
            {
                WebSession.Store.Remove(token);
            }
            return StatusCode(204);
        }
    }
}