public function doSave($con = null) { if (is_null($con)) { $con = $this->getConnection(); } $course_subject = $this->getObject(); $values = $this->getValues(); $c = new Criteria(); if ($this->getCourseType() == CourseType::BIMESTER) { $c->add(CareerSchoolYearPeriodPeer::CAREER_SCHOOL_YEAR_PERIOD_ID, $values['quaterly_id']); } else { $c->add(CareerSchoolYearPeriodPeer::ID, $values['quaterly_id']); } $periods = CareerSchoolYearPeriodPeer::doSelect($c); try { $con->beginTransaction(); $cscs = CourseSubjectConfigurationPeer::retrieveBySubject($course_subject); foreach ($cscs as $csc) { $csc->delete($con); } foreach ($periods as $period) { $csc = new CourseSubjectConfiguration(); $csc->setCourseSubject($course_subject); $csc->setCareerSchoolYearPeriod($period); $csc->save($con); } $con->commit(); } catch (Exception $e) { $con->rollBack(); throw $e; } }