Exemple #1
0
 public function executeEnquiryProcess()
 {
     /* Initialize */
     $this->getEnquirer();
     $valid = true;
     $error_message = array();
     $now = date('Y-m-d H:i:s');
     /* Filter User */
     if (!$this->filterUser(true)) {
         $this->jsonwrapper->print_json(array('success' => false, 'code' => 'security', 'message' => 'You must login to access this url.'));
     }
     /* Get All Parameter */
     $param = $this->getAllRequestParameter();
     /* enquiry_name */
     if (empty($param['enquirer_name'])) {
         $error_message[] = array('field' => 'enquirer_name', 'message' => 'Please enter your enquirer name');
         $valid = false;
     }
     /* enquiry_type */
     if (empty($param['enquiry_type'])) {
         $error_message[] = array('field' => 'enquiry_type', 'message' => 'Please enter enquiry type');
         $valid = false;
     } else {
         /* Check enquiry type exist or not */
         switch ($param['enquiry_type']) {
             case TestApplicant::ENQ_PHONE:
             case TestApplicant::ENQ_FAX:
             case TestApplicant::ENQ_EMAIL:
             case TestApplicant::ENQ_DIRECT:
                 break;
             default:
                 $error_message[] = array('field' => 'enquiry_type', 'message' => 'Enquiry type does not exist');
                 $valid = false;
                 break;
         }
     }
     /* enquiry_getinformation */
     if (empty($param['getinformation'])) {
         $error_message[] = array('field' => 'getinformation', 'message' => 'Please enter this field');
         $valid = false;
     } else {
         switch ($param['getinformation']) {
             case TestApplicant::REG_INFO_FAM:
             case TestApplicant::REG_INFO_NEWSP:
             case TestApplicant::REG_INFO_SCH:
             case TestApplicant::REG_INFO_BAN:
             case TestApplicant::REG_INFO_MISC:
                 break;
             default:
                 $error_message[] = array('field' => 'getinformation', 'message' => 'Information type does not exist');
                 $valid = false;
                 break;
         }
     }
     /* enquiry comment */
     if (empty($param['comment'])) {
         $error_message[] = array('field' => 'comment', 'message' => 'Please enter a comment');
         $valid = false;
     }
     /* --- Applicant --- */
     /* applicant name */
     if (empty($param['applicant_name'])) {
         $error_message[] = array('field' => 'applicant_name', 'message' => 'Please enter your Applicant Fullname');
         $valid = false;
     }
     /* Relationship */
     if (empty($param['relationship'])) {
         $error_message[] = array('field' => 'relationship', 'message' => 'Please enter your relation with applicant');
         $valid = false;
     }
     /* Address */
     if (empty($param['address'])) {
         $error_message[] = array('field' => 'address', 'message' => 'Please enter applicant address');
         $valid = false;
     }
     /* POB */
     if (empty($param['pob'])) {
         $error_message[] = array('field' => 'pob', 'message' => 'Please enter applicant place of birth');
         $valid = false;
     }
     /* DOB */
     if (empty($param['dob'])) {
         $error_message[] = array('field' => 'dob', 'message' => 'Please enter applicant date of birth');
         $valid = false;
     }
     /* present school */
     if (empty($param['present_school'])) {
         $error_message[] = array('field' => 'present_school', 'message' => 'Please enter Applicant Present School');
         $valid = false;
     }
     /* present level */
     if (empty($param['present_level'])) {
         $error_message[] = array('field' => 'present_level', 'message' => 'Please enter Applicant Present Level');
         $valid = false;
     }
     /* school_interested */
     if (empty($param['school_interested'])) {
         $error_message[] = array('field' => 'school_interested', 'message' => 'Please enter Applicant School Interested');
         $valid = false;
     } else {
         /* Check School Interested Exist or Not */
         $department = DepartmentPeer::retrieveByPK($param['school_interested']);
         if (!$department) {
             $error_message[] = array('field' => 'school_interested', 'message' => 'Shool Interested you entered is not valid');
             $valid = false;
         } else {
             if ($department->getParent() == 0) {
                 $error_message[] = array('field' => 'school_interested', 'message' => 'Shool Interested you entered is not valid');
                 $valid = false;
             } else {
                 /* level_interested */
                 if (empty($param['level_interested'])) {
                     $error_message[] = array('field' => 'level_interested', 'message' => 'Please enter Applicant Level Interested');
                     $valid = false;
                 } else {
                     /* Check class exist or not */
                     $classCriteria = new Criteria();
                     $classCriteria->add(VClassGroupPeer::DEPARTMENT_ID, $department->getId(), Criteria::EQUAL);
                     $classCriteria->add(VCLassGroupPeer::ID, $param['level_interested'], Criteria::EQUAL);
                     $classInterested = VCLassGroupPeer::doSelectOne($classCriteria);
                     if (!$classInterested) {
                         $error_message[] = array('field' => 'level_interested', 'message' => 'Level Interested you entered is not valid');
                         $valid = false;
                     }
                 }
             }
         }
     }
     /* Check all parameter valid or not */
     if (!$valid) {
         $this->jsonwrapper->print_json(array('success' => false, 'code' => 'notvalid', 'error' => $error_message));
     }
     /* Start Transaction */
     $connection = Propel::getConnection('propel');
     $connection->begin();
     /* TABLE TEST_APPLICANT_ENQUIRER */
     $this->user->setFullname($param['enquirer_name']);
     $this->user->setEnquiryType($param['enquiry_type']);
     $this->user->setComments($param['comment']);
     /* Try Save */
     try {
         $this->user->save();
     } catch (Exception $e) {
         $connection->rollback();
         $this->jsonwrapper->print_json(array('success' => false, 'code' => 'fail', 'message' => 'Error while save the data, please try again later.', 'message2' => 'Error save enquirer - process1'));
     }
     /* TABLE TEST_APPLICANT */
     /* Get this applicant, if empty then create a new one */
     $applicant = $this->pmbTools->getApplicant($this->user);
     if (!$applicant) {
         $applicant = new TestApplicant();
         $newApplicant = true;
     } else {
         $newApplicant = false;
     }
     /* If New Applicant */
     /* This field cannot be changed */
     if ($newApplicant) {
         $applicantCode = $this->pmbTools->generateApplicantCode(StudentDetail::BUY);
         $applicant->setStatus(StudentDetail::BUY);
         $applicant->setCode($this->pmbTools->generateApplicantCode(StudentDetail::BUY));
         $applicant->setEnrolled(0);
         $applicant->setApplicantType(TestApplicant::STATUS_NEW);
     }
     /* Field can be changed */
     $applicant->setName($param['applicant_name']);
     $applicant->setTestApplicantEnquirerId($this->user->getId());
     $applicant->setEnquirerRelation($param['relationship']);
     $applicant->setRegInfo($param['getinformation']);
     $applicant->setYear(date('Y', strtotime($now)));
     $applicant->setDepartment1($department->getId());
     $applicant->setClassGroup1($classInterested->getId());
     /* Try save applicant */
     try {
         $applicant->save();
     } catch (Exception $e) {
         $connection->rollback();
         $this->jsonwrapper->print_json(array('success' => false, 'code' => 'fail', 'message' => 'Error while save the data, please try again later.', 'message2' => 'Error save applicant - process2'));
     }
     /* TABLE APPLICANT_DETAIL */
     if ($applicant->getTestApplicantDetail()) {
         $applicantDetail = $applicant->getTestApplicantDetail();
         $newApplicantDetail = false;
     } else {
         $applicantDetail = new TestApplicantDetail();
         $newApplicantDetail = true;
     }
     /* Fill Applicant Detail */
     $applicantDetail->setAddress($param['address']);
     $applicantDetail->setPob($param['pob']);
     $applicantDetail->setDob(date('Y-m-d', strtotime($param['dob'])));
     $applicantDetail->setSchoolOfOrigin($param['present_school']);
     $applicantDetail->setClassOfOrigin($param['present_level']);
     /* Try save applicant_detail */
     try {
         $applicantDetail->save();
     } catch (Exception $e) {
         $connection->rollback();
         $this->jsonwrapper->print_json(array('success' => false, 'code' => 'fail', 'message' => 'Error while save the data, please try again later.', 'message2' => 'Error save applicant_detail - process3'));
     }
     if ($newApplicantDetail) {
         /* Create relation between applicant and applicant_detail */
         $applicant->setTestApplicantDetailId($applicantDetail->getId());
         try {
             $applicant->save();
         } catch (Exception $e) {
             $connection->rollback();
             $this->jsonwrapper->print_json(array('success' => false, 'code' => 'fail', 'message' => 'Error while save the data, please try again later.', 'message2' => 'Error create relation between applicant and applicant_detail - process3.1'));
         }
     }
     $connection->commit();
     $this->jsonwrapper->print_json(array('success' => true, 'code' => 'success', 'message' => 'Data successfully saved', 'href' => $this->pmbTools->pmbUrl('account/index')));
 }
