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); }
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); }
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)); }
private GroupCourse CreatePotentialGroupCourse(DateTime courseStartDate, int niveauId, GroupCourseOptions groupCourseOptions) { return(new GroupCourse(groupCourseOptions.Discipline, CourseStatus.Potential, niveauId, courseStartDate) .SetPeriodsOptions(_serializationService, groupCourseOptions)); }
public GroupCourse SetPeriodsOptions(ISerializationService serializerService, GroupCourseOptions options) { OptionsIdentifier = options.Identifier; PeriodsOptionsValue = serializerService.Serialize(options.Periods); return(this); }