Example #1
0
        public GroupCourse GetOrCreateGroupCourse(GroupCourse proposalGroupCourse, Guid[] participantIds, Guid[] usedGroupCourseIds)
        {
            var groupCourseOption = new GroupCourseOptions
            {
                Identifier = proposalGroupCourse.OptionsIdentifier,
                Discipline = proposalGroupCourse.Discipline,
                Periods    = proposalGroupCourse.GetPeriodsOptions(_serializationService)
            };

            var course = _courseRepository.GetBestParticipantIdMatchingGroupCourseOrDefault(
                groupCourseOption.Discipline,
                CourseStatus.Committed,
                proposalGroupCourse.NiveauId,
                proposalGroupCourse.StartDate,
                groupCourseOption.Identifier,
                participantIds,
                excludedGroupCourseIds: usedGroupCourseIds
                );

            if (course == null)
            {
                course            = _courseRepository.CreateAndAddGroupCourse();
                course.Discipline = groupCourseOption.Discipline;
                course.Status     = CourseStatus.Committed;
                course.NiveauId   = proposalGroupCourse.NiveauId;
                course.StartDate  = proposalGroupCourse.StartDate;
                course.SetPeriodsOptions(_serializationService, groupCourseOption);
            }

            return(course);
        }