Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace frontend\modules\scholarship\controllers;
- use frontend\models\ObjectReference;
- use frontend\models\ScholarshipProgram;
- use frontend\models\ScholarshipApplicant;
- use frontend\models\ScholarshipRegistration;
- use frontend\models\ScholarshipProgramSearch;
- use Yii;
- use yii\base\ErrorException;
- use yii\web\Controller;
- use yii\helpers\ArrayHelper;
- use yii\web\NotFoundHttpException;
- use kartik\icons\Icon;
- class DefaultController extends Controller{
- public $layout = '@app/views/layouts/scholarship';
- public function actionIndex(){
- return $this->render('index');
- }
- /**
- * Update profile
- * @return string|\yii\web\Response
- * @throws ErrorException
- */
- public function actionProfile(){
- if(Yii::$app->request->isPost){ // jika ada post request (Create/update data)
- Yii::$app->getSession()->setFlash('success', Icon::show('check').' Profil Anda berhasil di update. Anda masih dapat mengedit data profil.');
- $applicantId = Yii::$app->request->post()['ScholarshipApplicant']['id'];
- $scholarshipApplicant = ($result = ScholarshipApplicant::findOne($applicantId)) ? $result : new ScholarshipApplicant();
- $scholarshipApplicant->attributes = Yii::$app->request->post()['ScholarshipApplicant'];
- $scholarshipApplicant->uploadDocument(array(
- 'photo_binary',
- 'last_sk_file_binary',
- 'd3_certificate_file_binary',
- 'd3_transcript_file_binary',
- 's1_certificate_file_binary',
- 's1_transcript_file_binary',
- 's2_certificate_file_binary',
- 's2_transcript_file_binary',
- 's3_certificate_file_binary',
- 's3_transcript_file_binary',
- ));
- if($scholarshipApplicant->save()){
- Yii::$app->getSession()->setFlash('success', Icon::show('check').' Profil Anda berhasil di update. Anda masih dapat mengedit data profil.');
- return $this->redirect(['index']);
- }else{
- Yii::$app->getSession()->setFlash('error', print_r($scholarshipApplicant->errors));
- //throw new ErrorException('Error saat memasukkan data pendaftar');
- //return $this->refresh();
- }
- }else{ // jika hanya Read (view)
- $hrisData = getHRIS();
- $applicantId = $hrisData ? $hrisData['IDPegawai'] : null;
- $modelsArray = array();
- // apabila tidak ada ScholarshipApplicant, ambil dari HRIS
- // apabila sudah ada, ambil ScholarshipAPplicant
- // bila tidak ada, render kosongan
- // semua case diatas, apabila ada data HRIS maka birthday selalu di perbarui
- if(!($modelsArray['scholarshipApplicantModel'] = ScholarshipApplicant::findOne($applicantId))){
- $modelsArray['scholarshipApplicantModel'] = new ScholarshipApplicant();
- if($hrisData){
- $eselon1 = '';
- $eselon2 = '';
- $eselon3 = '';
- $eselon4 = '';
- $eselons = explode(',', $hrisData['NamaUnit']);
- if(count($eselons) == 1){
- $eselon1 = $eselons[0];
- }
- if(count($eselons) == 2){
- $eselon1 = $eselons[1];
- $eselon2 = $eselons[0];
- }else if(count($eselons) == 3){
- $eselon1 = $eselons[2];
- $eselon2 = $eselons[1];
- $eselon3 = $eselons[0];
- }else if(count($eselons) == 4){
- $eselon1 = $eselons[3];
- $eselon2 = $eselons[2];
- $eselon3 = $eselons[1];
- $eselon4 = $eselons[0];
- }
- $modelsArray['scholarshipApplicantModel']->attributes = array(
- 'id' => $hrisData['IDPegawai'],
- 'name' => $hrisData['Nama'],
- 'nip' => $hrisData['NIP18'] ? $hrisData['NIP18'] : $hrisData['NIP9'],
- 'born' => $hrisData['TempatLahir'],
- 'birthday' => $tmpBirthdate = substr($hrisData['TanggalLahir'], 0, 10), // 1986-04-30T00:00:00Z -> 1986-04-30
- 'gender' => ($hrisData['IDRefJenisKelamin'] == 'P') ? 1 : 0, // P = laki-laki
- 'age' => calculateAge($tmpBirthdate),
- 'married' => ($hrisData['Hubungan'] == 'Sudah Menikah') ? 1 : 0,
- 'rank' => $hrisData['UraianPangkat'].' / '.$hrisData['UraianGolongan'],
- 'eselon_1' => $eselon1,
- 'eselon_2' => $eselon2,
- 'eselon_3' => $eselon3,
- 'eselon_4' => $eselon4,
- 'home_phone' => $hrisData['NomorTelepon'] ? $hrisData['NomorTelepon'] : null,
- 'home_address' => $hrisData['Alamat'] ? $hrisData['Alamat'] : null,
- 'office_phone' => $hrisData['NoTelpKantor'] ? $hrisData['NoTelpKantor'] : null,
- 'office_address' => $hrisData['AlamatKantor'] ? $hrisData['AlamatKantor'] : null,
- );
- }
- }
- // untuk umur, tetap harus selalu ambil dari HRIS
- if($hrisData){
- $modelsArray['scholarshipApplicantModel']->birthday = $tmpBirthdate = substr($hrisData['TanggalLahir'], 0, 10);
- $modelsArray['scholarshipApplicantModel']->age = calculateAge($tmpBirthdate);
- }
- // pada saat pertama kali data dibuat, save dibawah pasti akan error (karena data yang lain belum lengkap)
- // namun untuk edit data selanjutnya, pasti akan selalu diperbarui
- $modelsArray['scholarshipApplicantModel']->save();
- return $this->render('profile', array(
- 'applicant_id' => $applicantId,
- 'scholarshipApplicantModel' => $modelsArray['scholarshipApplicantModel'],
- // berkaitan dengan object references. maaf saya hanya copas dari `student/profile`, sepertinya pun tidak dipakai :(
- 'object_references_array' => array(
- 'unit' => 'Unit',
- 'religion' => 'Agama',
- 'rank_class' => 'Pangkat / Golongan',
- 'graduate' => 'Pendidikan'
- ),
- 'unit' => $this->translateObjectReference($applicantId, 'unit'),
- 'religion' => $this->translateObjectReference($applicantId, 'religion'),
- 'rank_class' => $this->translateObjectReference($applicantId, 'rank_class'),
- 'graduate' => $this->translateObjectReference($applicantId, 'graduate'),
- 'identity' => $hrisData
- ));
- }
- }
- /**
- * Melihat daftar program/beasiswa
- * @param string $year
- * @return string
- */
- public function actionProgram($year = ''){
- if(empty($year)) $year = date('Y');
- $searchModel = new ScholarshipProgramSearch();
- $queryParameters = Yii::$app->request->getQueryParam('ScholarshipProgramSearch');
- if($year != 'all') $queryParameters['ScholarshipProgramSearch']['year'] = $year;
- $queryParameters['ScholarshipSearch']['status'] = STATE_NORMAL;
- $queryParameters = ArrayHelper::merge(Yii::$app->request->getQueryParams(), $queryParameters);
- $dataProvider = $searchModel->search($queryParameters);
- $dataProvider->getSort()->defaultOrder = array(
- 'age_constraint' => SORT_DESC,
- 'start' => SORT_DESC,
- 'end' => SORT_DESC,
- );
- return $this->render('program', array(
- 'searchModel' => $searchModel,
- 'dataProvider' => $dataProvider,
- 'year' => $year,
- ));
- }
- /**
- * Detail beasiswa
- * @param $scholarshipId
- * @return string
- */
- public function actionView($scholarshipId){
- $scholarshipModel = ScholarshipProgram::findOne($scholarshipId);
- if(getHRIS() == 0) $this->redirect(['index']);
- $hrisData['birthday'] = ($tmp = getHRIS($this)['TanggalLahir']) ? substr($tmp, 0, 10) : null;
- return $this->render('viewScholarshipDetail', [
- 'scholarshipModel' => $scholarshipModel,
- 'personModel' => (object) $hrisData,
- ]);
- }
- /**
- * Register/mendaftar sebuah beasiswa
- * @param $scholarshipId
- * @return string
- * @throws ErrorException
- * @throws NotFoundHttpException
- */
- public function actionRegister($scholarshipId){
- $hrisData = getHRIS();
- if(Yii::$app->request->isPost){ // jika ada post request (Create/update data)
- // todo: validasi item TKBI yang di upload
- $applicantId = Yii::$app->request->post()['ScholarshipApplicant']['id'];
- $scholarshipApplicant = ($result = ScholarshipApplicant::findOne($applicantId)) ? $result : new ScholarshipApplicant();
- $scholarshipApplicant->attributes = Yii::$app->request->post()['ScholarshipApplicant'];
- $scholarshipApplicant->uploadDocument(array(
- 'photo_binary',
- 'last_sk_file_binary',
- 'd3_certificate_file_binary',
- 'd3_transcript_file_binary',
- 's1_certificate_file_binary',
- 's1_transcript_file_binary',
- 's2_certificate_file_binary',
- 's2_transcript_file_binary',
- 's3_certificate_file_binary',
- 's3_transcript_file_binary',
- ));
- // perbarui umur lagi
- $scholarshipApplicant->birthday = $tmpBirthdate = substr($hrisData['TanggalLahir'], 0, 10);
- $scholarshipApplicant->age = calculateAge($tmpBirthdate);
- if($scholarshipApplicant->save()){
- $scholarshipRegistration = ($result = ScholarshipRegistration::find()
- ->where(['applicant_id' => $applicantId, 'scholarship_id' => $scholarshipId])
- ->orderBy('id DESC')
- ->one()) ? $result : new ScholarshipRegistration();
- $attributeArray = Yii::$app->request->post()['ScholarshipRegistration'];
- $attributeArray['scholarship_id'] = $scholarshipId;
- $attributeArray['applicant_id'] = $scholarshipApplicant->getPrimaryKey();
- $scholarshipRegistration->attributes = $attributeArray;
- $scholarshipRegistration->uploadDocument(array(
- 'tpa_file_binary',
- 'tkbi_1_file_binary',
- 'tkbi_2_file_binary',
- 'tkbi_3_file_binary',
- 'recommendation_letter_binary',
- 'statement_letter_binary',
- 'clean_letter_binary',
- 'dp3_binary',
- 'health_letter_binary',
- ));
- if($scholarshipRegistration->save()){
- if(Yii::$app->request->post()['btnSave'] == 'temporary'){
- Yii::$app->getSession()->setFlash('success', Icon::show('check').' Registrasi/Pembaruan data sukses. Anda masih dapat mengedit data pendaftaran selama periode pendaftaran belum ditutup');
- return $this->redirect(['program']);
- }else{
- Yii::$app->getSession()->setFlash('warning', Icon::show('warning').' Setelah melakukan Simpan Permanen, data pendaftaran sudah tidak dapat dirubah lagi');
- return $this->redirect(['confirm', 'scholarshipId' => $scholarshipId]);
- }
- }else Yii::$app->getSession()->setFlash('warning', print_r($scholarshipRegistration->errors));
- }else Yii::$app->getSession()->setFlash('warning', print_r($scholarshipApplicant->errors));
- }else{ // jika hanya Read (view)
- $applicantId = ($tmp = getHRIS()['IDPegawai']) ? $tmp : null;
- $modelsArray = array();
- if(!($modelsArray['scholarshipModel'] = ScholarshipProgram::findOne($scholarshipId)))
- throw new NotFoundHttpException('The requested page does not exist.');
- // cari data pada ScholarshipApplicant
- // bila tidak ada, cari dari HRIS
- // bila tidak ada, render kosongan
- if(!($modelsArray['scholarshipApplicantModel'] = ScholarshipApplicant::findOne($applicantId))){
- $modelsArray['scholarshipApplicantModel'] = new ScholarshipApplicant();
- if($hrisData){
- $modelsArray['scholarshipApplicantModel']->attributes = array(
- 'id' => $hrisData['IDPegawai'],
- 'name' => $hrisData['Nama'],
- 'nip' => $hrisData['NIP18'] ? $hrisData['NIP18'] : $hrisData['NIP9'],
- 'born' => $hrisData['TempatLahir'],
- 'birthday' => $tmpBirthdate = substr($hrisData['TanggalLahir'], 0, 10), // 1986-04-30T00:00:00Z -> 1986-04-30
- 'gender' => ($hrisData['IDRefJenisKelamin'] == 'P') ? 1 : 0, // P = laki-laki
- 'age' => calculateAge($tmpBirthdate),
- 'married' => ($hrisData['Hubungan'] == 'Sudah Menikah') ? 1 : 0,
- 'home_phone' => $hrisData['NomorTelepon'] ? $hrisData['NomorTelepon'] : null,
- 'home_address' => $hrisData['Alamat'] ? $hrisData['Alamat'] : null,
- 'office_phone' => $hrisData['NoTelpKantor'] ? $hrisData['NoTelpKantor'] : null,
- 'office_address' => $hrisData['AlamatKantor'] ? $hrisData['AlamatKantor'] : null,
- );
- }
- }
- // untuk umur, tetap harus selalu ambil dari HRIS
- if($hrisData){
- $modelsArray['scholarshipApplicantModel']->birthday = $tmpBirthdate = substr($hrisData['TanggalLahir'], 0, 10);
- $modelsArray['scholarshipApplicantModel']->age = calculateAge($tmpBirthdate);
- }
- // save lagi, untuk birthday dan age
- $modelsArray['scholarshipApplicantModel']->save();
- // cari data pendaftaran pada ScholarshipRegistrationMode
- // bila tidak ada, render kosongan
- if(!($modelsArray['scholarshipRegistrationModel'] = ScholarshipRegistration::find()
- ->where(['applicant_id' => $applicantId, 'scholarship_id' => $scholarshipId])
- ->one()))
- $modelsArray['scholarshipRegistrationModel'] = new ScholarshipRegistration();
- return $this->render('ScholarshipRegistrationForm', array(
- 'applicant_id' => $applicantId,
- 'scholarshipModel' => $modelsArray['scholarshipModel'],
- 'scholarshipRegistrationModel' => $modelsArray['scholarshipRegistrationModel'],
- 'scholarshipApplicantModel' => $modelsArray['scholarshipApplicantModel'],
- 'session' => Yii::$app->session,
- // berkaitan dengan object references. Maaf saya hanya copas dari `student/profile` :(
- 'object_references_array' => array(
- 'unit' => 'Unit',
- 'religion' => 'Agama',
- 'rank_class' => 'Pangkat / Golongan',
- 'graduate' => 'Pendidikan'
- ),
- 'unit' => $this->translateObjectReference($applicantId, 'unit'),
- 'religion' => $this->translateObjectReference($applicantId, 'religion'),
- 'rank_class' => $this->translateObjectReference($applicantId, 'rank_class'),
- 'graduate' => $this->translateObjectReference($applicantId, 'graduate'),
- ));
- }
- return $this->redirect('register');
- }
- public function actionConfirm($scholarshipId){
- $hrisData = getHRIS();
- $program = ScholarshipProgram::find()
- ->where([
- 'id' => $scholarshipId,
- 'status' => 1,
- ])
- ->one();
- $scholarshipRegistration = ScholarshipRegistration::find()
- ->where([
- 'applicant_id' => $hrisData['IDPegawai'],
- 'scholarship_id' => $scholarshipId,
- 'status' => 0,
- ])
- ->one();
- $scholarshipApplicant = ScholarshipApplicant::find()
- ->where([
- 'id' => $hrisData['IDPegawai'],
- //'status' => 1,
- ])
- ->one();
- if(Yii::$app->request->isPost){
- $scholarshipRegistration = ScholarshipRegistration::find()
- ->where(['applicant_id' => $hrisData['IDPegawai'], 'scholarship_id' => $scholarshipId])
- ->one();
- $scholarshipRegistration->status = 1;
- if($scholarshipRegistration->save())
- Yii::$app->getSession()->setFlash('success', Icon::show('check').' Simpan Permanen berhasil. Silakan melakukan cetak Bukti Pendaftaran');
- else
- Yii::$app->getSession()->setFlash('warning', Icon::show('warning').' Simpan Permanen gagal. Harap menghubungi panitia');
- return $this->redirect('program');
- }else{
- $constraints = [];
- $validates = [];
- if($program->degree==2){
- $constraints['age'] = 40;
- $constraints['ranks'] = [
- 'Penata Muda / III/a' => 'Penata Muda / III/a',
- 'Penata Muda Tingkat I / III/b' => 'Penata Muda Tingkat I / III/b',
- 'Penata / III/c' => 'Penata / III/c',
- 'Penata Tingkat I / III/d' => 'Penata Tingkat I / III/d',
- 'Pembina / IV/a' => 'Pembina / IV/a',
- 'Pembina Tingkat I / IV/b' => 'Pembina Tingkat I / IV/b',
- 'Pembina Utama Muda / IV/c' => 'Pembina Utama Muda / IV/c',
- 'Pembina Utama Madya / IV/d' => 'Pembina Utama Madya / IV/d',
- 'Pembina Utama / IV/e' => 'Pembina Utama / IV/e',
- ];
- $constraints['certificate'] = ['s1'];
- // CHECKING
- $validates['age'] = false;
- $validates['rank'] = false;
- $validates['s1'] = false;
- if((int)$scholarshipApplicant->age > (int)$constraints['age']){
- $validates['age'] = true;
- }
- if(in_array($scholarshipApplicant->rank,$constraints['ranks'])){
- $validates['rank'] = true;
- }
- if( !empty($scholarshipApplicant->s1_name) and
- !empty($scholarshipApplicant->s1_entry_date) and
- !empty($scholarshipApplicant->s1_graduation_date) and
- !empty($scholarshipApplicant->s1_gpa) and
- !empty($scholarshipApplicant->s1_credit) and
- !empty($scholarshipApplicant->s1_certificate_file) and
- !empty($scholarshipApplicant->s1_transcript_file)){
- $validates['s1'] = true;
- }
- if($scholarshipRegistration->priority==1){
- $constraints['tpa'] = 565;
- $constraints['ibt'] = 79;
- $constraints['ielts'] = 6.5;
- $validates['tpa'] = false;
- if($scholarshipRegistration->tpa_score>$constraints['tpa']){
- $validates['tpa'] = true;
- }
- $validates['ibt_ielts'] = false;
- if($scholarshipRegistration->tkbi_2>$constraints['ibt'] or
- $scholarshipRegistration->tkbi_3>$constraints['ielts']){
- $validates['ibt_ielts'] = true;
- }
- }
- else if($scholarshipRegistration->priority==2){
- $constraints['tpa'] = 565;
- $constraints['pbt'] = 475;
- $validates['tpa'] = false;
- if($scholarshipRegistration->tpa_score>$constraints['tpa']){
- $validates['tpa'] = true;
- }
- $validates['pbt'] = false;
- if($scholarshipRegistration->tkbi_2>$constraints['pbt']){
- $validates['pbt'] = true;
- }
- }
- }
- else if($program->degree==3){
- $constraints['age'] = 42;
- $constraints['ranks'] = [
- 'Penata Muda Tingkat I / III/b' => 'Penata Muda Tingkat I / III/b',
- 'Penata / III/c' => 'Penata / III/c',
- 'Penata Tingkat I / III/d' => 'Penata Tingkat I / III/d',
- 'Pembina / IV/a' => 'Pembina / IV/a',
- 'Pembina Tingkat I / IV/b' => 'Pembina Tingkat I / IV/b',
- 'Pembina Utama Muda / IV/c' => 'Pembina Utama Muda / IV/c',
- 'Pembina Utama Madya / IV/d' => 'Pembina Utama Madya / IV/d',
- 'Pembina Utama / IV/e' => 'Pembina Utama / IV/e',
- ];
- $constraints['certificate'] = ['s1','s2'];
- // CHECKING
- $validates['age'] = false;
- $validates['rank'] = false;
- $validates['s1'] = false;
- $validates['s2'] = false;
- if((int)$scholarshipApplicant->age > (int)$constraints['age']){
- $validates['age'] = true;
- }
- if(in_array($scholarshipApplicant->rank,$constraints['ranks'])){
- $validates['rank'] = true;
- }
- if( !empty($scholarshipApplicant->s1_name) and
- !empty($scholarshipApplicant->s1_entry_date) and
- !empty($scholarshipApplicant->s1_graduation_date) and
- !empty($scholarshipApplicant->s1_gpa) and
- !empty($scholarshipApplicant->s1_credit) and
- !empty($scholarshipApplicant->s1_certificate_file) and
- !empty($scholarshipApplicant->s1_transcript_file)){
- $validates['s1'] = true;
- }
- if( !empty($scholarshipApplicant->s2_name) and
- !empty($scholarshipApplicant->s2_entry_date) and
- !empty($scholarshipApplicant->s2_graduation_date) and
- !empty($scholarshipApplicant->s2_gpa) and
- !empty($scholarshipApplicant->s2_credit) and
- !empty($scholarshipApplicant->s2_certificate_file) and
- !empty($scholarshipApplicant->s2_transcript_file)){
- $validates['s2'] = true;
- }
- if($scholarshipRegistration->priority==1){
- $constraints['tpa'] = 565;
- $constraints['ibt'] = 79;
- $constraints['ielts'] = 6.5;
- $validates['tpa'] = false;
- if($scholarshipRegistration->tpa_score>$constraints['tpa']){
- $validates['tpa'] = true;
- }
- $validates['ibt_ielts'] = false;
- if($scholarshipRegistration->tkbi_2>$constraints['ibt'] or
- $scholarshipRegistration->tkbi_3>$constraints['ielts']){
- $validates['ibt_ielts'] = true;
- }
- }
- else if($scholarshipRegistration->priority==2){
- $constraints['tpa'] = 565;
- $constraints['pbt'] = 550;
- $validates['tpa'] = false;
- if($scholarshipRegistration->tpa_score>$constraints['tpa']){
- $validates['tpa'] = true;
- }
- $validates['pbt'] = false;
- if($scholarshipRegistration->tkbi_2>$constraints['pbt']){
- $validates['pbt'] = true;
- }
- }
- }
- return $this->render('printView', [
- 'program' => $program,
- 'scholarshipRegistration'=>$scholarshipRegistration,
- 'scholarshipApplicant' => $scholarshipApplicant,
- 'constraints' => $constraints,
- 'validates' => $validates,
- ]);
- }
- }
- /**
- * Nuff said
- * @param $applicantId
- * @param $reference
- * @return array|ObjectReference|null|\yii\db\ActiveRecord
- */
- private function translateObjectReference($applicantId, $reference){
- return ($objectReference = ObjectReference::find()
- ->where([
- 'object' => 'person',
- 'object_id' => $applicantId,
- 'type' => $reference,
- ])
- ->one()) ? $objectReference : new ObjectReference();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement