/** * Creates career_subject_school_year if the career has already have an instance of career_school_year of the actual school year. * * @param CareerSubject $career_subject * @param PropelPDO $con */ public function updateCareerSubjectSchoolYear(CareerSubject $career_subject, PropelPDO $con) { if ($career_subject->isNew()) { $school_year = SchoolYearPeer::retrieveCurrent(); $career_school_year = CareerSchoolYearPeer::retrieveByCareerAndSchoolYear($career_subject->getCareer(), $school_year); if (!is_null($career_school_year) && !$career_school_year->getIsProcessed()) { $career_subject_school_year = new CareerSubjectSchoolYear(); $career_subject_school_year->setCareerSubjectId($career_subject->getId()); $career_subject_school_year->setCareerSchoolYearId($career_school_year->getId()); $career_subject_school_year->save($con); } } }
public static function retrieveByCareerSubjectSchoolYearAndStudent(CareerSubjectSchoolYear $career_subject_school_year, $student_id) { $c = new Criteria(); $c->add(self::STUDENT_ID, $student_id); $c->addJoin(self::COURSE_SUBJECT_ID, CourseSubjectPeer::ID, Criteria::INNER_JOIN); $c->add(CourseSubjectPeer::CAREER_SUBJECT_SCHOOL_YEAR_ID, $career_subject_school_year->getId()); return self::doSelectOne($c); }
/** * This method try to find if there are new CareerSubjects for our Career, recently * created but without a CareerSubjectSchoolYear created * */ public function checkCareerSubjectOptionsIntegrity() { $criteria = new Criteria(); $criteria->addJoin(CareerSubjectSchoolYearPeer::CAREER_SCHOOL_YEAR_ID, CareerSchoolYearPeer::ID, Criteria::INNER_JOIN); $criteria->addAnd(CareerSchoolYearPeer::CAREER_ID, $this->getCareerId()); $all_career_subjects_sy = array_map(create_function('$cs', 'return $cs->getCareerSubjectId();'), CareerSubjectSchoolYearPeer::doSelect($criteria)); $criteria->clear(); $criteria->addAnd(CareerSubjectPeer::CAREER_ID, $this->getCareerId()); $criteria->addAnd(CareerSubjectPeer::ID, $all_career_subjects_sy, Criteria::NOT_IN); $con = Propel::getConnection(SchoolYearPeer::DATABASE_NAME); try { foreach (CareerSubjectPeer::doSelect($criteria) as $career_subject) { $career_subject_school_year = new CareerSubjectSchoolYear(); $career_subject_school_year->setCareerSchoolYear($this); $career_subject_school_year->setCareerSubject($career_subject); $career_subject_school_year->save($con); } $con->commit(); } catch (PropelPDOException $e) { $con->rollBack(); throw $e; } }
public function addToCurrentCareerSchoolYear(PropelPDO $con = null) { if (is_null($con)) { $con = Propel::getConnection(); } $career_school_year = $this->getCareerSchoolYear(); try { $con->beginTransaction(); $career_subject_school_year = new CareerSubjectSchoolYear(); $career_subject_school_year->setCareerSubject($this); $career_subject_school_year->setCareerSchoolYear($career_school_year); $career_subject_school_year->save($con); $students = StudentPeer::retrieveForCareerSchoolYearAndYear($career_school_year, $this->getYear()); foreach ($students as $student) { $student_career_subject_allowed = new StudentCareerSubjectAllowed(); $student_career_subject_allowed->setCareerSubject($this); $student_career_subject_allowed->setStudent($student); $student_career_subject_allowed->save($con); } $con->commit(); } catch (PropelException $e) { $con->rollback(); throw $e; } }
/** * Get every CareerSubjectSchoolYear that has been marked as 'is_option' that is * available for $career_subject_school_year (the optional CareerSubject). * * @param CareerSubjectSchoolYear $career_subject The optional CareerSubject. * @param Boolean $exclude_related, if its true excludes the related options * @param PropelPDO $con Database connection (can be null). * * @return Criteria */ public function getAvailableChoicesForCareerSubjectSchoolYearCriteria(CareerSubjectSchoolYear $career_subject_school_year, $exclude_related = true, $exclude_repetead = true, PropelPDO $con = null) { /* First try to get every CareerSubject objects that are options and are being used as option, so we wont consider them */ $career_subject = $career_subject_school_year->getCareerSubject(); $criteria = new Criteria(); $related = array_map(create_function('$option', 'return $option->getChoiceCareerSubjectSchoolYearId();'), $career_subject_school_year->getOptionalCareerSubjectsRelatedByCareerSubjectSchoolYearId()); if ($exclude_repetead) { $criteria->addJoin(CareerSubjectSchoolYearPeer::ID, OptionalCareerSubjectPeer::CHOICE_CAREER_SUBJECT_SCHOOL_YEAR_ID, Criteria::INNER_JOIN); $criteria->addJoin(CareerSubjectSchoolYearPeer::CAREER_SUBJECT_ID, CareerSubjectPeer::ID, Criteria::INNER_JOIN); $criteria->addJoin(CareerSubjectSchoolYearPeer::CAREER_SCHOOL_YEAR_ID, CareerSchoolYearPeer::ID, Criteria::INNER_JOIN); $criteria->addAnd(CareerSubjectPeer::IS_OPTION, true); $criteria->addAnd(CareerSubjectPeer::YEAR, $career_subject->getYear()); $criteria->addAnd(CareerSubjectPeer::CAREER_ID, $career_subject->getCareerId()); $criteria->addAnd(CareerSchoolYearPeer::SCHOOL_YEAR_ID, $career_subject_school_year->getSchoolYear()->getId()); //At this point discard related options to career_subject_school_year $criteria->addAnd(CareerSubjectSchoolYearPeer::ID, $related, Criteria::NOT_IN); $options_used = CareerSubjectSchoolYearPeer::doSelect($criteria); $not_to_consider = array_map(create_function('$cssy', 'return $cssy->getId();'), $options_used); } // Now try to see which career subjects are available $criteria->clear(); $criteria->addJoin(CareerSubjectSchoolYearPeer::CAREER_SUBJECT_ID, CareerSubjectPeer::ID, Criteria::INNER_JOIN); $criteria->addJoin(CareerSubjectSchoolYearPeer::CAREER_SCHOOL_YEAR_ID, CareerSchoolYearPeer::ID, Criteria::INNER_JOIN); $criteria->addAnd(CareerSubjectPeer::IS_OPTION, true); $criteria->addAnd(CareerSubjectPeer::YEAR, $career_subject->getYear()); $criteria->addAnd(CareerSubjectPeer::CAREER_ID, $career_subject->getCareerId()); // Dont forget to consider orientation $criteria->addAnd(CareerSubjectPeer::ORIENTATION_ID, $career_subject->getOrientationId()); $criteria->addAnd(CareerSchoolYearPeer::SCHOOL_YEAR_ID, $career_subject_school_year->getSchoolYear()->getId()); //Excludes the optional related of the excluded_ids. This is for double list that needs the owns related if ($exclude_related) { $criteria->addAnd(CareerSubjectSchoolYearPeer::ID, $related, Criteria::NOT_IN); } // Don't consider objects related to other optional career subject! if ($exclude_repetead) { $criteria->addAnd(CareerSubjectSchoolYearPeer::ID, $not_to_consider, Criteria::NOT_IN); } return $criteria; }
public function createCareerSchoolYear($career) { $con = Propel::getConnection(SchoolYearPeer::DATABASE_NAME); try { $con->beginTransaction(); $career_school_year = new CareerSchoolYear(); $career_school_year->setSchoolYear($this); $career_school_year->setCareer($career); $subject_configuration = $this->createOrCopyLastYearSubjectConfiguration($career, $con); $career_school_year->setSubjectConfiguration($subject_configuration); $career_school_year->save($con); foreach ($career->getCareerSubjects() as $career_subject) { $career_subject_school_year = new CareerSubjectSchoolYear(); $career_subject_school_year->setCareerSchoolYear($career_school_year); $career_subject_school_year->setCareerSubject($career_subject); $career_subject_school_year->copyLastYearConfiguration(); $career_subject_school_year->copyLastYearSort(); $career_subject_school_year->save($con); } $con->commit(); } catch (PropelPDOException $e) { $con->rollBack(); throw $e; } }
public function getCourseSubjectForCareerSubjectSchoolYear(CareerSubjectSchoolYear $cssy) { $c = new Criteria(); $c->addJoin(CoursePeer::ID, CourseSubjectPeer::COURSE_ID, Criteria::INNER_JOIN); $c->add(CourseSubjectPeer::CAREER_SUBJECT_SCHOOL_YEAR_ID, $cssy->getId()); $c->add(CoursePeer::DIVISION_ID, $this->getId()); return CourseSubjectPeer::doSelectOne($c); }