using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using QMFrameWork.ServiceInterface;
using QMFrameWork.ServiceLibrary;
using QMAPP.Entity.Sys;
using QMAPP.BLL.Sys;

namespace QMFrameWork.ServiceLibrary
{
    /// <summary>
    /// 服务校验管理
    /// </summary>
    public class AuthorizationManager
    {
        /// <summary>
        /// 服务静态密码
        /// </summary>
        public static string ServiceCredential { get; set; }

        public void IsAuthorization(ServiceRequest request)
        {
            if (string.IsNullOrEmpty(request.UserCredential.CredentialID) == true)
                throw new Exception("登录超时,请重新登录。");

            ServiceSession session = SessionManager.GetSession(request.UserCredential.CredentialID);
            if (session == null)
            {
                //应用二次登录
                LoginInfo login = null;
                if (string.IsNullOrEmpty(request.UserCredential.UserName) == false && string.IsNullOrEmpty(request.UserCredential.PassWord) == false)
                {
                    string passWord = QMFrameWork.Common.Encrypt.DESEncrypt.Decrypt(request.UserCredential.PassWord);
                    login = new LoginBLL().IsLogin(new LoginInfo { LoginUserID = request.UserCredential.UserName, PassWord = passWord });
                }

                if (login != null)
                {
                    request.UserCredential.UserName = login.UserName;
                    SessionManager.Add(request.UserCredential.CredentialID, new ServiceSession { SessionID = request.UserCredential.CredentialID, UserCredential = request.UserCredential, UserLogin = login }, new TimeSpan(0, 240, 0));
                }
                else
                {
                    if (request.UserCredential.CredentialID != ServiceCredential)
                        throw new Exception("服务凭据不正确。");
                }
            }
        }
    }
}