public function testValidator() { $model = new yii\base\DynamicModel(['case', 'field1', 'field2']); $model->addRule('case', PetraBarus\Yii2\SwitchCaseValidator\Validator::class, ['cases' => [1 => [['field1', 'required']], 2 => [['field1', 'compare', 'compareValue' => 'Test']], 3 => [['field1', 'compare', 'compareValue' => 'Value 1'], ['field2', 'email']]], 'default' => [['field1', 'compare', 'compareValue' => 'Value 2'], ['field2', 'compare', 'compareValue' => 'Value 4']]]); $model->case = 1; $model->validate(); $this->assertTrue($model->hasErrors()); $model->field1 = 'Hello World!'; $model->validate(); $this->assertFalse($model->hasErrors()); $model->case = 2; $model->validate(); $this->assertTrue($model->hasErrors()); $model->field1 = 'Test'; $model->validate(); $this->assertFalse($model->hasErrors()); $model->case = 3; $model->validate(); $this->assertTrue($model->hasErrors()); $model->field1 = 'Value 1'; $model->field2 = 'Value 3'; $model->validate(); $this->assertTrue($model->hasErrors()); $model->field2 = '*****@*****.**'; $model->validate(); $this->assertFalse($model->hasErrors()); $model->case = 4; $model->validate(); $this->assertTrue($model->hasErrors()); $model->field1 = 'Value 2'; $model->field2 = 'Value 4'; $model->validate(); $this->assertFalse($model->hasErrors()); }
public function actionExport() { $render = null; $exchanger = new Exchanger(); $model = new \yii\base\DynamicModel(['tabel']); $model->addRule(['tabel'], 'string', ['max' => 30]); if ($model->load(Yii::$app->request->post()) && $model->validate()) { switch ($model->tabel) { case '1': $this->exportPenduduk(); $this->writeLog("Melakukan eksport data Penduduk ke excel"); die; break; case '2': $this->exportKeluarga(); $this->writeLog("Melakukan eksport data Kartu Keluarga ke excel"); die; break; case '3': $this->exportAktivitasUser(); $this->writeLog("Melakukan eksport data Aktivitas User ke excel"); die; break; default: break; } } $xlsModel = new UploadXlsForm(); if ($xlsModel->load(Yii::$app->request->post())) { libxml_use_internal_errors(true); $file = UploadedFile::getInstance($xlsModel, 'file'); $filename = 'Data_Penduduk' . Date('YmdGis') . '.' . $file->extension; define('XLS_PATH', '../runtime/upload/'); $upload = $file->saveAs(XLS_PATH . $filename); if ($upload) { $xlsFile = XLS_PATH . $filename; try { $inputFT = \PHPExcel_IOFactory::identify($xlsFile); $objReader = \PHPExcel_IOFactory::createReader($inputFT); $objPHPExcel = $objReader->load($xlsFile); } catch (Exception $e) { die('Error'); } $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn(); for ($row = 0; $row <= $highestRow; $row++) { $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, True, False); // VarDumper::dump($rowData); if ($row == 1) { continue; } $baseModel = new DataManagement(); $subModel = new BaseUpdatable(); $domisili = new TabelDomisili(); $baseModel->nik = $rowData[0][0]; $baseModel->nama = $rowData[0][1]; $baseModel->tempat_lahir = $rowData[0][2]; $baseModel->tanggal_lahir = $rowData[0][3]; $baseModel->jenis_kelamin = Exchanger::getKodeJK($rowData[0][4]); $baseModel->golongan_darah = $rowData[0][5]; $baseModel->tanggal_diterbitkan = $rowData[0][6]; $baseModel->nik_pencatat = $rowData[0][7]; $subModel->nik = $baseModel->nik; $subModel->no_kk = $rowData[0][8]; $subModel->status_keluarga = Exchanger::getKodeStatusKeluarga($rowData[0][9]); $subModel->ayah = $rowData[0][10]; $subModel->ibu = $rowData[0][11]; $subModel->agama = Exchanger::getKodeAgama($rowData[0][12]); $domisili->kelurahan = $rowData[0][16]; $domisili->rt = $rowData[0][17]; $domisili->rw = $rowData[0][18]; $domisili->alamat = $rowData[0][19]; $subModel->status_perkawinan = Exchanger::getKodeStatusPerkawinan($rowData[0][20]); $subModel->pekerjaan = $rowData[0][21]; $subModel->pendidikan_terakhir = Exchanger::getKodePendidikan($rowData[0][22]); // $subModel->foto = BaseUpdatable::findOne($baseModel->nik)->foto; $baseModel->save(); $subModel->save(); $domisili->save(); } unlink(XLS_PATH . $filename); $this->writeLog("Melakukan import excel Data Penduduk"); die; $render = $this->redirect('export'); } } $modelCsv = new \yii\base\DynamicModel(['tabelcsv']); $modelCsv->addRule(['tabelcsv'], 'string', ['max' => 30]); if ($modelCsv->load(Yii::$app->request->post())) { switch ($modelCsv->tabelcsv) { case '1': $this->exportPendudukCsv(); $this->writeLog("Melakukan eksport data Penduduk ke csv"); die; break; case '2': $this->exportKeluargaCsv(); $this->writeLog("Melakukan eksport data Kartu Keluarga ke csv"); die; break; case '3': $this->exportAktivitasUserCsv(); $this->writeLog("Melakukan eksport data Aktivitas User ke csv"); die; break; } } $uploadCsv = new UploadCsvForm(); if ($uploadCsv->load(Yii::$app->request->post())) { $file = UploadedFile::getInstance($uploadCsv, 'file'); $filename = 'Data_Penduduk' . Date('YmdGis') . '.' . $file->extension; $upload = $file->saveAs('../runtime/upload/' . $filename); if ($upload) { define('CSV_PATH', '../runtime/upload/'); $csvFile = CSV_PATH . $filename; $csv = file($csvFile); unset($csv[0]); // Remove headers foreach ($csv as $data) { $baseModel = new DataManagement(); $in = explode(",", $data); $baseModel->nik = $in[0]; $baseModel->nama = $in[1]; $baseModel->tempat_lahir = $in[2]; $baseModel->tanggal_lahir = $in[3]; $baseModel->jenis_kelamin = $in[4]; $baseModel->golongan_darah = $in[5]; $baseModel->tanggal_diterbitkan = $in[6]; $baseModel->nik_pencatat = $in[7]; $baseModel->save(); } unlink('../runtime/upload/' . $filename); $this->writeLog("Melakukan import csv data penduduk"); $render = $this->redirect('export'); } } if (empty($render)) { return $this->render('index', ['modelCsv' => $modelCsv, 'uploadCsv' => $uploadCsv, 'model' => $model, 'upload' => $xlsModel]); } else { return $render; } }