private void Boom(IEnumerable <TimeEventAppointment> appts, Event e, EventCreator eventCreator, IEnumerable <Event> patternExceptionEvents)
        {
            _session.BeginTransaction();

            foreach (var newEvent in appts.Select(a => eventCreator.CreateEvent(a, e)))
            {
                foreach (var el in e.EventLocations)
                {
                    var newEl = new EventLocation(_session)
                    {
                        Event    = newEvent,
                        Location = el.Location
                    };
                    newEl.Save();

                    foreach (var newLe in el.Educators.Select(le => new LocationEducator(_session)
                    {
                        Educator = le.Educator,
                        EducatorEmployment = le.EducatorEmployment,
                        EventLocation = newEl
                    }))
                    {
                        newLe.Save();
                    }
                }
            }
            _session.Delete(patternExceptionEvents);
            _session.Save(patternExceptionEvents);
            e.Delete();
            _session.CommitTransaction();
        }
        private void ProcessWholePattern(Event patternEvnt, IEnumerable <Event> patternExceptionEvents)
        {
            var wholePattern = patternExceptionEvents.ToList();

            wholePattern.Add(patternEvnt);

            using (var appointmentsRepository = new BasicTimeEventAppointmentsRepository(new CommonEventSchedulerStorageInitializer(wholePattern)))
            {
                var appts = appointmentsRepository.GetAppointments();

                var eventCreator = new EventCreator(appointmentsRepository.SchedulerStorage);

                Boom(appts, patternEvnt, eventCreator, patternExceptionEvents);
            }
        }