using System;
using FACSys.AFM;

namespace FACSysAFMSampleCodes
{
/// <summary>
/// The FaxPhonebookContainers collection object contains one or more FaxPhonebookContainer objects representing sub-containers of the current FaxPhonebookContainer. Implements IFaxPhonebookContainers from FACSys.AFM, IDisposable and IEnumerable from .Net Framework SDK. It uses an ArrayList to host FaxPhonebookContainer objects.
/// </summary>
public class PhonebookContainerSampleCode1 : ISampleCode
{
private FaxSession m_Session;
public PhonebookContainerSampleCode1()
{
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 phonebook collection
IFaxPhonebooks phonebooks = m_Session.Phonebooks;

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

if (phonebooks.Count > 0)
{
IFaxPhonebook phonebook = phonebooks[0];
Console.WriteLine("The first phonebook struct...");
Console.WriteLine("\n" + phonebook.Name);
int level = 0;
DisplayContainers(phonebook.Containers, level);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
private void DisplayContainers(IFaxPhonebookContainers containers, int level)
{
foreach (IFaxPhonebookContainer container in containers)
{
Console.WriteLine("".PadLeft(level, '-') + container.Name + "(Container Id: " + container.ContainerId.ToString() + ")");
Console.WriteLine("".PadLeft(level, ' ') + "Descriptin: " + container.Description);
Console.WriteLine("".PadLeft(level, ' ') + "Index: " + container.Index.ToString());
DisplayContainers(container.Containers, level + 1);
}
}

private void DisplayPhonebookProperties(IFaxPhonebook phonebook)
{
Console.WriteLine("=======FaxPhonebook=======");

//Display Property FaxPhonebook.Class
Console.WriteLine("FaxPhonebook.Class: " + ((FaxMsg_Object)phonebook.Class).ToString());
//Display Property FaxPhonebook.ConnectionId
Console.WriteLine("FaxPhonebook.ConnectionId: " + phonebook.ConnectionId.ToString());
//Display Property FaxPhonebook.Created
Console.WriteLine("FaxPhonebook.Created: " + phonebook.Created.ToString());
//Display Property FaxPhonebook.FileName
Console.WriteLine("FaxPhonebook.FileName: " + phonebook.FileName.ToString());
//Display Property FaxPhonebook.Index
Console.WriteLine("FaxPhonebook.Index: " + phonebook.Index.ToString());
//Display Property FaxPhonebook.IsOpen
Console.WriteLine("FaxPhonebook.IsOpen: " + phonebook.IsOpen.ToString());
//Display Property FaxPhonebook.IsPendingDelete
Console.WriteLine("FaxPhonebook.IsPendingDelete: " + phonebook.IsPendingDelete.ToString());
//Display Property FaxPhonebook.Modified
Console.WriteLine("FaxPhonebook.Modified: " + phonebook.Modified.ToString());
//Display Property FaxPhonebook.Name
Console.WriteLine("FaxPhonebook.Name: " + phonebook.Name.ToString());
//Display Property FaxPhonebook.Parent
Console.WriteLine("FaxPhonebook.Parent: " + phonebook.Parent.ToString());
//Display Property FaxPhonebook.Session
Console.WriteLine("FaxPhonebook.Session: " + phonebook.Session.ToString());
//Display Property FaxPhonebook.Type
Console.WriteLine("FaxPhonebook.Type: " + ((FaxMsg_PhonebookType)phonebook.Type).ToString());

}
#endregion

#region IDisposable Members

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

#endregion

~PhonebookContainerSampleCode1()
{
Dispose();
}
}
}