/** * Updates an existing DataManagement model. * If update is successful, the browser will be redirected to the 'view' page. * @param string $id * @return mixed */ public function actionUpdate($id) { $model = $this->findModelUpdatable($id); $domisili = new TabelDomisili(); $currentDomisili = TabelDomisili::find()->where('current = 1 and nik = ' . $id)->one(); $lokasi = new \yii\base\DynamicModel(['alamat', 'kelurahan', 'kecamatan', 'kabupaten', 'provinsi']); $lokasi->addRule(['kelurahan', 'kecamatan', 'kabupaten', 'provinsi'], 'string', ['max' => 20])->addRule(['alamat'], 'string', ['max' => 255]); $lokasi->alamat = $currentDomisili['alamat']; $lokasi->kelurahan = $currentDomisili['kelurahan']; $lokasi->kecamatan = substr($lokasi->kelurahan, 0, strlen($lokasi->kelurahan) - 3); $lokasi->kabupaten = substr($lokasi->kecamatan, 0, strlen($lokasi->kecamatan) - 3); $lokasi->provinsi = substr($lokasi->kabupaten, 0, strlen($lokasi->kabupaten) - 2); if ($model->load(Yii::$app->request->post()) && $domisili->load(Yii::$app->request->post()) && $lokasi->load(Yii::$app->request->post()) && $model->save()) { // VarDumper::dump($_POST["DynamicModel"]["kelurahan"], 6666, true); echo Yii::$app->request->post("DynamicModel['kelurahan']"); if ($_POST["DynamicModel"]["kelurahan"] != $currentDomisili['kelurahan'] || $_POST["TabelDomisili"]["alamat"] != $currentDomisili['alamat']) { $domisili->current = 1; $domisili->nik = $id; $domisili->nik_pencatat = Yii::$app->user->id; $domisili->kelurahan = $lokasi->kelurahan; $domisili->save(false); $currentDomisili['current'] = 0; $currentDomisili->update(); } //VarDumper::dump($domisili->getErrors(),5678,true); //VarDumper::dump($model->getErrors(),5678,true); //echo var_dump($domisili); $this->writeLog('Memperbarui Data dengan NIK ' . $model->nik); return $this->redirect(['view', 'id' => $model->nik]); } else { return $this->render('update', ['model' => $model, 'updatable' => $model, 'domisili' => $currentDomisili, 'lokasi' => $lokasi]); } }
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; } }