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()))); /* ---- */ }