コード例 #1
0
        public CategorialValue GetEducationLevelInformationActiveUsers(int vkGroupId, AudienceFilteringResult result)
        {
            var educationInfo = new CategorialValue();

            foreach (var member in result.Members)
            {
                switch (member.Education)
                {
                case EducationLevel.Unknown:
                    educationInfo.CategoryA++;
                    break;

                case EducationLevel.Middle:
                    educationInfo.CategoryB++;
                    break;

                case EducationLevel.UncompletedHigher:
                    educationInfo.CategoryC++;
                    break;

                case EducationLevel.Higher:
                    educationInfo.CategoryD++;
                    break;

                case EducationLevel.PhD:
                    educationInfo.CategoryE++;
                    break;
                }
            }

            return(educationInfo);
        }
コード例 #2
0
        public CategorialValue LikesRepostCommentDiagramData(int vkGroupId, AudienceFilteringResult filteringResult)
        {
            var    result  = new CategorialValue();
            string userIds = filteringResult.IsAllMembers
                ? string.Empty
                : QueryArrayBuilder.GetString(filteringResult.Members.Select(m => m.VkMemberId).ToArray());

            using (IDataGateway dataGateway = this.dataGatewayProvider.GetDataGateway())
            {
                string creatorIdClause = filteringResult.IsAllMembers
                    ? string.Empty
                    : string.Format("AND creatorid = ANY({0})", userIds);

                string memberIdClause = filteringResult.IsAllMembers
                    ? string.Empty
                    : string.Format("AND vkmemberid = ANY({0})", userIds);

                string query = string.Format("SELECT COUNT(*)::integer FROM postcomment WHERE vkgroupid = {0} {1}", vkGroupId, creatorIdClause);
                result.CategoryA = dataGateway.Connection.Query <int>(query).SingleOrDefault();

                query            = string.Format("SELECT COUNT(*)::integer FROM membershare WHERE vkgroupid = {0} {1} AND itemtype = {2}", vkGroupId, memberIdClause, (int)LikeShareType.Post);
                result.CategoryB = dataGateway.Connection.Query <int>(query).SingleOrDefault();

                query            = string.Format("SELECT COUNT(*)::integer FROM memberlike WHERE vkgroupid = {0} {1} AND itemtype = {2}", vkGroupId, memberIdClause, (int)LikeShareType.Post);
                result.CategoryC = dataGateway.Connection.Query <int>(query).SingleOrDefault();

                query            = string.Format("SELECT COUNT(*)::integer FROM post WHERE vkgroupid = {0} {1}", vkGroupId, creatorIdClause);
                result.CategoryD = dataGateway.Connection.Query <int>(query).SingleOrDefault();
            }

            return(result);
        }
コード例 #3
0
ファイル: MetricsService.cs プロジェクト: Ishitori/Palantir
 public AgeInformation GetAgeInformation(int projectId)
 {
     using (this.unitOfWorkProvider.CreateUnitOfWork())
     {
         CategorialValue categories = this.statisticsProvider.GetAgeInformation(projectId);
         return(AgeInformation.Create(categories));
     }
 }
コード例 #4
0
 public static TypeOfContentDataInfo Create(CategorialValue categories)
 {
     return(new TypeOfContentDataInfo()
     {
         Text = categories.CategoryA,
         Video = categories.CategoryB,
         Photo = categories.CategoryC,
         Link = categories.CategoryD
     });
 }
コード例 #5
0
        public static GenderInformation Create(CategorialValue categories)
        {
            GenderInformation info = new GenderInformation();

            info.Males   = categories.CategoryA;
            info.Females = categories.CategoryB;
            info.Unknown = categories.CategoryC;

            return(info);
        }
コード例 #6
0
        public GenderInformation GetGenderInformationActiveUsers(int projectId, long filterCode)
        {
            using (this.unitOfWorkProvider.CreateUnitOfWork())
            {
                var vkGroup         = this.projectRepository.GetVkGroup(projectId);
                var filteringResult = this.GetFilteringResult(vkGroup, filterCode);

                CategorialValue categories = this.searcher.GetGenderInformationActiveUsers(vkGroup.Id, filteringResult);
                return(GenderInformation.Create(categories));
            }
        }
