using System;
using FACSys.AFM;

namespace FACSysAFMSampleCodes
{
/// <summary>
/// SThe FaxPhonebookEntries collection object contains FaxPhonebookEntry objects for each entry within its parent FaxPhonebookContainer object. Implements IFaxPhonebookEntriess from FACSys.AFM, IDisposable and IEnumerable from .Net Framework SDK. It uses an ArrayList to host FaxPhonebookEntry objects.
/// </summary>
public class PhonebookSampleCode1 : ISampleCode
{
private FaxSession m_Session;
public PhonebookSampleCode1()
{
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());


//Print out all users' properties
foreach (IFaxPhonebook phonebook in phonebooks)
{
DisplayPhonebookProperties(phonebook);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}

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

~PhonebookSampleCode1()
{
Dispose();
}
}
}