Ejemplo n.º 1
0
        public void Rating_ResetUserResourceRating(uint userId, ulong resourceId, RatingBE.Type resourceType, DateTime resetTimestamp)
        {
            Catalog.NewQuery(@" /* RatingDA::Rating_ResetUserResourceRating */
UPDATE  ratings
SET     rating_reset_timestamp = ?RATING_RESET_TIMESTAMP
WHERE   rating_resource_id = ?RATING_RESOURCE_ID
AND     rating_resource_type = ?RATING_RESOURCE_TYPE
AND     rating_user_id = ?RATING_USER_ID
AND     rating_reset_timestamp is NULL;")
            .With("RATING_RESOURCE_ID", resourceId)
            .With("RATING_RESOURCE_TYPE", (byte)resourceType)
            .With("RATING_USER_ID", userId)
            .With("RATING_RESET_TIMESTAMP", resetTimestamp)
            .Execute();

            Rating_Compute(resourceId, resourceType, resetTimestamp);
        }
Ejemplo n.º 2
0
        public RatingComputedBE Rating_GetResourceRating(ulong resourceId, RatingBE.Type resourceType)
        {
            RatingComputedBE rc    = null;
            string           query = @" /* RatingDA::Rating_GetResourceRating */
SELECT *
FROM    ratingscomputed
WHERE   ratingscomputed_resource_id = ?RATINGSCOMPUTED_RESOURCE_ID
AND     ratingscomputed_resource_type = ?RATINGSCOMPUTED_RESOURCE_TYPE;
";

            Catalog.NewQuery(query)
            .With("RATINGSCOMPUTED_RESOURCE_ID", resourceId)
            .With("RATINGSCOMPUTED_RESOURCE_TYPE", (byte)resourceType)
            .Execute(delegate(IDataReader dr) {
                if (dr.Read())
                {
                    rc = Rating_PopulateRatingComputed(dr);
                }
            });
            return(rc);
        }
Ejemplo n.º 3
0
        public RatingBE Rating_GetUserResourceRating(uint userId, ulong resourceId, RatingBE.Type resourceType)
        {
            RatingBE r     = null;
            string   query = @" /* RatingDA::Rating_GetUserResourceRating */
SELECT *
FROM    ratings
WHERE   rating_resource_id = ?RATING_RESOURCE_ID
AND     rating_resource_type = ?RATING_RESOURCE_TYPE
AND     rating_user_id = ?RATING_USER_ID
AND     rating_reset_timestamp is NULL;
";

            Catalog.NewQuery(query)
            .With("RATING_RESOURCE_ID", resourceId)
            .With("RATING_RESOURCE_TYPE", (byte)resourceType)
            .With("RATING_USER_ID", userId)
            .Execute(delegate(IDataReader dr) {
                if (dr.Read())
                {
                    r = Rating_PopulateRating(dr);
                }
            });
            return(r);
        }
Ejemplo n.º 4
0
        private void Rating_Compute(ulong resourceId, RatingBE.Type resourceType, DateTime timestamp)
        {
            int sumRatingScore      = 0;
            int ratingsCount        = 0;
            int trendSumRatingScore = 0;
            int trendRatingsCount   = 0;

            Catalog.NewQuery(@" /* RatingDA::Rating_Compute: determine score */
SELECT  CAST(SUM(rating_score) as UNSIGNED INTEGER) as sum_rating_score, COUNT(*) as count_ratings
FROM    ratings
WHERE   rating_resource_id = ?RATING_RESOURCE_ID
AND     rating_resource_type = ?RATING_RESOURCE_TYPE
AND     rating_reset_timestamp IS NULL;

SELECT  CAST(SUM(rating_score) as UNSIGNED INTEGER) as trend_sum_rating_score, COUNT(*) as trend_count_ratings
FROM    ratings
WHERE   rating_resource_id = ?RATING_RESOURCE_ID
AND     rating_resource_type = ?RATING_RESOURCE_TYPE
AND     rating_reset_timestamp IS NULL
ORDER BY rating_timestamp DESC
LIMIT ?TREND_SIZE;
")
            .With("RATING_RESOURCE_ID", resourceId)
            .With("RATING_RESOURCE_TYPE", (byte)resourceType)
            .With("TREND_SIZE", RATING_TREND_SIZE)
            .Execute(delegate(IDataReader dr) {
                if (dr.Read())
                {
                    sumRatingScore = dr.Read <int>("sum_rating_score", 0);
                    ratingsCount   = dr.Read <int>("count_ratings", 0);
                }
                if (dr.NextResult() && dr.Read())
                {
                    trendSumRatingScore = dr.Read <int>("trend_sum_rating_score", 0);
                    trendRatingsCount   = dr.Read <int>("trend_count_ratings", 0);
                }
            });

            if (ratingsCount > 0 && trendRatingsCount > 0)
            {
                float score      = (float)sumRatingScore / (float)ratingsCount;
                float scoreTrend = (float)trendSumRatingScore / (float)trendRatingsCount;

                Catalog.NewQuery(@" /* RatingDA::Rating_Compute: set computed rating */
REPLACE INTO ratingscomputed
SET     ratingscomputed_resource_id = ?RATING_RESOURCE_ID,
        ratingscomputed_resource_type = ?RATING_RESOURCE_TYPE,
        ratingscomputed_timestamp = ?RATING_TIMESTAMP,
        ratingscomputed_score = ?RATING_SCORE,
        ratingscomputed_count = ?RATING_COUNT,
        ratingscomputed_score_trend = ?RATING_SCORE_TREND;
")
                .With("RATING_RESOURCE_ID", resourceId)
                .With("RATING_RESOURCE_TYPE", (byte)resourceType)
                .With("RATING_TIMESTAMP", timestamp)
                .With("RATING_SCORE", score)
                .With("RATING_COUNT", ratingsCount)
                .With("RATING_SCORE_TREND", scoreTrend)
                .Execute();
            }
            else
            {
                // if no active ratings exist for a page, remove the computed rating
                Catalog.NewQuery(@" /* RatingDA::Rating_Compute: delete computed rating */
DELETE FROM ratingscomputed
WHERE   ratingscomputed_resource_id = ?RATING_RESOURCE_ID
AND     ratingscomputed_resource_type = ?RATING_RESOURCE_TYPE;
")
                .With("RATING_RESOURCE_ID", resourceId)
                .With("RATING_RESOURCE_TYPE", (byte)resourceType)
                .Execute();
            }
        }