public function mergeAndDelte( dsClassStudent $old_enrolment )
  {

    // generiert noch Fehler für parent_enrolment ... ?! (Basil Tosconi )

    // check for parent enrolments
    if ($old_enrolment->parent_enrolment_id) {
      $parent_id = $old_enrolment->parent_enrolment_id;
      if (!$this->parent_enrolment_id) {
        $this->link('ParentEnrolment', $parent_id);
        $this->save();
        return true;
      }
    }

  // check if old is parent of others...
    $old_childs = $old_enrolment->getChildEnrolments();
    if ( $old_childs->count() > 0 ) {
      foreach( $old_childs as $child) {
        // make me the parent
        $child->link('ParentEnrolment', $this->getId() );
        $child->save();
      }
    }

    $result = $old_enrolment->delete();
   return $result;
  }
  public function enroll(dsPerson $person, $role, $registration = null, $partner = null, $confirm = true, $type = 'regular')
  {
    
    $enrolment = new dsClassStudent();
    $enrolment->link('Class', $this->getId() );
    $enrolment->link('Person', $person->getId());
    $enrolment->setRole( $role );
    $enrolment->setPartner( $partner );
    if (!is_null($registration)) {
      $enrolment->link('Registration', $registration);
      $registration->approve();
      $registration->save();
    } else {
      $enrolment->link('Registration', NULL);
      // $enrolment->registration_id = NULL;
    }
    
    if ($confirm)
      $enrolment->setDateConfirmed( date('Y-m-d H:i:s', time()) );
    
    // $conn->setAttribute(Doctrine_Core::ATTR_CASCADE_SAVES, false);
    
    // $enrolment->link('Registration', NULL);
    // $enrolment->unlink('Registration');
  
    // 2013-02-04 
    $enrolment->setType( $type );

    try
    {
      $enrolment->save();
      return $enrolment;
    }
    catch (Exception $e)
    {
      return false;
    }
    
    //$enrolment->confirm();
    
    // 2. send email
   // $this->sendConfirmationEmail();
    
    // return $enrolment;  // dsClassStudent
    
  }
  public function createEnrolment()
  {
  
    if (!$this->getPerson()) return false;

    
    //var_dump($enrolment);

    // check for existing enrolment
    
    // Registration has enrolment linked
    if ($enrolment = $this->getEnrolment())
      // person is already enrolled for this class
      if (!$enrolment = $this->getPerson()->getEnrolment( $this->getClassId() ))
        // if not: create new
        $enrolment = new dsClassStudent();
    
    
    $enrolment->link('Class', $this->getClassId() );
    $enrolment->link('Person', $this->getPersonId());

    // var_dump( $this->getClassId() );
    
    // set params from registration
    $enrolment->setPartner( $this->getPartner() );
    
    $enrolment->setDateTimeObject('date_registered', $this->getDateTimeObject('created_at'));
    
    $role = ($this->getRole()=='L') ? 'leader' : 'follower';
    $enrolment->setRole( $role );
    
    $enrolment->setComment( $this->getComment() );
    
    // $enrolment->confirm();
    $enrolment->save();
    
    $this->link('Enrolment', $enrolment->getId() );
    $this->save();
    
    // var_dump( 'saved'.$this->getId().'-'.$this->getEnrolmentId() );

    /*  
    if ($enrolment) {
      $this->approve();
      $this->save();
    }
    */
        
    return $enrolment;

  }