/**
  * 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);
         }
     }
 }
예제 #2
0
 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);
 }
예제 #3
0
 /**
  * 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;
     }
 }
예제 #4
0
 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;
 }
예제 #6
0
 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;
     }
 }
예제 #7
0
 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);
 }