/// <summary>
 /// Build command best suiting filter
 /// </summary>
 private static void BuildCommand(AMP.Data.Sql db, ActivityFilter filter)
 {
     db.ProcedureName = "ActivityByAny";
     if (filter.Type != Activity.Types.Empty)
     {
         db.Parameters.Add("type", filter.Type);
     }
     if (filter.After != Tau.MinValue)
     {
         db.Parameters.Add("after", filter.After.ToDateTime());
     }
     if (filter.Before != Tau.MaxValue)
     {
         db.Parameters.Add("before", filter.Before.ToDateTime());
     }
     if (filter.IpAddress != null)
     {
         db.Parameters.Add("ipAddress", filter.IpAddress.ToInt32());
     }
     if (filter.User != null)
     {
         db.Parameters.Add("userID", filter.User.ID);
     }
     if (filter.Entity != null)
     {
         db.Parameters.Add("entityID", filter.Entity.ID);
     }
 }
        /// <summary>
        /// Load activities from DB
        /// </summary>
        public static ActivityCollection Load(ActivityFilter filter)
        {
            ActivityCollection activities = new ActivityCollection();
            Activity           a;

            Data.Sql    db = new Data.Sql();
            Data.Reader reader;

            BuildCommand(db, filter);

            try {
                reader = db.GetReader();
            } catch (System.Exception ex) {
                AMP.Exception.Log(ex);
                return(null);
            }

            while (reader.Read())
            {
                a           = new Activity();
                a.Type      = (Activity.Types)reader.GetInt32("Type");
                a.IpAddress = reader.GetIpAddress("IpAddress");
                a.Note      = reader.GetString("Note");
                a.On        = reader.GetTau("HappenedOn");
                activities.Add(a);
            }
            reader.Close();
            db.Finish(true);

            return(activities);
        }