103 lines
No EOL
2.3 KiB
C#
103 lines
No EOL
2.3 KiB
C#
using System;
|
|
using System.Collections;
|
|
using Server;
|
|
using Server.Accounting;
|
|
using Server.Engines;
|
|
using Server.Engines.Help;
|
|
|
|
namespace Server.Engines.Reports
|
|
{
|
|
public abstract class BaseInfo : IComparable
|
|
{
|
|
private static TimeSpan m_SortRange;
|
|
|
|
public static TimeSpan SortRange{ get{ return m_SortRange; } set{ m_SortRange = value; } }
|
|
|
|
private string m_Account;
|
|
private string m_Display;
|
|
private PageInfoCollection m_Pages;
|
|
|
|
public string Account{ get{ return m_Account; } set{ m_Account = value; } }
|
|
public PageInfoCollection Pages{ get{ return m_Pages; } set{ m_Pages = value; } }
|
|
|
|
public string Display
|
|
{
|
|
get
|
|
{
|
|
if ( m_Display != null )
|
|
return m_Display;
|
|
|
|
if ( m_Account != null )
|
|
{
|
|
IAccount acct = Accounts.GetAccount( m_Account );
|
|
|
|
if ( acct != null )
|
|
{
|
|
Mobile mob = null;
|
|
|
|
for ( int i = 0; i < acct.Length; ++i )
|
|
{
|
|
Mobile check = acct[i];
|
|
|
|
if ( check != null && (mob == null || check.AccessLevel > mob.AccessLevel) )
|
|
mob = check;
|
|
}
|
|
|
|
if ( mob != null && mob.Name != null && mob.Name.Length > 0 )
|
|
return ( m_Display = mob.Name );
|
|
}
|
|
}
|
|
|
|
return ( m_Display = m_Account );
|
|
}
|
|
}
|
|
|
|
public int GetPageCount( PageResolution res, DateTime min, DateTime max )
|
|
{
|
|
return StaffHistory.GetPageCount( m_Pages, res, min, max );
|
|
}
|
|
|
|
public BaseInfo( string account )
|
|
{
|
|
m_Account = account;
|
|
m_Pages = new PageInfoCollection();
|
|
}
|
|
|
|
public void Register( PageInfo page )
|
|
{
|
|
m_Pages.Add( page );
|
|
}
|
|
|
|
public void Unregister( PageInfo page )
|
|
{
|
|
m_Pages.Remove( page );
|
|
}
|
|
|
|
public int CompareTo( object obj )
|
|
{
|
|
BaseInfo cmp = obj as BaseInfo;
|
|
|
|
int v = cmp.GetPageCount( cmp is StaffInfo ? PageResolution.Handled : PageResolution.None, DateTime.Now - m_SortRange, DateTime.Now )
|
|
- this.GetPageCount( this is StaffInfo ? PageResolution.Handled : PageResolution.None, DateTime.Now - m_SortRange, DateTime.Now );
|
|
|
|
if ( v == 0 )
|
|
v = String.Compare( this.Display, cmp.Display );
|
|
|
|
return v;
|
|
}
|
|
}
|
|
|
|
public class StaffInfo : BaseInfo
|
|
{
|
|
public StaffInfo( string account ) : base( account )
|
|
{
|
|
}
|
|
}
|
|
|
|
public class UserInfo : BaseInfo
|
|
{
|
|
public UserInfo( string account ) : base( account )
|
|
{
|
|
}
|
|
}
|
|
} |