コード例 #7
0
        public TypeOfContentDataInfo GetTypeOfContentDiagramData(int projectId, long filterCode)
        {
            using (this.unitOfWorkProvider.CreateUnitOfWork())
            {
                var vkGroup         = this.projectRepository.GetVkGroup(projectId);
                var filteringResult = this.GetFilteringResult(vkGroup, filterCode);

                CategorialValue diagramData = this.searcher.GetTypeOfContentDiagramData(vkGroup.Id, filteringResult);
                return(TypeOfContentDataInfo.Create(diagramData));
            }
        }
コード例 #8
0
        public CategorialValue GetTypeOfContentDiagramData(int vkGroupId, AudienceFilteringResult filteringResult)
        {
            var    result  = new CategorialValue();
            string userIds = filteringResult.IsAllMembers
                ? string.Empty
                : QueryArrayBuilder.GetString(filteringResult.Members.Select(m => m.VkMemberId).ToArray());

            int postCount;
            int photoCount;
            int videoCount;

            using (IDataGateway dataGateway = this.dataGatewayProvider.GetDataGateway())
            {
                string creatorIdClause = filteringResult.IsAllMembers
                    ? string.Empty
                    : string.Format("AND creatorid = ANY({0})", userIds);

                string memberIdClause = filteringResult.IsAllMembers
                    ? string.Empty
                    : string.Format("AND vkmemberid = ANY({0})", userIds);

                string query = string.Format("SELECT COALESCE(SUM(sub.count)::integer, 0) FROM (SELECT COUNT(*) FROM postcomment WHERE vkgroupid = {0} {1} GROUP BY vkpostid) AS sub", vkGroupId, creatorIdClause);
                postCount = dataGateway.Connection.Query <int>(query).SingleOrDefault();

                query      = string.Format("SELECT COALESCE(SUM(sub.count)::integer, 0) FROM (SELECT COUNT(*) FROM memberlike WHERE vkgroupid = {0} {1} AND itemtype = 1 GROUP BY itemid) AS sub", vkGroupId, memberIdClause);
                postCount += dataGateway.Connection.Query <int>(query).SingleOrDefault();

                query      = string.Format("SELECT COALESCE(SUM(sub.count)::integer, 0) FROM (SELECT COUNT(*) FROM membershare WHERE vkgroupid = {0} {1} AND itemtype = 1 GROUP BY itemid) AS sub", vkGroupId, memberIdClause);
                postCount += dataGateway.Connection.Query <int>(query).SingleOrDefault();

                query = string.Format("SELECT COALESCE(SUM(sub.count)::integer, 0) FROM (SELECT COUNT(*) FROM videocomment WHERE vkgroupid = {0} {1} GROUP BY vkvideoid) AS sub", vkGroupId, creatorIdClause);
                var nullableVideoCount = dataGateway.Connection.Query <int?>(query).SingleOrDefault();
                videoCount = nullableVideoCount.HasValue ? (int)nullableVideoCount : 0;

                query       = string.Format("SELECT COALESCE(SUM(sub.count)::integer, 0) FROM (SELECT COUNT(*) FROM memberlike WHERE vkgroupid = {0} {1} AND itemtype = 4 GROUP BY itemid) AS sub", vkGroupId, memberIdClause);
                videoCount += dataGateway.Connection.Query <int>(query).SingleOrDefault();

                query       = string.Format("SELECT COALESCE(SUM(sub.count)::integer, 0) FROM (SELECT COUNT(*) FROM membershare WHERE vkgroupid = {0} {1} AND itemtype = 4 GROUP BY itemid) AS sub", vkGroupId, memberIdClause);
                videoCount += dataGateway.Connection.Query <int>(query).SingleOrDefault();

                query      = string.Format("SELECT COALESCE(SUM(sub.count)::integer, 0) FROM (SELECT COUNT(*) FROM memberlike WHERE vkgroupid = {0} {1} AND itemtype = 3 GROUP BY itemid) AS sub", vkGroupId, memberIdClause);
                photoCount = dataGateway.Connection.Query <int>(query).SingleOrDefault();

                query       = string.Format("SELECT COALESCE(SUM(sub.count)::integer, 0) FROM (SELECT COUNT(*) FROM membershare WHERE vkgroupid = {0} {1} AND itemtype = 3 GROUP BY itemid) AS sub", vkGroupId, memberIdClause);
                photoCount += dataGateway.Connection.Query <int>(query).SingleOrDefault();
            }

            result.CategoryA = postCount;
            result.CategoryB = videoCount;
            result.CategoryC = photoCount;

            return(result);
        }
