using System;
using FACSys.AFM;

namespace FACSysAFMSampleCodes
{
/// <summary>
/// The FaxFolders collection object contains zero or more FaxFolder objects and identifies the available folders. Implements IFaxFolders from FACSys.AFM, IDisposable and IEnumerable from .Net Framework SDK. It uses an ArrayList to host FaxFaxFolder objects.
/// </summary>
public class FolderSampleCode1 : ISampleCode
{
private FaxSession m_Session;
public FolderSampleCode1()
{
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 root folder collection
IFaxFolders folders = m_Session.RootFolder.Folders;

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

//Print out all users' properties
foreach (IFaxFolder folder in folders)
{
DisplayFolderProperties(folder);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}

private void DisplayFolderProperties(IFaxFolder folder)
{
Console.WriteLine("=======FaxFolder=======");

//Display Property FaxFolder.Class
Console.WriteLine("FaxFolder.Class: " + ((FaxMsg_Object)folder.Class).ToString());
//Display Property FaxFolder.Name
Console.WriteLine("FaxFolder.Name: " + folder.Name.ToString());
//Display Property FaxFolder.Created
Console.WriteLine("FaxFolder.Created: " + folder.Created.ToString());
//Display Property FaxFolder.Index
Console.WriteLine("FaxFolder.Index: " + folder.Index.ToString());
//Display Property FaxFolder.FolderId
Console.WriteLine("FaxFolder.FolderId: " + folder.FolderId.ToString());
//Display Property FaxFolder.Parent
Console.WriteLine("FaxFolder.Parent: " + folder.Parent.ToString());
//Display Property FaxFolder.ParentFolderId
Console.WriteLine("FaxFolder.ParentFolderId: " + folder.ParentFolderId.ToString());
//Display Property FaxFolder.Modified
Console.WriteLine("FaxFolder.Modified: " + folder.Modified.ToString());
//Display Property FaxFolder.MaxAttachments
Console.WriteLine("FaxFolder.MaxAttachments: " + folder.MaxAttachments.ToString());
//Display Property FaxFolder.MaxRecipients
Console.WriteLine("FaxFolder.MaxRecipients: " + folder.MaxRecipients.ToString());
//Display Property FaxFolder.Description
Console.WriteLine("FaxFolder.Description: " + folder.Description.ToString());
//Display Property FaxFolder.UnreadCount
Console.WriteLine("FaxFolder.UnreadCount: " + folder.UnreadCount.ToString());
//Display Property FaxFolder.SortOrder
Console.WriteLine("FaxFolder.SortOrder: " + ((FaxMsg_Sort)folder.SortOrder).ToString());
//Display Property FaxFolder.SortOrder2
Console.WriteLine("FaxFolder.SortOrder2: " + ((FaxMsg_Sort)folder.SortOrder2).ToString());
//Display Property FaxFolder.SortProperty
Console.WriteLine("FaxFolder.SortProperty: " + folder.SortProperty.ToString());
//Display Property FaxFolder.SortProperty2
Console.WriteLine("FaxFolder.SortProperty2: " + folder.SortProperty2.ToString());
//Display Property FaxFolder.Flags
Console.WriteLine("FaxFolder.Flags: " + ((FaxMsg_FolderFlags)folder.Flags).ToString());
//Display Property FaxFolder.Session
Console.WriteLine("FaxFolder.Session: " + folder.Session.ToString());
//Display Property FaxFolder.Folders
Console.WriteLine("FaxFolder.Folders: " + folder.Folders.ToString());
//Display Property FaxFolder.Fields
Console.WriteLine("FaxFolder.Fields: " + folder.Fields.ToString());
Console.WriteLine("FaxFolder.Fields.Count: " + folder.Fields.Count.ToString());
}
#endregion

#region IDisposable Members

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

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