예제 #1
0
        /// <summary>
        /// Find all changes matching the filters provided.
        /// </summary>
        /// <param name="filter">Find all changes matching the filters provided.</param>
        /// <returns></returns>
        /// <remarks></remarks>
        public static List <ChangeLogItem> LoadCollection(ChangeLogItemFilter filter)
        {
            List <ChangeLogItem> results = new List <ChangeLogItem>();
            SqlCommand           cmd     = new SqlCommand();
            StringBuilder        select  = new StringBuilder(1000);

            if (filter.ID != null)
            {
                select.Append("CLM.change_log_master_id=@change_log_master_id");
                cmd.Parameters.Add(new SqlParameter("@change_log_master_id", SqlDbType.Int)
                {
                    Value = filter.ID
                });
            }

            if (filter.OwnerID != null)
            {
                if ((select.Length > 0))
                {
                    select.Append(" AND ");
                }
                select.Append("CLM.owner_id=@owner_id");
                cmd.Parameters.Add(new SqlParameter("@owner_id", SqlDbType.Int)
                {
                    Value = filter.OwnerID
                });
            }

            if (filter.OwnerName != null)
            {
                if ((select.Length > 0))
                {
                    select.Append(" AND ");
                }
                select.Append("CLM.owner_name=@owner_name");
                cmd.Parameters.Add(new SqlParameter("@owner_name", SqlDbType.NVarChar)
                {
                    Value = filter.OwnerName
                });
            }

            if (filter.Type != null)
            {
                if ((select.Length > 0))
                {
                    select.Append(" AND ");
                }
                select.Append("CLM.log_type=@log_type");
                cmd.Parameters.Add(new SqlParameter("@log_type", SqlDbType.NVarChar)
                {
                    Value = filter.Type
                });
            }

            if (filter.Timestamp != null)
            {
                if ((select.Length > 0))
                {
                    select.Append(" AND ");
                }
                select.Append("CLM.timestamp=@timestamp");
                cmd.Parameters.Add(new SqlParameter("@timestamp", SqlDbType.DateTime)
                {
                    Value = filter.Timestamp
                });
            }

            if (filter.PropertyName != null)
            {
                if ((select.Length > 0))
                {
                    select.Append(" AND ");
                }
                select.Append("CLM.property_name=@property_name");
                cmd.Parameters.Add(new SqlParameter("@property_name", SqlDbType.NVarChar)
                {
                    Value = filter.PropertyName
                });
            }

            select.Insert(0, "SELECT * FROM Change_Log_Master CLM {0}");

            using (SqlConnection cn = new SqlConnection(HConfig.DBConnectionString))
            {
                using (DataTable dt = HDatabase.FillDataTable(cn, cmd))
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        results.Add(new ChangeLogItem(dr));
                    }
                }
            }

            return(results);
        }
예제 #2
0
        /// <summary>
        /// Find a single change that matches the filters provided.
        /// </summary>
        /// <param name="filter">Find a single changes with the given filter parameters.</param>
        /// <returns></returns>
        /// <remarks></remarks>
        public static ChangeLogItem Load(ChangeLogItemFilter filter)
        {
            List <ChangeLogItem> lResults = ChangeLogItem.LoadCollection(filter);

            return(lResults.Count == 1 ? lResults[0] : null);
        }