Exemple #2
0
 public function executeUpdate()
 {
     ## Kelas yang dipilih
     $class = ClassGroupPeer::retrieveByPK($this->getRequestParameter('class_group1'));
     $dept = DepartmentPeer::retrieveByPk($this->getRequestParameter('department_id'));
     $cd = new Criteria();
     $cd->add(AcademicCalendarPeer::CURR_SYSTEM_ID, 2);
     $cd->add(AcademicCalendarPeer::COURSE_MODEL, 'C');
     $cd->add(AcademicCalendarPeer::DEPARTMENT_ID, $dept->getId());
     $accal_applicant = AcademicCalendarPeer::doSelectOne($cd);
     $applicant_detail = new TestApplicantDetail();
     $applicant_detail->setId($this->getRequestParameter('test_applicant_detail_id'));
     $applicant_detail->setShortName($this->getRequestParameter('short_name'));
     $applicant_detail->setPob($this->getRequestParameter('pob'));
     if ($this->getRequestParameter('dob')) {
         $applicant_detail->setDob($this->getRequestParameter('dob'));
     }
     $applicant_detail->setSex($this->getRequestParameter('sex'));
     $applicant_detail->setReligionId($this->getRequestParameter('religion_id'));
     $applicant_detail->setCountryId($this->getRequestParameter('country_id'));
     $applicant_detail->setNativeLanguage($this->getRequestParameter('native_language'));
     $applicant_detail->setFather($this->getRequestParameter('father'));
     $applicant_detail->setMother($this->getRequestParameter('mother'));
     $applicant_detail->setFatherJob($this->getRequestParameter('father_job'));
     $applicant_detail->setMotherJob($this->getRequestParameter('mother_job'));
     $applicant_detail->setDetailFatherJob($this->getRequestParameter('detail_father_job'));
     $applicant_detail->setDetailMotherJob($this->getRequestParameter('detail_mother_job'));
     $applicant_detail->setAddress($this->getRequestParameter('address'));
     $applicant_detail->setPostCode($this->getRequestParameter('post_code'));
     $applicant_detail->setRegionId($this->getRequestParameter('region_id'));
     $applicant_detail->setPhone($this->getRequestParameter('home_phone'));
     $applicant_detail->setCellphone($this->getRequestParameter('father_cellphone'));
     $applicant_detail->setCompany($this->getRequestParameter('company'));
     $applicant_detail->setParentName($this->getRequestParameter('father'));
     $applicant_detail->setJobTitle($this->getRequestParameter('job_title'));
     $applicant_detail->setSchoolOfOrigin($this->getRequestParameter('school_of_origin'));
     $applicant_detail->setSchoolOfOriginAddress($this->getRequestParameter('school_of_origin_address'));
     $applicant_detail->setRegNote($this->getRequestParameter('reg_note'));
     $applicant_detail->setChildNumber($this->getRequestParameter('child_number'));
     $applicant_detail->setBloodSiblings($this->getRequestParameter('blood_siblings'));
     $applicant_detail->setStepSiblings($this->getRequestParameter('step_siblings'));
     $applicant_detail->setOrphanageStatus($this->getRequestParameter('orphanage_status'));
     $applicant_detail->setResidenceStatus($this->getRequestParameter('residence_status'));
     $applicant_detail->setHomeDistance($this->getRequestParameter('home_distance'));
     $applicant_detail->setTransport($this->getRequestParameter('transport'));
     #$applicant_detail->setAcademicCalendarId($accal_applicant->getId());
     $applicant_detail->setIllness($this->getRequestParameter('illness'));
     $applicant_detail->setIllnessNote($this->getRequestParameter('illness_note'));
     $applicant_detail->setGraduationGrade($this->getRequestParameter('graduation_grade'));
     $applicant_detail->setGraduationYear($this->getRequestParameter('graduation_year'));
     $applicant_detail->setBloodType($this->getRequestParameter('blood_type'));
     $applicant_detail->setTall($this->getRequestParameter('tall'));
     $applicant_detail->setWeight($this->getRequestParameter('weight'));
     $applicant_detail->save();
     $applicant = new TestApplicant();
     $is_new = true;
     $applicant->setId($this->getRequestParameter('id'));
     $applicant->setName($this->getRequestParameter('name'));
     $applicant->setCode2($this->getRequestParameter('code2'));
     $applicant->setClassGroup1($this->getRequestParameter('class_group1'));
     $applicant->setDepartment1($this->getRequestParameter('department_id'));
     ## Siswa Dalam
     if ($this->getRequestParameter('is_alazhar') == TestApplicant::IS_ALAZHAR) {
         $code_appl = '.' . $dept->getCode() . '.A';
     } else {
         $code_appl = '.' . $dept->getCode() . '.B';
     }
     $stu_code = ParamsPeer::retrieveByCode('sma_code');
     $sc = $stu_code->getValue();
     $sc = explode('$', $sc);
     array_shift($sc);
     $code_len = 0;
     $code = '';
     foreach ($sc as $k => $v) {
         $v = explode('#', $v);
         if ($v[0] == 'year') {
             $code_a = substr($accal_applicant->getName(), 2, 2);
             $code_b = substr($accal_applicant->getName(), 7, 2);
             $yr = $code_a . '/' . $code_b;
             if (strlen($yr) <= $v[1]) {
                 $code .= str_pad($yr, $v[1], '0', STR_PAD_LEFT);
             } else {
                 $code .= substr($yr, strlen($yr) - $v[1]);
             }
             $code_len += $v[1];
         } elseif ($v[0] == 'app') {
             $code_len += $v[1];
             $code .= str_pad($code_appl, $v[1], '0', STR_PAD_LEFT);
         } elseif ($v[0] == 'seq') {
             $c = new Criteria();
             $c->add(TestApplicantPeer::CODE, $code . '%', Criteria::LIKE);
             $c->addDescendingOrderByColumn(TestApplicantPeer::CODE);
             $c->setLimit(1);
             $last_applicant = TestApplicantPeer::doSelectOne($c);
             if ($last_applicant) {
                 $lap = $last_applicant->getCode();
                 $lap = substr_replace($lap, '', 0, $code_len);
                 $lap = substr($lap, 0, $v[1]);
                 $lap++;
                 $code .= str_pad($lap, $v[1], '0', STR_PAD_LEFT);
             } else {
                 $code .= str_pad(1, $v[1], '0', STR_PAD_LEFT);
                 break;
             }
         }
         $sc[$k] = $v;
     }
     $applicant->setCode($code);
     $applicant->setDepartment2($accal_applicant->getId());
     $applicant->setApplicantType(TestApplicant::STATUS_NEW);
     $applicant->setYear($accal_applicant->getYear());
     $applicant->setCode2($this->getRequestParameter('code2'));
     $applicant->setIsAlazhar($this->getRequestParameter('is_alazhar'));
     $crypted = sha1(sfConfig::get('app_salt') . $applicant_detail->getDob('dmY'));
     $applicant->setPassword($crypted);
     $applicant->setStatus(StudentDetail::WEB);
     $applicant->setTestApplicantDetail($applicant_detail);
     if ($dept->getCourseModel() == Department::CM_SMP) {
         $applicant->setClassGroup2($this->getRequestParameter('class_group2'));
     } elseif ($dept->getCourseModel() == Department::CM_SMA) {
         //$applicant->setClassGroup2($this->getRequestParameter('program'));
     }
     $applicant->save();
     $c = new Criteria();
     $c->add(RegPeriodPeer::CURRICULUM_ID, $applicant->getIsAlazhar());
     $c->add(RegPeriodPeer::ACADEMIC_CALENDAR_ID, $applicant->getDepartment2());
     $c->addJoin(RegTestPeriodPeer::REG_PERIOD_ID, RegPeriodPeer::ID);
     $reg_test_periods = RegTestPeriodPeer::doSelect($c);
     foreach ($reg_test_periods as $reg_test_period) {
         $cw = new Criteria();
         $cw->add(TestSchedulePeer::REG_TEST_PERIOD_ID, $reg_test_period->getId());
         $cw->addAscendingorderByColumn(TestSchedulePeer::ID);
         $scheds = TestSchedulePeer::doSelect($cw);
         $s1 = array();
         foreach ($scheds as $s) {
             $s1[$s->getRegTestPeriodId()][] = array('reg_test_period_id' => $s->getRegTestPeriodId(), 'used' => $s->countTestApplScheds(), 'capacity' => $s->getCapacity(), 'sched' => $s);
         }
         foreach ($s1 as $s) {
             $c = new Criteria();
             $c->add(TestSchedulePeer::REG_TEST_PERIOD_ID, $reg_test_period->getId());
             $c->addJoin(TestApplSchedPeer::TEST_SCHEDULE_ID, TestSchedulePeer::ID);
             $c->add(TestApplSchedPeer::TEST_APPLICANT_ID, $applicant->getId());
             $tas = TestApplSchedPeer::doSelectOne($c);
             if ($tas == null) {
                 $i = 0;
                 while ($s[$i]) {
                     $sched = $s[$i];
                     if ($sched['used'] < $sched['capacity']) {
                         $tas = new TestApplSched();
                         $tas->setTestApplicant($applicant);
                         $tas->setTestSchedule($sched['sched']);
                         $tas->save();
                         break;
                     }
                     $i++;
                 }
             }
         }
         $test_applicant = TestApplicantPeer::retrieveByPk($applicant->getId());
         $this->forward404Unless($test_applicant);
         $test_applicant->setRegTestPeriod1($reg_test_period->getId());
         $test_applicant->save();
     }
     if ($applicant_detail->getDetailFatherJob() == 1) {
         $father_job == 'Guru / Pengajar / Karyawan AlAzhar';
     } elseif ($applicant_detail->getDetailFatherJob() == 2) {
         $father_job == 'Guru / Pengajar Non ALAzhar';
     } elseif ($applicant_detail->getDetailFatherJob() == 3) {
         $father_job == 'Pegawai Swasta';
     } elseif ($applicant_detail->getDetailFatherJob() == 4) {
         $father_job == 'Pegawai Negeri Sipil';
     } elseif ($applicant_detail->getDetailFatherJob() == 5) {
         $father_job == 'Wiraswasta';
     } elseif ($applicant_detail->getDetailFatherJob() == 6) {
         $father_job == 'Tidak Bekerja';
     } else {
         $father_job == 'Lainnya';
     }
     if ($applicant_detail->getDetailMotherJob() == 1) {
         $mother_job == 'Guru / Pengajar / Karyawan AlAzhar';
     } elseif ($applicant_detail->getDetailMotherJob() == 2) {
         $mother_job == 'Guru / Pengajar Non ALAzhar';
     } elseif ($applicant_detail->getDetailMotherJob() == 3) {
         $mother_job == 'Pegawai Swasta';
     } elseif ($applicant_detail->getDetailMotherJob() == 4) {
         $mother_job == 'Pegawai Negeri Sipil';
     } elseif ($applicant_detail->getDetailMotherJob() == 5) {
         $mother_job == 'Wiraswasta';
     } elseif ($applicant_detail->getDetailMotherJob() == 6) {
         $mother_job == 'Tidak Bekerja';
     } else {
         $mother_job == 'Lainnya';
     }
     #Data Orang Tua (Ayah)
     $applicant_father = new TestApplicantParents();
     $applicant_father->setName($this->getRequestParameter('father'));
     $applicant_father->setTestApplicant($applicant);
     if ($this->getRequestParameter('father_dob')) {
         $applicant_father->setDob($this->getRequestParameter('father_dob'));
     }
     $applicant_father->setPob($this->getRequestParameter('father_pob'));
     $applicant_father->setReligionId($this->getRequestParameter('religion_father'));
     $applicant_father->setDegreeId($this->getRequestParameter('degree_father'));
     $applicant_father->setJob($father_job);
     $applicant_father->setAddress($this->getRequestParameter('address'));
     $applicant_father->setOfficePhone($this->getRequestParameter('father_office_phone'));
     $applicant_father->setPostCode($this->getRequestParameter('post_code'));
     $applicant_father->setRegionId($this->getRequestParameter('region_id'));
     $applicant_father->setHomePhone($this->getRequestParameter('home_phone'));
     $applicant_father->setCellphone($this->getRequestParameter('father_cellphone'));
     $applicant_father->setCountryId($this->getRequestParameter('father_country'));
     $applicant_father->setMonthlyRevenue($this->getRequestParameter('father_revenue'));
     $applicant_father->setEmail($this->getRequestParameter('email'));
     $applicant_father->setNote($this->getRequestParameter('father_note'));
     $applicant_father->setNoteDetail($this->getRequestParameter('father_note_detail'));
     if ($this->getRequestParameter('father_date_note')) {
         $applicant_father->setNoteDate($this->getRequestParameter('father_date_note'));
     }
     $applicant_father->setRelation(StudentParents::RELATION_FATHER);
     $applicant_father->save();
     #Data Orang Tua (Ibu)
     $applicant_mother = new TestApplicantParents();
     $applicant_mother->setName($this->getRequestParameter('mother'));
     $applicant_mother->setTestApplicant($applicant);
     if ($this->getRequestParameter('mother_dob')) {
         $applicant_mother->setDob($this->getRequestParameter('mother_dob'));
     }
     $applicant_mother->setPob($this->getRequestParameter('mother_pob'));
     $applicant_mother->setReligionId($this->getRequestParameter('religion_mother'));
     $applicant_mother->setDegreeId($this->getRequestParameter('degree_mother'));
     $applicant_mother->setJob($mother_job);
     $applicant_mother->setAddress($this->getRequestParameter('address'));
     $applicant_mother->setOfficePhone($this->getRequestParameter('mother_office_phone'));
     $applicant_mother->setPostCode($this->getRequestParameter('post_code'));
     $applicant_mother->setRegionId($this->getRequestParameter('region_id'));
     $applicant_mother->setHomePhone($this->getRequestParameter('home_phone'));
     $applicant_mother->setCellphone($this->getRequestParameter('mother_cellphone'));
     $applicant_mother->setCountryId($this->getRequestParameter('mother_country'));
     $applicant_mother->setMonthlyRevenue($this->getRequestParameter('mother_revenue'));
     $applicant_mother->setEmail($this->getRequestParameter('email'));
     $applicant_mother->setNote($this->getRequestParameter('mother_note'));
     $applicant_mother->setNoteDetail($this->getRequestParameter('mother_note_detail'));
     if ($this->getRequestParameter('mother_date_note')) {
         $applicant_mother->setNoteDate($this->getRequestParameter('mother_date_note'));
     }
     $applicant_mother->setRelation(StudentParents::RELATION_MOTHER);
     $applicant_mother->save();
     $this->getContext()->getUser()->signInTestApplicant($applicant);
     #return $this->redirect('auth/start');
     return $this->redirect('auth/index');
 }