示例#1
0
        /// <summary>
        /// Returns matching children for grades and issues
        /// </summary>
        /// <returns></returns>
        public List <Guid> GetMatchingChildrenIds(Domain.Membership.Member member)
        {
            var matches = new List <Guid>();

            // Require parent interests and child
            if (member != null && member.Children.Count > 0)
            {
                foreach (var child in member.Children)
                {
                    // Child must have grade
                    if (child.Grades.Count == 0)
                    {
                        continue;
                    }

                    bool gradeMatch = false;
                    bool issueMatch = false;

                    var childGrade    = child.Grades.FirstOrDefault();
                    var articleGrades = this.Grades.ListItems.Select(i => i.ID.Guid).ToList();

                    // Unmapped or All grades is considered a match in addition to child's grade
                    if (!articleGrades.Any() ||
                        articleGrades.Contains(Guid.Parse(Constants.ArticleTags.AllChildGrades)) ||
                        articleGrades.Contains(childGrade.Key))
                    {
                        gradeMatch = true;
                    }

                    if (child.Issues.Count == 0)
                    {
                        issueMatch = true;
                    }
                    else
                    {
                        var childIssues   = child.Issues.Select(i => i.Key).ToList();
                        var articleIssues = this.Issues.ListItems.Select(i => i.ID.Guid).ToList();

                        if (articleIssues.Contains(Guid.Parse(Constants.ArticleTags.AllChildIssues)))
                        {
                            issueMatch = true;
                        }
                        else
                        {
                            issueMatch = childIssues.Intersect(articleIssues).ToList().Count() > 0;
                        }
                    }

                    if (gradeMatch && issueMatch)
                    {
                        matches.Add(child.ChildId);
                    }
                }
            }

            return(matches);
        }
示例#2
0
        public bool HasMatchingParentInterest(Domain.Membership.Member member)
        {
            if (member != null && member.Interests.Count > 0)
            {
                List <Guid> mappedInterests = this.Topic.ListItems.Select(i => i.ID.Guid).ToList();
                List <Guid> parentInterests = member.Interests.Select(i => i.Key).ToList();

                return(parentInterests.Intersect(mappedInterests).ToList().Count() > 0);
            }

            return(false);
        }
示例#3
0
        /// <summary>
        /// Returns matching children for grades and issues
        /// </summary>
        /// <returns></returns>
        public List <Guid> GetMatchingChildrenIds(Domain.Membership.Member member)
        {
            var matches = new List <Guid>();

            // Require parent interests and child
            if (member != null && member.Children.Count > 0)
            {
                foreach (var child in member.Children)
                {
                    // Child must have grade
                    if (child.Grades.Count == 0)
                    {
                        continue;
                    }

                    // Handle IEP Negative child and article tagged for IEP
                    if (child.IEPStatus == Guid.Parse(Constants.ChildEvaluation.StatusIEPNo) &&
                        OtherApplicableEvaluations.ListItems
                        .Where(i => i.ID == Sitecore.Data.ID.Parse(Constants.ArticleTags.EvaluatedIEP))
                        .FirstOrDefault() != null)
                    {
                        continue;
                    }


                    bool gradeMatch = false;
                    bool issueMatch = false;

                    var childGrade    = child.Grades.FirstOrDefault();
                    var articleGrades = ChildGrades.ListItems.Select(i => i.ID.Guid).ToList();

                    // Unmapped or All grades is considered a match in addition to child's grade
                    if (!articleGrades.Any() ||
                        articleGrades.Contains(Guid.Parse(Constants.ArticleTags.AllChildGrades)) ||
                        articleGrades.Contains(childGrade.Key))
                    {
                        gradeMatch = true;
                    }

                    if (child.Issues.Count == 0)
                    {
                        issueMatch = true;
                    }
                    else
                    {
                        var childIssues   = child.Issues.Select(i => i.Key).ToList();
                        var articleIssues = ChildIssues.ListItems.Select(i => i.ID.Guid).ToList();

                        if (articleIssues.Contains(Guid.Parse(Constants.ArticleTags.AllChildIssues)))
                        {
                            issueMatch = true;
                        }
                        else
                        {
                            issueMatch = childIssues.Intersect(articleIssues).ToList().Count() > 0;
                        }
                    }

                    if (gradeMatch && issueMatch)
                    {
                        matches.Add(child.ChildId);
                    }
                }
            }

            return(matches);
        }