コード例 #9
0
        public GenderInformation GetGenderInformationActiveUsers(int projectId, IList <ActiveUserInfo> users)
        {
            IList <MemberMainInfo> members = this.ToMemberMainInfo(users);

            using (this.unitOfWorkProvider.CreateUnitOfWork())
            {
                var vkGroup         = this.projectRepository.GetVkGroup(projectId);
                var filteringResult = new AudienceFilteringResult(members);

                CategorialValue categories = this.searcher.GetGenderInformationActiveUsers(vkGroup.Id, filteringResult);
                return(GenderInformation.Create(categories));
            }
        }
コード例 #10
0
        public static EducationLevelInformation Create(CategorialValue categories)
        {
            var info = new EducationLevelInformation
            {
                Unknown           = categories.CategoryA,
                Middle            = categories.CategoryB,
                UncompletedHigher = categories.CategoryC,
                Higher            = categories.CategoryD,
                PhD = categories.CategoryE
            };

            return(info);
        }
コード例 #11
0
        /*public int Photos { get; set; }
        *  public int Videos { get; set; }*/

        public static LRCDiagramDataInfo Create(CategorialValue categories)
        {
            return(new LRCDiagramDataInfo()
            {
                Comments = categories.CategoryA,
                Reposts = categories.CategoryB,
                Likes = categories.CategoryC,
                Posts = categories.CategoryD,

                /*Photos = categories.CategoryE,
                 * Videos = categories.CategoryF*/
            });
        }
コード例 #12
0
ファイル: AgeInformation.cs プロジェクト: Ishitori/Palantir
        public static AgeInformation Create(CategorialValue categories)
        {
            AgeInformation ageInfo = new AgeInformation();

            ageInfo.Below14        = categories.CategoryA;
            ageInfo.Upper15Below24 = categories.CategoryB;
            ageInfo.Upper25Below34 = categories.CategoryC;
            ageInfo.Upper35Below44 = categories.CategoryD;
            ageInfo.Upper45Below54 = categories.CategoryE;
            ageInfo.Upper55        = categories.CategoryF;
            ageInfo.Unknown        = categories.CategoryG;

            return(ageInfo);
        }
コード例 #13
0
        public CategorialValue GroupByBirthday(IEnumerable <BirthDate> birthdays, bool withoutMonthAndDay = false)
        {
            CategorialValue value = new CategorialValue();

            foreach (var member in birthdays)
            {
                int age = !withoutMonthAndDay?member.GetAge() : member.GetAgeWithoutMonthAndDay();

                if (age >= 1 && age < 14)
                {
                    value.CategoryA++;
                }
                else if (age >= 15 && age <= 24)
                {
                    value.CategoryB++;
                }
                else if (age >= 25 && age <= 34)
                {
                    value.CategoryC++;
                }
                else if (age >= 35 && age <= 44)
                {
                    value.CategoryD++;
                }
                else if (age >= 45 && age <= 54)
                {
                    value.CategoryE++;
                }
                else if (age >= 55)
                {
                    value.CategoryF++;
                }
                else
                {
                    value.CategoryG++;
                }
            }

            return(value);
        }
コード例 #14
0
        public CategorialValue GetGenderInformationActiveUsers(int vkGroupId, AudienceFilteringResult result)
        {
            var genderInfo = new CategorialValue();

            foreach (var member in result.Members)
            {
                switch (member.Gender)
                {
                case Gender.Male:
                    genderInfo.CategoryA++;
                    break;

                case Gender.Female:
                    genderInfo.CategoryB++;
                    break;

                case Gender.Unknown:
                    genderInfo.CategoryC++;
                    break;
                }
            }

            return(genderInfo);
        }