예제 #1
0
        protected string GetImpressionList(int userID)
        {
            ImpressionTypeCollection impressions = m_ImpressionData[userID] as ImpressionTypeCollection;

            if (impressions != null)
            {
                return(StringUtil.Join(impressions, ", "));
            }

            return(string.Empty);
        }
예제 #2
0
        public override Hashtable GetImressionsTypesForUsers(int[] userIDs, int top)
        {
            using (SqlQuery db = new SqlQuery())
            {
                StringBuilder sb = new StringBuilder();

                for (int i = 0; i < userIDs.Length; i++)
                {
                    sb.Append("SELECT TOP (@Top) A.*, B.UserID FROM bx_ImpressionTypes A RIGHT JOIN bx_Impressions B ON A.TypeID = B.TypeID WHERE B.UserID = ").Append(userIDs[i]).AppendLine("");

                    if (i < userIDs.Length - 1)
                    {
                        sb.AppendLine("UNION");
                    }
                }

                sb.Append(" ORDER BY B.UserID");

                db.CommandText = sb.ToString();

                db.CreateTopParameter("@Top", top);

                using (XSqlDataReader reader = db.ExecuteReader())
                {
                    Hashtable result = new Hashtable();

                    ImpressionTypeCollection types = null;

                    int lastUserId = -1;

                    while (reader.Read())
                    {
                        int userID = reader.Get <int>("UserID");

                        ImpressionType type = new ImpressionType(reader);

                        if (userID != lastUserId)
                        {
                            lastUserId = userID;

                            types = new ImpressionTypeCollection();

                            result.Add(userID, types);
                        }

                        types.Add(type);
                    }

                    return(result);
                }
            }
        }
예제 #3
0
        public override ImpressionTypeCollection GetImpressionTypesForUse(int targetUserID, int usrCount, int sysCount)
        {
            using (SqlQuery db = new SqlQuery())
            {
                db.CommandText = @"
DECLARE @TempTable table(TypeID int);

INSERT INTO @TempTable
SELECT TOP (@UsrCount1) TypeID
FROM bx_Impressions WHERE UserID = @TargetUserID ORDER BY UpdateDate DESC;

SELECT * FROM bx_ImpressionTypes C RIGHT JOIN @TempTable A ON C.TypeID = A.TypeID; 

DECLARE @Count2 AS int;
DECLARE @Count3 AS int;

SET @Count2 = @UsrCount - (SELECT COUNT(*) FROM @TempTable) + @SysCount;

IF @Count2 > 0 BEGIN

    EXEC(
    'SELECT TOP ' + @Count2 + ' *, (SELECT TOP 1 C.UpdateDate FROM bx_Impressions C WHERE C.TypeID = A.TypeID ORDER BY C.UpdateDate DESC) AS UpdateDate FROM bx_ImpressionTypes A WHERE A.TypeID IN(SELECT B.TypeID FROM bx_Impressions B WHERE B.UserID != ' + @TargetUserID + ') ORDER BY UpdateDate'
    );

END";

                db.CreateTopParameter("@UsrCount1", usrCount);
                db.CreateParameter <int>("@UsrCount", usrCount, SqlDbType.Int);
                db.CreateParameter <int>("@SysCount", sysCount, SqlDbType.Int);

                db.CreateParameter <int>("@TargetUserID", targetUserID, SqlDbType.Int);

                using (XSqlDataReader reader = db.ExecuteReader())
                {
                    ImpressionTypeCollection result = new ImpressionTypeCollection(reader);

                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            result.Add(new ImpressionType(reader));
                        }
                    }

                    return(result);
                }
            }
        }
예제 #4
0
        public override ImpressionTypeCollection GetImpressionTypesForUse(int targetUserID, int usrCount, int sysCount)
        {
            using (SqlQuery db = new SqlQuery())
            {
                db.CommandText = @"
DECLARE @TempTable table(TypeID int);

INSERT INTO @TempTable
SELECT TOP (@UsrCount1) TypeID
FROM bx_Impressions WHERE UserID = @TargetUserID ORDER BY UpdateDate DESC;

SELECT * FROM bx_ImpressionTypes C RIGHT JOIN @TempTable A ON C.TypeID = A.TypeID; 

DECLARE @Count2 AS int;
DECLARE @Count3 AS int;

SET @Count2 = @UsrCount - (SELECT COUNT(*) FROM @TempTable) + @SysCount;

IF @Count2 > 0 BEGIN

    EXEC(
    'SELECT TOP ' + @Count2 + ' *, (SELECT TOP 1 C.UpdateDate FROM bx_Impressions C WHERE C.TypeID = A.TypeID ORDER BY C.UpdateDate DESC) AS UpdateDate FROM bx_ImpressionTypes A WHERE A.TypeID IN(SELECT B.TypeID FROM bx_Impressions B WHERE B.UserID != ' + @TargetUserID + ') ORDER BY UpdateDate'
    );

END";

                db.CreateTopParameter("@UsrCount1", usrCount);
                db.CreateParameter<int>("@UsrCount", usrCount, SqlDbType.Int);
                db.CreateParameter<int>("@SysCount", sysCount, SqlDbType.Int);

                db.CreateParameter<int>("@TargetUserID", targetUserID, SqlDbType.Int);

                using (XSqlDataReader reader = db.ExecuteReader())
                {
                    ImpressionTypeCollection result = new ImpressionTypeCollection(reader);

                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            result.Add(new ImpressionType(reader));
                        }
                    }

                    return result;
                }
            }
        }
