Last active
January 11, 2016 16:58
-
-
Save roy-bukapeta/cf77590e382a0b0afe87 to your computer and use it in GitHub Desktop.
API IUWASH for Mobile App
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace app\controllers; | |
use Yii; | |
use yii\web\UploadedFile; | |
use app\models\Formulir; | |
use dektrium\user\Finder; | |
use dektrium\user\models\LoginForm; | |
class ApiController extends \yii\web\Controller | |
{ | |
public function beforeAction($action) | |
{ | |
Yii::$app->controller->enableCsrfValidation = false; | |
return parent::beforeAction($action); | |
} | |
public function actionIndex() | |
{ | |
return $this->render('index'); | |
} | |
/*** | |
* Function Tanggal | |
* Untuk generate tanggal sekarang | |
***/ | |
public function Tanggal() | |
{ | |
date_default_timezone_set('Asia/Jakarta'); | |
return str_replace(['.'], [''], microtime(true)); | |
} | |
/*** | |
* API Login | |
* Merupakan authentication pada mobile app | |
* | |
* Method : | |
* POST | |
* | |
* Parameters : | |
* username (STRING) | |
* password (STRING) | |
* base_url (STRING) | |
* | |
* Return (JSON) : | |
* user_id (INTEGER) | |
* username (STRING) | |
* authenticated (BOOLEAN) - ( TRUE = 'login success' OR FALSE = 'login failed' ) | |
* base_url (STRING) | |
***/ | |
public function actionLogin() | |
{ | |
if (Yii::$app->request->post()) { | |
$finder = Yii::createObject(Finder::className()); | |
$model = Yii::createObject(LoginForm::className()); | |
$model->login = $_POST['username']; | |
$model->password = $_POST['password']; | |
if($model->validate()) { | |
return json_encode(['Message' => ['user_id'=>$finder->findUserByUsername($_POST['username'])->id, 'username'=> $_POST['username'], 'authenticated'=> TRUE, 'baseurl'=> 'http://iuwash.local-server.link'], 'Status' => 'Success']); | |
}else{ | |
return json_encode(['Message' => ['username'=> $_POST['username'], 'authenticated'=> FALSE, 'baseurl'=> 'http://iuwash.local-server.link'], 'Status' => 'Success']); | |
} | |
}else{ | |
return json_encode(['Message' => 'Method must be POST', 'Status' => 'Failed']); | |
} | |
} | |
/*** | |
* API Create | |
* Merupakan insert data dari mobile app ke Tabel Formulir | |
* | |
* Method : | |
* POST | |
* | |
* Parameters : | |
* responden_nama (STRING) | |
* responden_nama_jalan (STRING) | |
* responden_no_rumah (STRING) | |
* responden_rt (STRING) | |
* responden_rw (STRING) | |
* responden_kelurahan (STRING) | |
* responden_kecamatan (STRING) | |
* responden_kabupaten (STRING) | |
* responden_propinsi (STRING) | |
* responden_kode_pos (STRING) | |
* responden_id_pelanggan (STRING) | |
* responden_id_pelanggan_pdam (STRING) | |
* responden_kepimilikan (STRING) | |
* responden_sumber_air_bersih (STRING) | |
* responden_jarak_dari_septiktank (STRING) | |
* responden_tipe_bangunan (STRING) | |
* responden_daerah_banjir (STRING) | |
* responden_daya_pln (STRING) | |
* responden_rekening_pdam_atau_air_bulan_terakhir (STRING) | |
* responden_jumlah_penghuni (STRING) | |
* responden_foto_rumah (JSON) | |
* sanitasi_jenis_jamban (STRING) | |
* sanitasi_punya_septiktank (STRING) | |
* ltt_akses (STRING) | |
* ltt_lokasi_septiktank (STRING) | |
* ltt_jarak_septiktank_dari_jalan (STRING) | |
* ltt_lebar_jalan (STRING) | |
* sanitasi_sumber_air_limbah (STRING) | |
* sanitasi_bahan_atau_material (STRING) | |
* sanitasi_jumlah_septiktank (STRING) | |
* sanitasi_dibangun_pada (STRING) | |
* sanitasi_ukuran_septiktank (STRING) | |
* sanitasi_penyaluran_buangan_septiktank (STRING) | |
* sanitasi_sedot_tinja (STRING) | |
* sanitasi_sedot_tinja_ya_waktunya (STRING) | |
* sanitasi_sedot_tinja_ya_biaya_sedot (STRING) | |
* sanitasi_sedot_tinja_ya_mekanisme_pembayaran (STRING) | |
* sanitasi_sedot_tinja_tidak_minat_memiliki_st (STRING) | |
* media_informasi_yang_paling_disukai (STRING) | |
* foto (JSON) | |
* coordinate_latitude (FLOAT) | |
* coordinate_longitude (FLOAT) | |
* id_user (INTEGER) | |
* | |
* Return (JSON) : | |
* Message (ARRAY) | |
* Create (STRING) - ( Created | Failed ) | |
* Status (STRING) - ( Success | Failed ) | |
***/ | |
public function actionCreate() | |
{ | |
if (Yii::$app->request->post()) { | |
$model = New Formulir(); | |
/* Untuk mengakomodir upload gambar (responden_foto_rumah & foto) */ | |
$date_time_rfr = $this->tanggal(); | |
$date_time_foto = $this->tanggal(); | |
if ($_FILES) { | |
if ($_FILES['responden_foto_rumah']) { | |
/* create folder @app/web/uploads/foto/$this->tanggal() */ | |
$create_folder = exec('mkdir ' .Yii::getAlias('@webroot') . '/uploads/foto/' . $date_time_rfr); | |
/* save .jpg to path @app/web/uploads/foto/$this->tanggal()/filename.jpg */ | |
move_uploaded_file($_FILES['responden_foto_rumah']['tmp_name'], Yii::getAlias('@webroot') . '/uploads/foto/' . $date_time_rfr . '/' . $_FILES['responden_foto_rumah']['name']); | |
/* Intervensi path gambar ke Field responden_foto_rumah */ | |
$_POST['responden_foto_rumah'] = $date_time_rfr . '/' . $_FILES['responden_foto_rumah']['name']; | |
} | |
if ($_FILES['foto']) { | |
/* create folder @app/web/uploads/foto/$this->tanggal() */ | |
$create_folder = exec('mkdir ' .Yii::getAlias('@webroot') . '/uploads/foto/' . $date_time_foto); | |
/* save .jpg to path @app/web/uploads/foto/$this->tanggal()/filename.jpg */ | |
move_uploaded_file($_FILES['foto']['tmp_name'], Yii::getAlias('@webroot') . '/uploads/foto/' . $date_time_foto . '/' . $_FILES['foto']['name']); | |
/* Intervensi path gambar ke Field foto */ | |
$_POST['foto'] = $date_time_foto . '/' . $_FILES['foto']['name']; | |
} | |
} | |
/*** | |
* Convert WKT to Geometry | |
* From coordinate_latitude and coordinate_longitude To Geomentry | |
**/ | |
$wkt = Yii::$app->db->createCommand("SELECT ST_GeomFromText('POINT(".$_POST['coordinate_latitude']." ".$_POST['coordinate_longitude'].")', 4326) AS geomentry")->queryAll(); | |
$the_geom = $wkt[0]['geomentry']; | |
/* Intervensi dari hasil convert (geometry) ke Field Point */ | |
$_POST['point'] = $the_geom; | |
/* Merge kiriman POST dengan nama model */ | |
$data['Formulir'] = $_POST; | |
if($model->load($data) && $model->save()) { | |
return json_encode(['Message' => ['create'=> 'Created'], 'Status' => 'Success']); | |
}else{ | |
return json_encode(['Message' => ['create'=> 'Failed'], 'Status' => 'Success']); | |
} | |
}else{ | |
return json_encode(['Message' => 'Method must be POST', 'Status' => 'Failed']); | |
} | |
} | |
/*** | |
* API READ | |
* Merupakan Membaca data Formulir berdasarkan id (Primary Key) dari mobile app | |
* | |
* Method : | |
* GET | |
* | |
* Parameters : | |
* id (INTEGER) | |
* | |
* Return (JSON) : | |
* Message (ARRAY) | |
* responden_nama (STRING) | |
* responden_nama_jalan (STRING) | |
* responden_no_rumah (STRING) | |
* responden_rt (STRING) | |
* responden_rw (STRING) | |
* responden_kelurahan (STRING) | |
* responden_kecamatan (STRING) | |
* responden_kabupaten (STRING) | |
* responden_propinsi (STRING) | |
* responden_kode_pos (STRING) | |
* responden_id_pelanggan (STRING) | |
* responden_id_pelanggan_pdam (STRING) | |
* responden_kepimilikan (STRING) | |
* responden_sumber_air_bersih (STRING) | |
* responden_jarak_dari_septiktank (STRING) | |
* responden_tipe_bangunan (STRING) | |
* responden_daerah_banjir (STRING) | |
* responden_daya_pln (STRING) | |
* responden_rekening_pdam_atau_air_bulan_terakhir (STRING) | |
* responden_jumlah_penghuni (STRING) | |
* responden_foto_rumah (JSON) | |
* sanitasi_jenis_jamban (STRING) | |
* sanitasi_punya_septiktank (STRING) | |
* ltt_akses (STRING) | |
* ltt_lokasi_septiktank (STRING) | |
* ltt_jarak_septiktank_dari_jalan (STRING) | |
* ltt_lebar_jalan (STRING) | |
* sanitasi_sumber_air_limbah (STRING) | |
* sanitasi_bahan_atau_material (STRING) | |
* sanitasi_jumlah_septiktank (STRING) | |
* sanitasi_dibangun_pada (STRING) | |
* sanitasi_ukuran_septiktank (STRING) | |
* sanitasi_penyaluran_buangan_septiktank (STRING) | |
* sanitasi_sedot_tinja (STRING) | |
* sanitasi_sedot_tinja_ya_waktunya (STRING) | |
* sanitasi_sedot_tinja_ya_biaya_sedot (STRING) | |
* sanitasi_sedot_tinja_ya_mekanisme_pembayaran (STRING) | |
* sanitasi_sedot_tinja_tidak_minat_memiliki_st (STRING) | |
* media_informasi_yang_paling_disukai (STRING) | |
* foto (JSON) | |
* coordinate_latitude (FLOAT) | |
* coordinate_longitude (FLOAT) | |
* Status (STRING) - ( Success | Failed ) | |
***/ | |
public function actionRead($id) | |
{ | |
if (Yii::$app->request->get()) { | |
$model = Formulir::find()->select('id, responden_nama, responden_nama_jalan, responden_no_rumah, responden_rt, responden_rw, responden_kelurahan, responden_kecamatan, responden_kabupaten, responden_propinsi, responden_kode_pos, responden_id_pelanggan, responden_id_pelanggan_pdam, responden_kepimilikan, responden_sumber_air_bersih, responden_jarak_dari_septiktank, responden_tipe_bangunan, responden_daerah_banjir, responden_daya_pln, responden_rekening_pdam_atau_air_bulan_terakhir, responden_jumlah_penghuni, responden_foto_rumah, sanitasi_jenis_jamban, sanitasi_punya_septiktank, ltt_akses, ltt_lokasi_septiktank, ltt_jarak_septiktank_dari_jalan, ltt_lebar_jalan, sanitasi_sumber_air_limbah, sanitasi_bahan_atau_material, sanitasi_jumlah_septiktank, sanitasi_dibangun_pada, sanitasi_ukuran_septiktank, sanitasi_penyaluran_buangan_septiktank, sanitasi_sedot_tinja, sanitasi_sedot_tinja_ya_waktunya, sanitasi_sedot_tinja_ya_biaya_sedot, sanitasi_sedot_tinja_ya_mekanisme_pembayaran, sanitasi_sedot_tinja_tidak_minat_memiliki_st, media_informasi_yang_paling_disukai, foto, coordinate_latitude, coordinate_longitude')->where(['id'=>$_GET['id']])->AsArray()->OrderBy('id')->one(); | |
if($model) { | |
return json_encode(['Message' => $model, 'Status' => 'Success']); | |
}else{ | |
return json_encode(['Message' => NULL, 'Status' => 'Failed']); | |
} | |
}else{ | |
return json_encode(['Message' => 'Method must be GET', 'Status' => 'Failed']); | |
} | |
} | |
/*** | |
* API UPDATE | |
* Merupakan Merubah value pada data Formulir berdasarkan id (Primary Key) dari mobile app | |
* | |
* Method : | |
* POST | |
* | |
* Parameters : | |
* id (INTEGER) | |
* responden_nama (STRING) | |
* responden_nama_jalan (STRING) | |
* responden_no_rumah (STRING) | |
* responden_rt (STRING) | |
* responden_rw (STRING) | |
* responden_kelurahan (STRING) | |
* responden_kecamatan (STRING) | |
* responden_kabupaten (STRING) | |
* responden_propinsi (STRING) | |
* responden_kode_pos (STRING) | |
* responden_id_pelanggan (STRING) | |
* responden_id_pelanggan_pdam (STRING) | |
* responden_kepimilikan (STRING) | |
* responden_sumber_air_bersih (STRING) | |
* responden_jarak_dari_septiktank (STRING) | |
* responden_tipe_bangunan (STRING) | |
* responden_daerah_banjir (STRING) | |
* responden_daya_pln (STRING) | |
* responden_rekening_pdam_atau_air_bulan_terakhir (STRING) | |
* responden_jumlah_penghuni (STRING) | |
* responden_foto_rumah (JSON) | |
* sanitasi_jenis_jamban (STRING) | |
* sanitasi_punya_septiktank (STRING) | |
* ltt_akses (STRING) | |
* ltt_lokasi_septiktank (STRING) | |
* ltt_jarak_septiktank_dari_jalan (STRING) | |
* ltt_lebar_jalan (STRING) | |
* sanitasi_sumber_air_limbah (STRING) | |
* sanitasi_bahan_atau_material (STRING) | |
* sanitasi_jumlah_septiktank (STRING) | |
* sanitasi_dibangun_pada (STRING) | |
* sanitasi_ukuran_septiktank (STRING) | |
* sanitasi_penyaluran_buangan_septiktank (STRING) | |
* sanitasi_sedot_tinja (STRING) | |
* sanitasi_sedot_tinja_ya_waktunya (STRING) | |
* sanitasi_sedot_tinja_ya_biaya_sedot (STRING) | |
* sanitasi_sedot_tinja_ya_mekanisme_pembayaran (STRING) | |
* sanitasi_sedot_tinja_tidak_minat_memiliki_st (STRING) | |
* media_informasi_yang_paling_disukai (STRING) | |
* foto (JSON) | |
* coordinate_latitude (FLOAT) | |
* coordinate_longitude (FLOAT) | |
* id_user (INTEGER) | |
* | |
* Return (JSON) : | |
* Message (ARRAY) | |
* Update (STRING) - ( Updated | Failed ) | |
* Status (STRING) - ( Success | Failed ) | |
***/ | |
public function actionUpdate() | |
{ | |
if (Yii::$app->request->post()) { | |
$model = Formulir::findOne($_POST['id']); | |
/*** | |
* Convert WKT to Geometry | |
* From coordinate_latitude and coordinate_longitude To Geomentry | |
**/ | |
$wkt = Yii::$app->db->createCommand("SELECT ST_GeomFromText('POINT(".$_POST['coordinate_latitude']." ".$_POST['coordinate_longitude'].")', 4326) AS geomentry")->queryAll(); | |
$the_geom = $wkt[0]['geomentry']; | |
/* Intervensi dari hasil convert (geometry) ke Field Point */ | |
$_POST['point'] = $the_geom; | |
/* Merge kiriman POST dengan nama model */ | |
$data['Formulir'] = $_POST; | |
if($model->load($data) && $model->save()) { | |
return json_encode(['Message' => ['update'=> 'Updated'], 'Status' => 'Success']); | |
}else{ | |
return json_encode(['Message' => ['update'=> 'Failed'], 'Status' => 'Success']); | |
} | |
}else{ | |
return json_encode(['Message' => 'Method must be POST', 'Status' => 'Failed']); | |
} | |
} | |
/*** | |
* API DELETE | |
* Merupakan menghapus data Formulir berdasarkan id (Primary Key) dari mobile app | |
* | |
* Method : | |
* POST | |
* | |
* Parameters : | |
* id (INTEGER) | |
* | |
* Return (JSON) : | |
* Message (ARRAY) | |
* Delete (STRING) - ( Deleted | Failed ) | |
* Status (STRING) - ( Success | Failed ) | |
***/ | |
public function actionDelete($id) | |
{ | |
if (Yii::$app->request->post()) { | |
$model = Formulir::findOne($_POST['id'])->delete(); | |
if($model) { | |
return json_encode(['Message' => ['delete'=> 'deleted'], 'Status' => 'Success']); | |
}else{ | |
return json_encode(['Message' => ['delete'=> 'Failed'], 'Status' => 'Success']); | |
} | |
}else{ | |
return json_encode(['Message' => 'Method must be POST', 'Status' => 'Failed']); | |
} | |
} | |
/*** | |
* API SEARCH | |
* Merupakan mencari data Formulir berdasarkan radius tertentu dari titik mobile app berada dengan keyword tertentu | |
* | |
* Method : | |
* POST | |
* | |
* Parameters : | |
* id (INTEGER) | |
* radius (INTEGER) | |
* keyword (STRING) | |
* latitude (FLOAT) | |
* longitude (FLOAT) | |
* | |
* Return (JSON) : | |
* Message (ARRAY) | |
* id | |
* coordinate_latitude | |
* coordinate_longitude | |
* responden_nama | |
* responden_id_pelanggan | |
* responden_id_pelanggan_pdam | |
* Status (STRING) - ( Success | Failed ) | |
***/ | |
public function actionSearch() | |
{ | |
if (Yii::$app->request->post()) { | |
$query_keyword = $_POST['keyword']; | |
$coordinate_latitude = $_POST['latitude']; | |
$coordinate_longitude = $_POST['longitude']; | |
$query_radius = ($_POST['radius'] / 110000 * abs(cos(deg2rad($coordinate_longitude)))) * 4; // Meter | |
if ($query_keyword) { | |
/* Mengambil data berdasarkan radius area dan keyword tertentu */ | |
$search = Yii::$app->db->createCommand("SELECT id, coordinate_latitude, coordinate_longitude, responden_nama, responden_id_pelanggan, responden_id_pelanggan_pdam FROM formulir INNER JOIN ST_Buffer(ST_GeomFromText('POINT(".$coordinate_latitude." ".$coordinate_longitude.")',4326), ".$query_radius.") As buffer ON ST_covers(buffer,point) AND LOWER(responden_nama||responden_nama_jalan||responden_no_rumah||responden_rt||responden_rw||responden_kelurahan||responden_kecamatan||responden_kabupaten||responden_propinsi||responden_id_pelanggan||responden_id_pelanggan_pdam||responden_kepimilikan||responden_sumber_air_bersih||responden_jarak_dari_septiktank||responden_tipe_bangunan||responden_daerah_banjir||responden_daya_pln||responden_rekening_pdam_atau_air_bulan_terakhir||responden_jumlah_penghuni||sanitasi_jenis_jamban||sanitasi_punya_septiktank||ltt_akses||ltt_lokasi_septiktank||ltt_jarak_septiktank_dari_jalan||ltt_lebar_jalan||sanitasi_sumber_air_limbah||sanitasi_bahan_atau_material||sanitasi_jumlah_septiktank||sanitasi_dibangun_pada||sanitasi_ukuran_septiktank||sanitasi_penyaluran_buangan_septiktank||sanitasi_sedot_tinja||sanitasi_sedot_tinja_ya_waktunya||sanitasi_sedot_tinja_ya_biaya_sedot||sanitasi_sedot_tinja_ya_mekanisme_pembayaran||sanitasi_sedot_tinja_tidak_minat_memiliki_st||media_informasi_yang_paling_disukai) LIKE '%".strtolower($query_keyword)."%'")->queryAll(); | |
}else{ | |
/* Mengambil data berdasarkan radius area dan keyword tertentu */ | |
$search = Yii::$app->db->createCommand("SELECT id, coordinate_latitude, coordinate_longitude, responden_nama, responden_id_pelanggan, responden_id_pelanggan_pdam FROM formulir INNER JOIN ST_Buffer(ST_GeomFromText('POINT(".$coordinate_latitude." ".$coordinate_longitude.")',4326), ".$query_radius.") As buffer ON ST_covers(buffer,point)")->queryAll(); | |
} | |
if($search) { | |
return json_encode(['Message' => $search, 'Status' => 'Success']); | |
}else{ | |
return json_encode(['Message' => ['search'=> 'No data'], 'Status' => 'Success']); | |
} | |
}else{ | |
return json_encode(['Message' => 'Method must be POST', 'Status' => 'Failed']); | |
} | |
} | |
/*** | |
* API SEARCH COLUMN | |
* Merupakan mencari data Formulir berdasarkan radius tertentu dari titik mobile app berada dengan keyword dan column tertentu | |
* | |
* Method : | |
* POST | |
* | |
* Parameters : | |
* id (INTEGER) | |
* radius (INTEGER) | |
* keyword (STRING) | |
* column (STRING) | |
* latitude (FLOAT) | |
* longitude (FLOAT) | |
* | |
* Return (JSON) : | |
* Message (ARRAY) | |
* id | |
* coordinate_latitude | |
* coordinate_longitude | |
* responden_nama | |
* responden_id_pelanggan | |
* responden_id_pelanggan_pdam | |
* Status (STRING) - ( Success | Failed ) | |
***/ | |
public function actionSearchcolumn() | |
{ | |
if (Yii::$app->request->post()) { | |
$query_keyword = $_POST['keyword']; | |
$query_column = $_POST['column']; | |
$coordinate_latitude = $_POST['latitude']; | |
$coordinate_longitude = $_POST['longitude']; | |
$query_radius = ($_POST['radius'] / 110000 * abs(cos(deg2rad($coordinate_longitude)))) * 4; // Meter | |
/* Mengambil data berdasarkan radius area dan keyword tertentu */ | |
$search = Yii::$app->db->createCommand("SELECT id, coordinate_latitude, coordinate_longitude, responden_nama, responden_id_pelanggan, responden_id_pelanggan_pdam FROM formulir INNER JOIN ST_Buffer(ST_GeomFromText('POINT(".$coordinate_latitude." ".$coordinate_longitude.")',4326), ".$query_radius.") As buffer ON ST_covers(buffer,point) AND CONCAT_WS('|','".$query_column."') LIKE '%".$query_keyword."%';")->queryAll(); | |
if($search) { | |
return json_encode(['Message' => $search, 'Status' => 'Success']); | |
}else{ | |
return json_encode(['Message' => ['searchcolumn'=> 'No data'], 'Status' => 'Success']); | |
} | |
}else{ | |
return json_encode(['Message' => 'Method must be POST', 'Status' => 'Failed']); | |
} | |
} | |
/*** | |
* API DATA | |
* Merupakan mencari semua data Formulir | |
* | |
* Method : | |
* GET | |
* | |
* Return (JSON) : | |
* Message (ARRAY) | |
* id | |
* coordinate_latitude | |
* coordinate_longitude | |
* responden_nama | |
* responden_id_pelanggan | |
* responden_id_pelanggan_pdam | |
* Status (STRING) - ( Success | Failed ) | |
***/ | |
public function actionData() | |
{ | |
/* Mengambil data berdasarkan radius area tertentu */ | |
$data = Formulir::find()->select('id, coordinate_latitude, coordinate_longitude, responden_nama, responden_id_pelanggan, responden_id_pelanggan_pdam')->AsArray()->OrderBy('id')->all(); | |
if($data) { | |
return json_encode(['Message' => $data, 'Status' => 'Success']); | |
}else{ | |
return json_encode(['Message' => ['data'=> 'No data'], 'Status' => 'Success']); | |
} | |
} | |
/*** | |
* API DATA OWN | |
* Merupakan mencari data Formulir berdasarkan kepemilikan (id_user) | |
* | |
* Method : | |
* POST | |
* | |
* Parameters : | |
* id_user (INTEGER) | |
* | |
* Return (JSON) : | |
* Message (ARRAY) | |
* id | |
* coordinate_latitude | |
* coordinate_longitude | |
* responden_nama | |
* responden_id_pelanggan | |
* responden_id_pelanggan_pdam | |
* Status (STRING) - ( Success | Failed ) | |
***/ | |
public function actionDataown() | |
{ | |
if (Yii::$app->request->post()) { | |
$query_radius = $_POST['id_user']; | |
/* Mengambil data berdasarkan id_user tertentu */ | |
$data_own = Formulir::find()->select('id, coordinate_latitude, coordinate_longitude, responden_nama, responden_id_pelanggan, responden_id_pelanggan_pdam')->where(['id_user'=>$_POST['id_user']])->AsArray()->OrderBy('id')->all(); | |
if($data_own) { | |
return json_encode(['Message' => $data_own, 'Status' => 'Success']); | |
}else{ | |
return json_encode(['Message' => ['data'=> 'No data'], 'Status' => 'Success']); | |
} | |
}else{ | |
return json_encode(['Message' => 'Method must be POST', 'Status' => 'Failed']); | |
} | |
} | |
/*** | |
* API DATA RADIUS | |
* Merupakan mencari data Formulir berdasarkan radius tertentu dari titik kordinat mobile app | |
* | |
* Method : | |
* POST | |
* | |
* Parameters : | |
* radius (INTEGER) | |
* latitude (FLOAT) | |
* longitude (FLOAT) | |
* | |
* Return (JSON) : | |
* Message (ARRAY) | |
* id | |
* coordinate_latitude | |
* coordinate_longitude | |
* responden_nama | |
* responden_id_pelanggan | |
* responden_id_pelanggan_pdam | |
* Status (STRING) - ( Success | Failed ) | |
***/ | |
public function actionDataradius() | |
{ | |
if (Yii::$app->request->post()) { | |
$coordinate_latitude = $_POST['latitude']; | |
$coordinate_longitude = $_POST['longitude']; | |
$query_radius = $_POST['radius'] / 110000 * abs(cos(deg2rad($coordinate_longitude))); // Meter | |
/* Mengambil data berdasarkan radius area tertentu */ | |
$data_radius = Yii::$app->db->createCommand("SELECT id, coordinate_latitude, coordinate_longitude, responden_nama, responden_id_pelanggan, responden_id_pelanggan_pdam FROM formulir INNER JOIN ST_Buffer(ST_GeomFromText('POINT(".$coordinate_latitude." ".$coordinate_longitude.")',4326), ".$query_radius.") As buffer ON ST_covers(buffer,point);")->queryAll(); | |
if($data_radius) { | |
return json_encode(['Message' => $data_radius, 'Status' => 'Success']); | |
}else{ | |
return json_encode(['Message' => ['data'=> 'No data'], 'Status' => 'Success']); | |
} | |
}else{ | |
return json_encode(['Message' => 'Method must be POST', 'Status' => 'Failed']); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment