/*!
	IUserManager.h
	ユーザマネージャ
*/
#pragma once
#include "InterfaceWrapperMacro.h"
#include "UserInfo.h"

/*!
	IUserManager.h
	ユーザマネージャ
*/
class IUserManager
{
public:
	//!	ユーザー情報を取得
	virtual int GetUserInfo(LPCSTR userName, IWorkspaceAccessRefPtr serverInfoRef) = 0;

	//!	全ユーザリストを取得
	virtual void GetAllUser(IStringArrayPtr enableUsers, IStringArrayPtr disableUsers, IStringArrayPtr groups) = 0;
};

/*!
	IUserManagerラッパ
*/
class CIUserManagerWrap
{
public:
	//!	色々宣言
	DEFINE_MANAGER_WRAPPER_CONSTRUCTOR(CIUserManagerWrap, IUserManager, 1);

	/*!
		ユーザー情報を取得

		取得されるのは、ユーザ情報への一時的なアクセス
	*/
	virtual int GetUserInfo(CString userName, CUserInfo &userInfoRef)
	{
		return m_ifPtr->GetUserInfo(userName, userInfoRef.GetIWorkspaceAccessRef());
	}

	/*!
		全ユーザリストを取得
	*/
	virtual void GetAllUser(CStringArray enableUsers, CStringArray disableUsers, CStringArray groups)
	{
		CIStringArrayWrap	_enableUsers(enableUsers);
		CIStringArrayWrap	_disableUsers(disableUsers);
		CIStringArrayWrap	_groups(groups);

		m_ifPtr->GetAllUser(&_enableUsers, &_disableUsers, &_groups);
	}
};