예제 #5
0
        public override ImpressionTypeCollection GetImpressionTypesForAdmin(AdminImpressionTypeFilter filter, int pageNumber)
        {
            using (SqlQuery query = new SqlQuery())
            {
                query.Pager.TableName = "[bx_ImpressionTypes]";

                if (filter.Order == AdminImpressionTypeFilter.OrderBy.TypeID)
                {
                    query.Pager.SortField = "TypeID";
                }
                else
                {
                    query.Pager.SortField = "RecordCount";

                    query.Pager.PrimaryKey = "TypeID";
                }
                query.Pager.IsDesc      = filter.IsDesc;
                query.Pager.PageNumber  = pageNumber;
                query.Pager.PageSize    = filter.PageSize;
                query.Pager.SelectCount = true;

                query.Pager.Condition = BuildCondition(query, filter);

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    ImpressionTypeCollection types = new ImpressionTypeCollection(reader);

                    if (reader.NextResult())
                    {
                        if (reader.Read())
                        {
                            types.TotalRecords = reader.Get <int>(0);
                        }
                    }

                    return(types);
                }
            }
        }
예제 #6
0
        public override bool BeforeExecute(int operatorUserID, string param, ref long offset, ref int totalCount, out string title)
        {
            StringList paramData = StringList.Parse(param);

            AdminImpressionTypeFilter filter = AdminImpressionTypeFilter.Parse(paramData[0]);

            AuthUser operatorUser = UserBO.Instance.GetAuthUser(operatorUserID);

            ImpressionTypeCollection types = ImpressionBO.Instance.GetImpressionTypesForAdmin(operatorUser, filter, 1);

            if (types == null || types.Count == 0)
            {
                title = "没有数据可以删除";
                return(true);
            }

            totalCount = types.TotalRecords;

            title = "将删除 " + totalCount + " 条好友印象描述";

            return(true);
        }
예제 #7
0
        public override Hashtable GetImressionsTypesForUsers(int[] userIDs, int top)
        {
            using (SqlQuery db = new SqlQuery())
            {
                StringBuilder sb = new StringBuilder();

                for (int i = 0; i < userIDs.Length; i++)
                {
                    sb.Append("SELECT TOP (@Top) A.*, B.UserID FROM bx_ImpressionTypes A RIGHT JOIN bx_Impressions B ON A.TypeID = B.TypeID WHERE B.UserID = ").Append(userIDs[i]).AppendLine("");

                    if (i < userIDs.Length - 1)
                        sb.AppendLine("UNION");
                }

                sb.Append(" ORDER BY B.UserID");

                db.CommandText = sb.ToString();

                db.CreateTopParameter("@Top", top);

                using (XSqlDataReader reader = db.ExecuteReader())
                {
                    Hashtable result = new Hashtable();

                    ImpressionTypeCollection types = null;

                    int lastUserId = -1;

                    while (reader.Read())
                    {
                        int userID = reader.Get<int>("UserID");

                        ImpressionType type = new ImpressionType(reader);

                        if (userID != lastUserId)
                        {
                            lastUserId = userID;

                            types = new ImpressionTypeCollection();

                            result.Add(userID, types);
                        }

                        types.Add(type);
                    }

                    return result;
                }
            }
        }
예제 #8
0
        public override ImpressionTypeCollection GetImpressionTypesForAdmin(AdminImpressionTypeFilter filter, int pageNumber)
        {
            using (SqlQuery query = new SqlQuery())
            {
                query.Pager.TableName = "[bx_ImpressionTypes]";

                if (filter.Order == AdminImpressionTypeFilter.OrderBy.TypeID)
                    query.Pager.SortField = "TypeID";
                else
                {
                    query.Pager.SortField = "RecordCount";

                    query.Pager.PrimaryKey = "TypeID";
                }
                query.Pager.IsDesc = filter.IsDesc;
                query.Pager.PageNumber = pageNumber;
                query.Pager.PageSize = filter.PageSize;
                query.Pager.SelectCount = true;

                query.Pager.Condition = BuildCondition(query, filter);

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    ImpressionTypeCollection types = new ImpressionTypeCollection(reader);

                    if (reader.NextResult())
                    {
                        if (reader.Read())
                        {
                            types.TotalRecords = reader.Get<int>(0);
                        }
                    }

                    return types;
                }
            }
        }