// Removes a control from the event. If the control is present in any course as a course-control, those // course-controls are also removed. public static void RemoveControl(EventDB eventDB, Id<ControlPoint> controlId) { // Find all of the courses/course-controls that are this control. foreach (Id<Course> courseId in QueryEvent.CoursesUsingControl(eventDB, controlId)) { Id<CourseControl> courseControlId; do { // Remove one course control could remove multiple, so only remove first of the course controls that use that control, then // check again. courseControlId = QueryEvent.GetCourseControlsInCourse(eventDB, new CourseDesignator(courseId), controlId).FirstOrDefault(); if (courseControlId.IsNotNone) RemoveCourseControl(eventDB, courseId, courseControlId); } while (courseControlId.IsNotNone); } // Find all of the legs that use this control and remove them. List<Id<Leg>> legIdList = new List<Id<Leg>>(); foreach (Id<Leg> legId in eventDB.AllLegIds) { Leg leg = eventDB.GetLeg(legId); if (leg.controlId1 == controlId || leg.controlId2 == controlId) legIdList.Add(legId); } foreach (Id<Leg> legId in legIdList) eventDB.RemoveLeg(legId); // Remove the control point itself. eventDB.RemoveControlPoint(controlId); }