Jump to content

read the status of the user


Stefano Pranzo

Recommended Posts

  • Most Valued User

Hi Stefano,

 

try following C# code.. possible there are better ways to receive the status, not sure.

public class UserInfo
{
	public string name { get; set; }
	public int id { get; set; }
	public short statusInt { get; set; }
	public string status { get; set; }
	public bool bForwardDefault { get; set; }
	public string forwardDefaultNum { get; set; }
	public bool bForwardOnbusy { get; set; }
	public string forwardOnbusyNum { get; set; }
	public bool bForwardOnnoanswer { get; set; }
	public string forwardOnnoanswerNum { get; set; }
	public int forwardOnnoanswerTime { get; set; }
}

public JsonResult JsonUserinfo(string username)
{
	// UserInfo Model
	var mUserInfo = new UserInfo();
	mUserInfo.name = username;

	// Get LibManager
	var libManagerIntern = new SWConfigDataClientLib.LibManager()
	{
		BaseProtocol = SWConfigDataClientLib.SProxyObject.BaseProtocol.TCP,
		WSBaseUrl = "localhost",
		AuthenticationMode = SWConfigDataClientLib.SProxyObject.AuthenticationMode.Trusted // Trusted User needs to be Swyx-Sysadmin
	};

	// Get UserId
	var userEnum = libManagerIntern.GetUserEnum();
	userEnum.ExecuteNameFilter(mUserInfo.name, new SWConfigDataClientLib.Data.OrderByList());
	var userResult = userEnum.PrimaryCollection.CreateSortableFilterCollection().FirstOrDefault();
	mUserInfo.id = userResult.UserID;

	// Get UserStatus i.e. by Phonebook
	var pbEnum = libManagerIntern.GetUserPhoneBookEnum();
	var pbEx = pbEnum.GetPBXPhoneBookEx(mUserInfo.name, true, false, true, true).CreateSortableFilterCollection().FirstOrDefault();
	mUserInfo.statusInt = pbEx.UserStatus;
	// 0 = loggedoff
	// 1 = available
	// 2 = busy
	// 4 = away
	// 5 = dnd
	switch (mUserInfo.statusInt)
	{
		case 0:
				mUserInfo.status = "loggedoff";
				break;
		case 1:
				mUserInfo.status = "available";
				break;
		case 2:
				mUserInfo.status = "busy";
				break;
		case 4:
				mUserInfo.status = "away";
				break;
		case 5:
				mUserInfo.status = "dnd";
				break;
		default:
				mUserInfo.status = "unknown";
				break;
	}

	// Get Forwarding Info
	mUserInfo.bForwardDefault = false;
	if (userResult.DefaultFwd == 1)
	{
		mUserInfo.bForwardDefault = true;
	}
	mUserInfo.forwardDefaultNum = userResult.DefaultFwdNum;

	mUserInfo.bForwardOnbusy = false;
	if (userResult.FwdOnBusy == 1)
	{
		mUserInfo.bForwardOnbusy = true;
	}
	mUserInfo.forwardOnbusyNum = userResult.FwdOnBusyNumber;

	mUserInfo.bForwardOnnoanswer = false;
	if (userResult.FwdOnNoAnswer == 1)
	{
		mUserInfo.bForwardOnnoanswer = true;
	}
	mUserInfo.forwardOnnoanswerNum = userResult.FwdOnNoAnswerNumber;
	mUserInfo.forwardOnnoanswerTime = userResult.FwdOnNoAnswerTimeout;

	// Freeing
	userEnum.FreeForReuse();
	pbEnum.FreeForReuse();

	// Return
	return Json(mUserInfo, JsonRequestBehavior.AllowGet);
}

Good luck!

Link to comment
Share on other sites


  • 7 months later...
On 4.11.2016 at 10:26 AM, ogoettlich said:

Hi Stefano,

 

try following C# code.. possible there are better ways to receive the status, not sure.


public class UserInfo
{
	public string name { get; set; }
	public int id { get; set; }
	public short statusInt { get; set; }
	public string status { get; set; }
	public bool bForwardDefault { get; set; }
	public string forwardDefaultNum { get; set; }
	public bool bForwardOnbusy { get; set; }
	public string forwardOnbusyNum { get; set; }
	public bool bForwardOnnoanswer { get; set; }
	public string forwardOnnoanswerNum { get; set; }
	public int forwardOnnoanswerTime { get; set; }
}

public JsonResult JsonUserinfo(string username)
{
	// UserInfo Model
	var mUserInfo = new UserInfo();
	mUserInfo.name = username;

	// Get LibManager
	var libManagerIntern = new SWConfigDataClientLib.LibManager()
	{
		BaseProtocol = SWConfigDataClientLib.SProxyObject.BaseProtocol.TCP,
		WSBaseUrl = "localhost",
		AuthenticationMode = SWConfigDataClientLib.SProxyObject.AuthenticationMode.Trusted // Trusted User needs to be Swyx-Sysadmin
	};

	// Get UserId
	var userEnum = libManagerIntern.GetUserEnum();
	userEnum.ExecuteNameFilter(mUserInfo.name, new SWConfigDataClientLib.Data.OrderByList());
	var userResult = userEnum.PrimaryCollection.CreateSortableFilterCollection().FirstOrDefault();
	mUserInfo.id = userResult.UserID;

	// Get UserStatus i.e. by Phonebook
	var pbEnum = libManagerIntern.GetUserPhoneBookEnum();
	var pbEx = pbEnum.GetPBXPhoneBookEx(mUserInfo.name, true, false, true, true).CreateSortableFilterCollection().FirstOrDefault();
	mUserInfo.statusInt = pbEx.UserStatus;
	// 0 = loggedoff
	// 1 = available
	// 2 = busy
	// 4 = away
	// 5 = dnd
	switch (mUserInfo.statusInt)
	{
		case 0:
				mUserInfo.status = "loggedoff";
				break;
		case 1:
				mUserInfo.status = "available";
				break;
		case 2:
				mUserInfo.status = "busy";
				break;
		case 4:
				mUserInfo.status = "away";
				break;
		case 5:
				mUserInfo.status = "dnd";
				break;
		default:
				mUserInfo.status = "unknown";
				break;
	}

	// Get Forwarding Info
	mUserInfo.bForwardDefault = false;
	if (userResult.DefaultFwd == 1)
	{
		mUserInfo.bForwardDefault = true;
	}
	mUserInfo.forwardDefaultNum = userResult.DefaultFwdNum;

	mUserInfo.bForwardOnbusy = false;
	if (userResult.FwdOnBusy == 1)
	{
		mUserInfo.bForwardOnbusy = true;
	}
	mUserInfo.forwardOnbusyNum = userResult.FwdOnBusyNumber;

	mUserInfo.bForwardOnnoanswer = false;
	if (userResult.FwdOnNoAnswer == 1)
	{
		mUserInfo.bForwardOnnoanswer = true;
	}
	mUserInfo.forwardOnnoanswerNum = userResult.FwdOnNoAnswerNumber;
	mUserInfo.forwardOnnoanswerTime = userResult.FwdOnNoAnswerTimeout;

	// Freeing
	userEnum.FreeForReuse();
	pbEnum.FreeForReuse();

	// Return
	return Json(mUserInfo, JsonRequestBehavior.AllowGet);
}

Good luck!

Where can i find SWConfigDataClientLib?

Link to comment
Share on other sites


Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and have taken note of our Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.