Ejemplo n.º 1
0
        protected override IDictionary <string, StudentAssessmentDim> GetStudentAssessments(string schoolKey)
        {
            IDictionary <string, StudentAssessmentDim> studentAssessmentsDictionary;

            string cacheKey = "StudentSchoolAssessments" + schoolKey + " MetricId:" + GetMetricId();

            if (_memoryCache.TryGetValue(cacheKey, out studentAssessmentsDictionary))
            {
                return(studentAssessmentsDictionary);
            }
            studentAssessmentsDictionary = new Dictionary <string, StudentAssessmentDim>();

            var schoolMinMaxDateDim = _context.SchoolMinMaxDateDims.Where(s => s.SchoolKey.Equals(schoolKey.ToString())).FirstOrDefault();

            if (schoolMinMaxDateDim == null)
            {
                return(studentAssessmentsDictionary);
            }

            var studentAssessmentsDbRecords = GetStudentAssessmentsDbRecords(schoolKey);

            foreach (var studentAssessmentDbRecord in studentAssessmentsDbRecords)
            {
                if (studentAssessmentDbRecord.Value.Assessments.Any())
                {
                    List <StudentAssessmentDim> studentAssessmentDims = new List <StudentAssessmentDim>();
                    foreach (var assessmentDim in studentAssessmentDbRecord.Value.Assessments)
                    {
                        if (assessmentDim.AdministrationDate > schoolMinMaxDateDim.MaxDate)
                        {
                            continue;
                        }

                        if (!(AcademicSubjects.Contains(assessmentDim.AcademicSubject) && AssessmentCategories.Contains(assessmentDim.AssessmentCategory)))
                        {
                            continue;
                        }

                        if (!studentAssessmentDbRecord.Value.ScoreResults.Any())
                        {
                            continue;
                        }
                        var scoreResults = studentAssessmentDbRecord.Value.ScoreResults.Where(sr => sr.StudentAssessmentIdentifier.Equals(assessmentDim.StudentAssessmentIdentifier, StringComparison.Ordinal) &&
                                                                                              sr.AssessmentIdentifier.Equals(assessmentDim.AssessmentIdentifier, StringComparison.Ordinal) &&
                                                                                              sr.Namespace.Equals(assessmentDim.Namespace, StringComparison.Ordinal) &&
                                                                                              sr.ReportingMethod.Equals(AssessmentReportingMethodType, StringComparison.Ordinal))
                                           .ToList();
                        if (!scoreResults.Any())
                        {
                            continue;
                        }

                        assessmentDim.ScoreResults = scoreResults;
                        studentAssessmentDims.Add(assessmentDim);
                    }
                    if (studentAssessmentDims.Any())
                    {
                        var mostRecentAssessment = studentAssessmentDims.Where(assessment => string.IsNullOrEmpty(assessment.ReasonNotTested))
                                                   .OrderByDescending(assessment => assessment.AdministrationDate).FirstOrDefault();
                        if (mostRecentAssessment != null)
                        {
                            studentAssessmentsDictionary[mostRecentAssessment.StudentKey] = mostRecentAssessment;
                        }
                    }
                    else
                    {
                        studentAssessmentsDictionary[studentAssessmentDbRecord.Key] = null;
                    }
                }
            }

            var cacheEntryOptions = new MemoryCacheEntryOptions()
                                    .SetSize(200)//Size amount
                                    .SetPriority(CacheItemPriority.High)
                                    .SetSlidingExpiration(TimeSpan.FromMinutes(15))
                                    .SetAbsoluteExpiration(TimeSpan.FromMinutes(60));

            _memoryCache.Set(cacheKey, studentAssessmentsDictionary, cacheEntryOptions);

            return(studentAssessmentsDictionary);
        }
Ejemplo n.º 2
0
        protected override IDictionary <string, StudentAssessmentDim> GetStudentAssessments(string schoolKey)
        {
            IDictionary <string, StudentAssessmentDim> studentAssessmentsDictionary;

            string cacheKey = "StudentSchoolAssessments" + schoolKey + "MetricId:" + GetMetricId();

            if (_memoryCache.TryGetValue(cacheKey, out studentAssessmentsDictionary))
            {
                return(studentAssessmentsDictionary);
            }
            studentAssessmentsDictionary = new Dictionary <string, StudentAssessmentDim>();

            var schoolDays = StudentDataRepository.GetSchoolCalendarDays(schoolKey).Select(calendarDay => calendarDay.Date).ToList();

            var schoolMinMaxDateDim = _context.SchoolMinMaxDateDims.Where(s => s.SchoolKey.Equals(schoolKey.ToString())).FirstOrDefault();

            if (schoolMinMaxDateDim == null)
            {
                return(studentAssessmentsDictionary);
            }

            var studentAssessmentsDbRecords = GetStudentAssessmentsDbRecords(schoolKey);

            foreach (var studentAssessmentDbRecord in studentAssessmentsDbRecords)
            {
                if (studentAssessmentDbRecord.Value.Assessments.Any())
                {
                    StudentAssessmentDim studentAssessment = new StudentAssessmentDim {
                        AssessmentCorrectItems = 0, AssessmentTotalItems = 0
                    };
                    foreach (var assessmentDim in studentAssessmentDbRecord.Value.Assessments)
                    {
                        if (assessmentDim.AdministrationDate > schoolMinMaxDateDim.MaxDate)
                        {
                            continue;
                        }

                        if (!schoolDays.Contains(assessmentDim.AdministrationDate))
                        {
                            continue;
                        }

                        if (!(AcademicSubjects.Contains(assessmentDim.AcademicSubject) && AssessmentCategories.Contains(assessmentDim.AssessmentCategory)))
                        {
                            continue;
                        }

                        if (!studentAssessmentDbRecord.Value.ScoreResults.Any())
                        {
                            continue;
                        }
                        if (!studentAssessmentDbRecord.Value.AssessmentItems.Any())
                        {
                            continue;
                        }
                        var assessmentItems = studentAssessmentDbRecord.Value.AssessmentItems.Where(sr => sr.StudentAssessmentIdentifier.Equals(assessmentDim.StudentAssessmentIdentifier, StringComparison.Ordinal) &&
                                                                                                    sr.AssessmentIdentifier.Equals(assessmentDim.AssessmentIdentifier, StringComparison.Ordinal) &&
                                                                                                    sr.Namespace.Equals(assessmentDim.Namespace, StringComparison.Ordinal))
                                              .ToList();
                        if (!assessmentItems.Any())
                        {
                            continue;
                        }

                        studentAssessment.AssessmentTotalItems   += assessmentItems.Count();
                        studentAssessment.AssessmentCorrectItems += assessmentItems.Where(ai => AssessmentItemResults.Contains(ai.AssessmentItemResult)).Count();
                    }

                    studentAssessmentsDictionary[studentAssessmentDbRecord.Key] = studentAssessment;
                }
            }

            var cacheEntryOptions = new MemoryCacheEntryOptions()
                                    .SetSize(200)//Size amount
                                    .SetPriority(CacheItemPriority.High)
                                    .SetSlidingExpiration(TimeSpan.FromMinutes(15))
                                    .SetAbsoluteExpiration(TimeSpan.FromMinutes(60));

            _memoryCache.Set(cacheKey, studentAssessmentsDictionary, cacheEntryOptions);

            return(studentAssessmentsDictionary);
        }