/// <summary> /// Creates the single activities. /// </summary> private void CreateSingleActivities() { // Retrieve all single activities to be created 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 stage in dB.StageIds on grade.StageId equals stage where c.GradeId == s.GradeId && s.CollectionId == null select new { TeacherID = activity.TeacherId, GradeID = c.GradeId, SubjectID = activity.SubjectId, c.ClassName, ClassID = c.ClassId, NumberOfLlessonsPerWeek = s.NumberOfLessonsPerWeek, NumberOfLlessonsPerDay = s.NumberOfLessonsPerDay }; // Iterate over single activities foreach (var item in query) { var activityBuilder = new ActivityBuilder { StudentsList = new Dictionary <string, int> { { item.ClassName, item.ClassID } }, TeachersList = new List <int> { (int)item.TeacherID }.Distinct().ToList(), SubjectId = item.SubjectID, GradeId = (int)item.GradeID, NumberOfLessonsPerDay = item.NumberOfLlessonsPerDay, NumberOfLessonsPerWeek = item.NumberOfLlessonsPerWeek, IsCollection = false, ActivityCounter = _counter }; activityBuilder.GetResults().ForEach(x => Activities.Add(x.Id, x)); _counter = activityBuilder.ActivityCounter; } }
/// <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; } }