Пример #1
0
        /// <summary>
        /// Creates the collection activities.
        /// </summary>
        private void CreateCollectionActivities()
        {
            // Retrieve all collection activities
            var query = from activity in dB.ClassTeacherSubjects
                        join c in dB.ClassesLookup on activity.ClassId equals c.ClassId
                        join s in dB.SubjectGrades on activity.SubjectId equals s.SubjectId
                        join t in dB.Employees on activity.TeacherId equals t.EmployeeId
                        join grade in dB.GradesLookup on c.GradeId equals grade.GradeId
                        join sub in dB.Subjects on activity.SubjectId equals sub.SubjectId
                        join stage in dB.StageIds on grade.StageId equals stage
                        where s.GradeId == c.GradeId && t.IsActive == true && s.CollectionId != null
                        group new { teacherId = activity.TeacherId, grade.GradeId, subjectId = activity.SubjectId, c.ClassName, ClassID = c.ClassId, NumberOfLlessonsPerWeek = s.NumberOfLessonsPerWeek, NumberOfLlessonsPerDay = s.NumberOfLessonsPerDay, CollectionID = s.CollectionId }
            by new { s.CollectionId, s.GradeId, activity.ClassId } into g
            select g;

            // Iterate over collections
            foreach (var item in query)
            {
                var activity = item.First();
                var students = new Dictionary <string, int>();
                item.Select(x => new { x.ClassName, x.ClassID, x.GradeId }).ToList().ForEach(x => students[x.ClassName] = x.ClassID);

                // Create all activities for this collection
                var activityBuilder = new ActivityBuilder
                {
                    StudentsList           = students,
                    TeachersList           = item.Select(x => (int)x.teacherId).ToList(),
                    SubjectId              = activity.subjectId,
                    NumberOfLessonsPerDay  = activity.NumberOfLlessonsPerDay,
                    NumberOfLessonsPerWeek = activity.NumberOfLlessonsPerWeek,
                    ActivityCounter        = _counter,
                    GradeId = item.First().GradeId,
                    // Activity is a collection if there are more than one items in a group
                    IsCollection = item.Count() > 1,
                    CollectionId = activity.CollectionID
                };

                activityBuilder.GetResults().ForEach(x => Activities.Add(x.Id, x));
                _counter = activityBuilder.ActivityCounter;
            }
        }