Ejemplo n.º 1
0
 public function executeRelatedinformationProcess()
 {
     $this->getEnquirer();
     if (!$this->filterUser(true)) {
         $this->jsonwrapper->print_json(array('success' => false, 'code' => 'security', 'message' => 'You must login to access this url.'));
     }
     $applicant = $this->pmbTools->getApplicant($this->user);
     if (!$applicant) {
         $this->jsonwrapper->show_json_error('Permission', 'You dont have permission to access this page');
     }
     if ($applicant->getStatus() != StudentDetail::GRADUATE) {
         $this->jsonwrapper->show_json_error('Permission', 'You dont have permission to access this page');
     }
     $applicantDetail = $applicant->getTestApplicantDetail();
     $param = $this->getAllRequestParameter();
     $valid = true;
     $error_message = array();
     $beenStudied = false;
     if (!empty($param['have_been_student'])) {
         $beenStudied = true;
         if (empty($param['student_number'])) {
             $param['student_number'] = '';
         }
         if (empty($param['withdrawal_date'])) {
             $param['withdrawal_date'] = '';
         }
         if (empty($param['withdrawal_reason'])) {
             $param['withdrawal_reason'] = '';
         }
     }
     $primaryContactAdd = false;
     $secondaryContactAdd = false;
     $doctorContactAdd = false;
     /* Primary Contact */
     if (!empty($param['primary_contact'])) {
         $primaryContactAdd = true;
         if (empty($param['primary_relation'])) {
             $param['primary_relation'] = '';
         }
         if (empty($param['primary_phone'])) {
             $param['primary_phone'] = '';
         }
     }
     /* Secondary Contact */
     if (!empty($param['secondary_contact'])) {
         $secondaryContactAdd = true;
         if (empty($param['secondary_relation'])) {
             $param['secondary_relation'] = '';
         }
         if (empty($param['secondary_phone'])) {
             $param['secondary_phone'] = '';
         }
     }
     /* Doctor Contact */
     if (!empty($param['doctor_contact'])) {
         $doctorContactAdd = true;
         if (empty($param['doctor_relation'])) {
             $param['doctor_relation'] = '';
         }
         if (empty($param['doctor_phone'])) {
             $param['doctor_phone'] = '';
         }
     }
     if (!$valid) {
         $this->jsonwrapper->print_json(array('success' => false, 'code' => 'notvalid', 'error' => $error_message));
     }
     /* Start Transaction */
     $connection = Propel::getConnection('propel');
     $connection->begin();
     if ($beenStudied) {
         $applicantDetail->setStudentRelatedId($param['student_number']);
         $applicantDetail->setWithdrawalDate(date('Y-m-d', strtotime($param['withdrawal_date'])));
         $applicantDetail->setWithdrawalDetail($param['withdrawal_reason']);
     } else {
         $applicantDetail->setStudentRelatedId('');
         $applicantDetail->setWithdrawalDate(date('Y-m-d'));
         $applicantDetail->setWithdrawalDetail('');
     }
     try {
         $applicantDetail->save();
     } catch (Exception $e) {
         $connection->rollback();
         $this->jsonwrapper->print_json(array('success' => false, 'code' => 'fail', 'message' => 'Error while save the applicant detail, please try again later.', 'param' => $param));
     }
     /* Primary Contact */
     $pcc = new Criteria();
     $pcc->add(TestApplicantParentsPeer::TEST_APPLICANT_ID, $applicant->getId(), Criteria::EQUAL);
     $pcc->add(TestApplicantParentsPeer::RELATION, StudentParents::RELATION_GUARDIAN, Criteria::EQUAL);
     $primaryContact = TestApplicantParentsPeer::doSelectOne($pcc);
     if ($primaryContactAdd) {
         //var_dump($primaryContact->toArray());
         //die();
         if (!$primaryContact) {
             die($applicant->getId());
             $primaryContact = new TestApplicantParents();
             $primaryContact->setTestApplicantId($applicant->getId());
             $primaryContact->setRelation(StudentParents::RELATION_GUARDIAN);
         }
         $primaryContact->setName($param['primary_contact']);
         $primaryContact->setNoteDetail($param['primary_relation']);
         $primaryContact->setCellphone($param['primary_phone']);
         try {
             $primaryContact->save();
         } catch (Exception $e) {
             $connection->rollback();
             $this->jsonwrapper->print_json(array('success' => false, 'code' => 'fail', 'message' => 'Error while save the primary contact, please try again later.', 'param' => $param));
         }
     } else {
         if ($primaryContact) {
             try {
                 $primaryContact->delete();
             } catch (Exception $e) {
                 $connection->rollback();
                 $this->jsonwrapper->print_json(array('success' => false, 'code' => 'fail', 'message' => 'Error while delete the primary contact, please try again later.', 'param' => $param));
             }
         }
     }
     /* Secondary Contact */
     $scc = new Criteria();
     $scc->add(TestApplicantParentsPeer::TEST_APPLICANT_ID, $applicant->getId(), Criteria::EQUAL);
     $scc->add(TestApplicantParentsPeer::RELATION, StudentParents::RELATION_GUARDIAN2, Criteria::EQUAL);
     $secondaryContact = TestApplicantParentsPeer::doSelectOne($scc);
     if ($secondaryContactAdd) {
         if (!$secondaryContact) {
             $secondaryContact = new TestApplicantParents();
             $secondaryContact->setTestApplicantId($applicant->getId());
             $secondaryContact->setRelation(StudentParents::RELATION_GUARDIAN2);
         }
         $secondaryContact->setName($param['secondary_contact']);
         $secondaryContact->setNoteDetail($param['secondary_relation']);
         $secondaryContact->setCellphone($param['secondary_phone']);
         try {
             $secondaryContact->save();
         } catch (Exception $e) {
             $connection->rollback();
             $this->jsonwrapper->print_json(array('success' => false, 'code' => 'fail', 'message' => 'Error while save the secondary contact, please try again later.', 'param' => $param));
         }
     } else {
         if ($secondaryContact) {
             try {
                 $secondaryContact->delete();
             } catch (Exception $e) {
                 $connection->rollback();
                 $this->jsonwrapper->print_json(array('success' => false, 'code' => 'fail', 'message' => 'Error while delete the secondary contact, please try again later.', 'param' => $param));
             }
         }
     }
     /* Local Doctor */
     $ldc = new Criteria();
     $ldc->add(TestApplicantParentsPeer::TEST_APPLICANT_ID, $applicant->getId(), Criteria::EQUAL);
     $ldc->add(TestApplicantParentsPeer::RELATION, StudentParents::RELATION_GUARDIAN3, Criteria::EQUAL);
     $localDoctor = TestApplicantParentsPeer::doSelectOne($ldc);
     if ($doctorContactAdd) {
         if (!$localDoctor) {
             $localDoctor = new TestApplicantParents();
             $localDoctor->setTestApplicantId($applicant->getId());
             $localDoctor->setRelation(StudentParents::RELATION_GUARDIAN3);
         }
         $localDoctor->setName($param['doctor_contact']);
         $localDoctor->setNoteDetail($param['doctor_relation']);
         $localDoctor->setCellphone($param['doctor_phone']);
         try {
             $localDoctor->save();
         } catch (Exception $e) {
             $connection->rollback();
             $this->jsonwrapper->print_json(array('success' => false, 'code' => 'fail', 'message' => 'Error while save the local doctor contact, please try again later.', 'param' => $param));
         }
     } else {
         if ($localDoctor) {
             try {
                 $localDoctor->delete();
             } catch (Exception $e) {
                 $connection->rollback();
                 $this->jsonwrapper->print_json(array('success' => false, 'code' => 'fail', 'message' => 'Error while delete the local doctor contact, please try again later.', 'param' => $param));
             }
         }
     }
     /*
      */
     $connection->commit();
     $this->jsonwrapper->print_json(array('success' => true, 'code' => 'success', 'message' => 'Data successfully saved', 'href' => $this->pmbTools->pmbUrl('data/commitAdmission'), 'param' => $param, 'data' => array('primary' => $primaryContact->toArray(), 'secondary' => $secondaryContact->toArray(), 'doctor' => $localDoctor->toArray())));
     /* ---- */
 }