// Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.

package container

import (
	"LAPP_LF_MOM_BACKEND/web/models"
	"errors"
	"fmt"
)

// 会话
type Session struct {
	// 会话上下文
	SessionContext
	// 会话标识
	sessionId string
	// 组件句柄管理器
	handlers *HandlerManager
}

// 创建会话
// 参数
// 1.会话上下文
// 2.用户信息
// 3.组件句柄管理器
// 返回值:
// 1.会话
// 2.错误
func NewSession(context *SessionContext, sessionId string, handlerManager *HandlerManager) (*Session, error) {
	if context == nil {
		return nil, errors.New(fmt.Sprintf("会话上下文不能为空!"))
	}
	if sessionId == "" {
		return nil, errors.New(fmt.Sprintf("会话标识不能为空!"))
	}
	if handlerManager == nil {
		return nil, errors.New(fmt.Sprintf("组件句柄管理器不能为空!"))
	}
	return &Session{*context, sessionId, handlerManager}, nil
}

// 获取用户信息
// 返回值:
// 1.用户信息
func (session *Session) User() *models.Usertab {
	return session.user
}

// 获取会话标识
// 返回值:
// 1.会话标识
func (session *Session) SessionId() string {
	return session.sessionId
}

// 获取组件句柄管理器
// 返回值:
// 1.组件句柄管理器
func (session *Session) Handlers() *HandlerManager {
	return session.handlers
}
