public void Close(Guid[] passedParticipantIds, NiveauOptionsCollection niveauOptionsCollection, ISerializationService serializationService) { if (Status != CourseStatus.Committed) { throw new InvalidOperationException("Only committed courses can be closed."); } AddVisitedDaysToPassedParticipants(passedParticipantIds, niveauOptionsCollection, serializationService); Status = CourseStatus.Closed; }
protected abstract void AddVisitedDaysToPassedParticipants(Guid[] passedParticipantIds, NiveauOptionsCollection niveauOptionsCollection, ISerializationService serializationService);
protected override void AddVisitedDaysToPassedParticipants(Guid[] passedParticipantIds, NiveauOptionsCollection niveauOptionsCollection, ISerializationService serializationService) { var courseDates = GetAllCourseDates(serializationService).ToArray(); foreach (var participant in Participants) { foreach (var courseDay in courseDates) { participant.Participant.VisitedCourseDays.Add( new ParticipantVisitedCourseDay { Discipline = Discipline, NiveauId = NiveauId, NiveauName = niveauOptionsCollection.Where(no => no.Id == NiveauId).Select(no => no.Name).Single(), DayStart = courseDay.Start, DayDuration = courseDay.Duration } ); } } }