using System;
using FACSys.AFM;

namespace FACSysAFMSampleCodes
{
/// <summary>
/// This sample code demonstrates the users collection and user functions. The session is created in the
/// contructor, and login as "Admin". The session is logged out in Disposal function.
/// </summary>
public class UserSampleCode1 : ISampleCode
{
private FaxSession m_Session;
public UserSampleCode1()
{
m_Session = new FaxSession();

m_Session.NetworkProtocol = 2;
m_Session.Logon("10.8.88.144", "Admin","password");

}
#region ISampleCode Members

public void Run()
{
try
{

//Check if the session exist.
if (m_Session == null)
throw new Exception("Session is null.");

//Get the user list
IFaxUsers users = m_Session.Users;

//Print out user collection's properties
Console.WriteLine("User Collection Parent: " + users.Parent.ToString());
Console.WriteLine("User Collection Count: " + users.Count.ToString());
Console.WriteLine("User Collection Class: " + ((FaxMsg_Object)users.Class).ToString());


//Sort the user list
users.Sort(FaxMsg_UserProperties.FaxMsg_USER_DISPLAYNAME,
FaxMsg_UserProperties.FaxMsg_USER_FAXNUMBER,
FaxMsg_Sort.FaxMsg_Sort_Descending,
FaxMsg_Sort.FaxMsg_Sort_Ascending);

//Print out all users' properties
foreach (IFaxUser user in users)
{
DisplayUserProperties(user);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}

private void DisplayUserProperties(IFaxUser user)
{
Console.WriteLine("=======FaxUser=======");

//Display Property User.UserName
Console.WriteLine("FaxUser.UserName: " + user.UserName.ToString());
//Display Property User.UserId
Console.WriteLine("FaxUser.UserId: " + user.UserId.ToString());
//Display Property User.DisplayName
Console.WriteLine("FaxUser.DisplayName: " + user.DisplayName.ToString());
//Display Property User.FirstName
Console.WriteLine("FaxUser.FirstName: " + user.FirstName.ToString());
//Display Property User.LastName
Console.WriteLine("FaxUser.LastName: " + user.LastName.ToString());
//Display Property User.Index
Console.WriteLine("FaxUser.Index: " + user.Index.ToString());
//Display Property User.Class
Console.WriteLine("FaxUser.Class: " + ((FaxMsg_Object)user.Class).ToString());
//Display Property User.Created
Console.WriteLine("FaxUser.Created: " + user.Created.ToString());
//Display Property User.Department
Console.WriteLine("FaxUser.Department: " + user.Department.ToString());
//Display Property User.FaxNumber
Console.WriteLine("FaxUser.FaxNumber: " + user.FaxNumber.ToString());
//Display Property User.Flags
Console.WriteLine("FaxUser.Flags: " + user.Flags.ToString());
//Display Property User.MailAddress
Console.WriteLine("FaxUser.MailAddress: " + user.MailAddress.ToString());
//Display Property User.ManagerId
Console.WriteLine("FaxUser.ManagerId: " + user.ManagerId.ToString());
//Display Property User.MemberCount
Console.WriteLine("FaxUser.MemberCount: " + user.MemberCount.ToString());
//Display Property User.Modified
Console.WriteLine("FaxUser.Modified: " + user.Modified.ToString());
//Display Property User.Parent
Console.WriteLine("FaxUser.Parent: " + user.Parent.ToString());
//Display Property User.PhoneNumber
Console.WriteLine("FaxUser.PhoneNumber: " + user.PhoneNumber.ToString());
//Display Property User.PrintDriver
Console.WriteLine("FaxUser.PrintDriver: " + user.PrintDriver.ToString());
//Display Property User.PrintForm
Console.WriteLine("FaxUser.PrintForm: " + user.PrintForm.ToString());
//Display Property User.PrintPath
user.PrintPath = user.PrintPath;
Console.WriteLine("FaxUser.PrintPath: " + user.PrintPath.ToString());
//Display Property User.RouteId
Console.WriteLine("FaxUser.RouteId: " + user.RouteId.ToString());
//Display Property User.Session
Console.WriteLine("FaxUser.Session: " + user.Session.DisplayName);
//Display Property User.Type
Console.WriteLine("FaxUser.Type: " + ((FaxMsg_UserType)user.Type).ToString());

}
#endregion

#region IDisposable Members

public void Dispose()
{
if (m_Session != null)
m_Session.Logoff();
}

#endregion
~UserSampleCode1()
{
Dispose();
}
}
}