示例#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);
        }
示例#2
0
        public GroupCourse GetOrCreateProposalGroupCourse(DateTime courseStart, int niveauId, GroupCourseOptions groupCourseOption)
        {
            var course = _courseRepository.GetGroupCourseLocalOrDefault(groupCourseOption.Discipline, CourseStatus.Proposal, niveauId, courseStart, groupCourseOption.Identifier);

            if (course == null)
            {
                course = _courseRepository.GetGroupCourseOrDefault(groupCourseOption.Discipline, CourseStatus.Proposal, niveauId, courseStart, groupCourseOption.Identifier);
            }

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

            return(course);
        }
示例#3
0
        private DateTime CalculateFirstCourseStartLappingInPeriod(DateTime currentOrUpcommingSeasonStart, DateTime from, GroupCourseOptions groupCourseOptions)
        {
            var weeksSinceSeasonStart   = DateTimeExtensions.WeekDiff(currentOrUpcommingSeasonStart, from);
            var coursesSinceSeasonStart = (int)Math.Floor((double)weeksSinceSeasonStart / groupCourseOptions.WeekInterval);

            return(currentOrUpcommingSeasonStart.AddDays(coursesSinceSeasonStart * groupCourseOptions.WeekInterval * 7));
        }
示例#4
0
 private GroupCourse CreatePotentialGroupCourse(DateTime courseStartDate, int niveauId, GroupCourseOptions groupCourseOptions)
 {
     return(new GroupCourse(groupCourseOptions.Discipline, CourseStatus.Potential, niveauId, courseStartDate)
            .SetPeriodsOptions(_serializationService, groupCourseOptions));
 }
示例#5
0
 public GroupCourse SetPeriodsOptions(ISerializationService serializerService, GroupCourseOptions options)
 {
     OptionsIdentifier   = options.Identifier;
     PeriodsOptionsValue = serializerService.Serialize(options.Periods);
     return(this);
 }