api for user, login admin and server side tables

This commit is contained in:
kicap1992
2021-04-08 06:57:30 +08:00
parent 47ef4f9ec5
commit cb4b2fbaa6
6 changed files with 526 additions and 117 deletions

View File

@ -14,8 +14,9 @@ class Api extends RestController
function __construct()
{
parent::__construct();
// $this->load->model('model');;
$this->load->model('model');;
// $this->db->query("SET sql_mode = '' ");
date_default_timezone_set("Asia/Kuala_Lumpur");
}
public function index_get()
@ -25,44 +26,121 @@ class Api extends RestController
}
// -----------------------------------------------------------------------------------------------------------
public function login_post()
public function admin_get()
{
$where = $this->get('where');
// if ($this->post("proses") == "login") {
// $data = $this->model->serialize($this->post('data'));
// $username = $this->post("username");
// $password = $this->post("password");
// // // print_r($data);
// // $result = $this->model->tampil_data_where('tb_login',$data)->result();
// $result = $this->model->tampil_data_where('tb_login',array("username" => $username, "password" => $password))->result();
// print_r($result[0]->nik);
$cek_data = $this->model->tampil_data_where('tb_admin',$where)->result();
// if (count($result) > 0) {
// $this->session->set_userdata('login', array("level" => "admin" , "nik" => $result[0]->nik));
$this->session->set_userdata('login', array("level" => "admin" ));
// // print_r("data ada");
// $this->response(['res' => "ok"], 200);
// }else{
// $this->response(['res'=> "ko"],404);
// }
if (count($cek_data) > 0 ){
$this->response(['res' => 'ok','data' => $cek_data], 200);
}else{
$this->response(['res' => 'ko'], 200);
}
// redirect(base_url());
$this->response(['res' => "ok"], 200);
// }else{
// $this->response(['res' => "ko"], 400);
// }
}
// public function login_delete()
// {
// $nim = $this->get('nim');
// print_r($this->get('nim'));
// print_r($this->post('proses'));
// }
public function login_get()
{
$where = $this->get('where');
$level = $where['level'] ?? null;
if($level != null){
$cek_data = $this->model->tampil_data_where('tb_login',[ ($level == 'admin') ? 'nik_admin' : 'nik_user' => $where['nik'] , 'level' => $level])->result();
}
else{
$cek_data = $this->model->tampil_data_where('tb_login',$where)->result();
}
if (count($cek_data) > 0 ){
$this->response(['res' => 'ok','url' => $cek_data[0]->level, 'level' => $cek_data[0]->level, 'nik' => ($cek_data[0]->level == 'user') ? $cek_data[0]->nik_user : $cek_data[0]->nik_admin ,'data' => $cek_data], 200);
}else{
$this->response(['res' => 'ko'], 200);
}
// $this->response(['res' => 'ok', 'cek_data' => $cek_data], 200);
// redirect(base_url());
}
public function user_post(){
$data = $this->post('data');
// $data = $this->model->serialize($data);
$cek_data = $this->model->tampil_data_where('tb_user',['nik_user' => $data['nik_user']])->result();
if(count($cek_data) > 0){
$this->response(['message' => 'ko'], 400);
}else{
$data = array_merge($data,array('tanggal_pendaftaran' => date('Y-m-d H:m:s')));
$this->model->insert('tb_user',$data);
$this->model->insert('tb_login',['username' => $data['nik_user'] , 'password' => $data['nik_user'],'nik_user' => $data['nik_user'], 'level' => 'user']);
$this->response(['message' => 'ok','data' => $data], 200);
}
}
public function user_put(){
$detail = $this->put('detail');
$where = $this->put('where');
// $data = $this->model->serialize($data);
$cek_data = $this->model->tampil_data_where('tb_user',$where)->result();
if(count($cek_data) > 0){
// $this->response(['message' => 'ko'], 400);
$simpanan_wajib = $detail['simpanan_wajib'] ?? null;
$simpanan_sukarela = $detail['simpanan_sukarela'] ?? null;
if ($simpanan_wajib != null){
$array_simpanan_wajib = json_decode($cek_data[0]->simpanan_wajib) ?? null;
if($array_simpanan_wajib == null){
$detail = ['simpanan_wajib' => json_encode($detail['simpanan_wajib'])];
}else{
$array_simpanan_wajib = array_merge($array_simpanan_wajib,$detail['simpanan_wajib']);
$detail = ['simpanan_wajib' => json_encode($array_simpanan_wajib)];
}
}
if ($simpanan_sukarela != null){
$array_simpanan_sukarela = json_decode($cek_data[0]->simpanan_sukarela) ?? null;
if($array_simpanan_sukarela == null){
$detail = ['simpanan_sukarela' => json_encode($detail['simpanan_sukarela'])];
}else{
$array_simpanan_sukarela = array_merge($array_simpanan_sukarela,$detail['simpanan_sukarela']);
$detail = ['simpanan_sukarela' => json_encode($array_simpanan_sukarela)];
}
}
$this->model->update('tb_user',$where,$detail);
$this->response(['message' => 'ok'], 200);
}else{
$this->response(['message' => 'ko'], 400);
}
}
public function user_get()
{
$where = $this->get('where');
$cek_data = $this->model->tampil_data_where('tb_user',$where)->result();
$this->response(['res' => 'ok','data' => $cek_data], 200);
}
}

View File

@ -7,80 +7,233 @@ class Home extends CI_Controller {
{
parent::__construct();
$this->load->model('model');
$this->load->model('m_tabel_ss');
}
function index()
{
// $this->load->view('home/login');
// print_r('sini login');
if ($this->input->post('proses') == 'login') {
// print_r('sini login asdasd');
$username = $this->input->post('username');
$password = $this->input->post('password');
function index(){
if ($this->input->post('proses') == "table_user") {
$list = $this->m_tabel_ss->get_datatables(array('nik_user','nama','tanggal_daftar','status'),array(null, 'nik_user','nama','tanggal_daftar','simpanan_pokok','status',null),array('status' => 'desc'),"tb_user",null,null,"*");
$data = array();
$no = $_POST['start'];
foreach ($list as $field) {
$cek_data =$this->model->tampil_data_where('tb_login',['username' =>$username , 'password' =>$password ])->result();
// print_r($cek_data[0]->level);
$no++;
$row = array();
$row[] = $no;
$row[] = $field->nik_user;
$row[] = $field->nama;
$row[] = $field->tanggal_pendaftaran;
$row[] = 'Rp. ' . number_format($field->simpanan_pokok);
$row[] = $field->status;
$row[] = '<center><button type="button" onclick="detail_user('.$field->nik_user.')" class="btn btn-primary btn-circle btn-sm waves-effect waves-light"><i class="ico fa fa-edit"></i></button></center>';
$data[] = $row;
}
if (count($cek_data) > 0) {
switch ($cek_data[0]->level) {
case 'admin':
$this->output->set_status_header(200)->set_content_type('application/json')->set_output(json_encode(array("res" => "ok" , 'level' => $cek_data[0]->level, 'nik' => $cek_data[0]->nik_admin)));
break;
case 'user':
$this->output->set_status_header(200)->set_content_type('application/json')->set_output(json_encode(array("res" => "ok" , 'level' => $cek_data[0]->level, 'nik' => $cek_data[0]->nik_user)));
break;
}
$output = array(
"draw" => $_POST['draw'],
"recordsTotal" => $this->m_tabel_ss->count_all("tb_user",null,null,"*"),
"recordsFiltered" => $this->m_tabel_ss->count_filtered(array('nik_user','nama','tanggal_daftar','status'),array(null, 'nik_user','nama','tanggal_daftar','simpanan_pokok','status',null),array('status' => 'desc'),"tb_user",null,null,"*"),
"data" => $data,
);
//output dalam format JSON
echo json_encode($output);
}
if ($this->input->post('proses') == "table_simpanan_pokok") {
$list = $this->m_tabel_ss->get_datatables(array('nik_user','nama','tanggal_daftar','status','simpanan_pokok'),array(null, 'nik_user','nama','tanggal_daftar','simpanan_pokok','status'),array('status' => 'desc'),"tb_user",null,null,"*");
$data = array();
$no = $_POST['start'];
foreach ($list as $field) {
$no++;
$row = array();
$row[] = $no;
$row[] = $field->nik_user;
$row[] = $field->nama;
$row[] = $field->tanggal_pendaftaran;
$row[] = 'Rp. ' . number_format($field->simpanan_pokok);
$row[] = $field->status;
$row[] = '<center><button type="button" onclick="detail_user('.$field->nik_user.')" class="btn btn-primary btn-circle btn-sm waves-effect waves-light"><i class="ico fa fa-edit"></i></button></center>';
$data[] = $row;
}
$output = array(
"draw" => $_POST['draw'],
"recordsTotal" => $this->m_tabel_ss->count_all("tb_user",null,null,"*"),
"recordsFiltered" => $this->m_tabel_ss->count_filtered(array('nik_user','nama','tanggal_daftar','status','simpanan_pokok'),array(null, 'nik_user','nama','tanggal_daftar','simpanan_pokok','status'),array('status' => 'desc'),"tb_user",null,null,"*"),
"data" => $data,
);
//output dalam format JSON
echo json_encode($output);
}
if ($this->input->post('proses') == "table_list_guru_simpanan_wajib") {
$list = $this->m_tabel_ss->get_datatables(array('nik_user','nama'),array(null, 'nik_user','nama',null,null,null),array('tanggaL-daftar' => 'desc'),"tb_user",null,['status' => 'aktif'],"*");
$data = array();
$no = $_POST['start'];
foreach ($list as $field) {
$simpanan_wajib = json_decode($field->simpanan_wajib,true) ?? null;
if($simpanan_wajib != null){
function date_simpanan($a,$b)
{
return strcmp($a['tanggal_simpanan'],$b['tanggal_simpanan']);
}
/// atur kembali array berdasarkan tanggal
usort($simpanan_wajib , 'date_simpanan');
end($simpanan_wajib);
$key = key($simpanan_wajib);
$simpanan_wajib = $simpanan_wajib[$key];
////pilih array yg terakhir dari key
}
$no++;
$row = array();
$row[] = $no;
$row[] = $field->nik_user;
$row[] = $field->nama;
$row[] = $simpanan_wajib['tanggal_simpanan'] ?? 'Belum Pernah Melakukan Simpanan Wajib ';
$row[] = ($simpanan_wajib) ? 'Rp. '.number_format( $simpanan_wajib['simpanan']) : '-';
$row[] = '<center><button type="button" onclick="detail_user('.$field->nik_user.')" class="btn btn-primary btn-circle btn-sm waves-effect waves-light"><i class="ico fa fa-edit"></i></button></center>';
$data[] = $row;
}
$output = array(
"draw" => $_POST['draw'],
"recordsTotal" => $this->m_tabel_ss->count_all("tb_user",null,['status' => 'aktif'],"*"),
"recordsFiltered" => $this->m_tabel_ss->count_filtered(array('nik_user','nama'),array(null, 'nik_user','nama',null,null,null),array('tanggaL-daftar' => 'desc'),"tb_user",null,['status' => 'aktif'],"*"),
"data" => $data,
);
//output dalam format JSON
echo json_encode($output);
}
if ($this->input->post('proses') == "table_list_guru_simpanan_sukarela") {
$list = $this->m_tabel_ss->get_datatables(array('nik_user','nama'),array(null, 'nik_user','nama',null,null,null),array('tanggaL-daftar' => 'desc'),"tb_user",null,['status' => 'aktif'],"*");
$data = array();
$no = $_POST['start'];
foreach ($list as $field) {
$simpanan_sukarela = json_decode($field->simpanan_sukarela,true) ?? null;
if($simpanan_sukarela != null){
function date_simpanan($a,$b)
{
return strcmp($a['tanggal_simpanan'],$b['tanggal_simpanan']);
}
/// atur kembali array berdasarkan tanggal
usort($simpanan_sukarela , 'date_simpanan');
end($simpanan_sukarela);
$key = key($simpanan_sukarela);
$simpanan_sukarela = $simpanan_sukarela[$key];
////pilih array yg terakhir dari key
}
$no++;
$row = array();
$row[] = $no;
$row[] = $field->nik_user;
$row[] = $field->nama;
$row[] = $simpanan_sukarela['tanggal_simpanan'] ?? 'Belum Pernah Melakukan Simpanan Sukarela ';
$row[] = ($simpanan_sukarela) ? 'Rp. '.number_format( $simpanan_sukarela['simpanan']) : '-';
$row[] = '<center><button type="button" onclick="detail_user('.$field->nik_user.')" class="btn btn-primary btn-circle btn-sm waves-effect waves-light"><i class="ico fa fa-edit"></i></button></center>';
$data[] = $row;
}
$output = array(
"draw" => $_POST['draw'],
"recordsTotal" => $this->m_tabel_ss->count_all("tb_user",null,['status' => 'aktif'],"*"),
"recordsFiltered" => $this->m_tabel_ss->count_filtered(array('nik_user','nama'),array(null, 'nik_user','nama',null,null,null),array('tanggaL-daftar' => 'desc'),"tb_user",null,['status' => 'aktif'],"*"),
"data" => $data,
);
//output dalam format JSON
echo json_encode($output);
}
if ($this->input->post('proses') == 'cari_usernya') {
$search = $this->input->post('searchTerm');
$fetchData = $this->model->tampil_data_where('tb_user',"status = 'Aktif' and (nik_user like '%".$search."%' or nama like '%".$search."%' ) limit 5")->result();
$data = array();
// while ($row = mysqli_fetch_array($fetchData)) {
// $data[] = array("id"=>$row['id'], "text"=>$row['name']);
// }
foreach ($fetchData as $key => $value) {
$data[] = array("id" => $value->nik_user, "text" => $value->nik_user.' | '.$value->nama);
}
echo json_encode($data);
}
if ($this->input->post('proses') == 'table_simpanan_user_wajib') {
$i = 1;
$cek_data = $this->model->tampil_data_where('tb_user',array('nik_user' => $this->input->post('nik_user')))->result();
if(count($cek_data) > 0){
$ket = json_decode($cek_data[0]->simpanan_wajib,true);
function date_simpanan($a,$b)
{
return strcmp($a['tanggal_simpanan'],$b['tanggal_simpanan']);
}
/// atur kembali array berdasarkan tanggal
usort($ket , 'date_simpanan');
foreach ($ket as $key => $value) {
// $data[$i]['no'] = $i;
$data[$i]['waktu'] = $value['tanggal_simpanan'];
$data[$i]['ket'] = 'Rp. '. number_format($value['simpanan']);
// $data[$i]['foto'] = $value['foto'];
$i++;
}
$out = array_values($data);
echo json_encode($out);
}
else
{
$this->output->set_status_header(400)->set_content_type('application/json')->set_output(json_encode(array("res" => "ko" )));
echo json_encode(array());
}
}
else if ($this->input->post('proses') == 'cek_data') {
// print_r('cek data');
$nik = $this->input->post('nik');
$level = $this->input->post('level');
// print_r($level);
$cek_data =$this->model->tampil_data_where('tb_login',['nik_'.$level =>$nik ])->result();
if ($this->input->post('proses') == 'table_simpanan_user_sukarela') {
$i = 1;
$cek_data = $this->model->tampil_data_where('tb_user',array('nik_user' => $this->input->post('nik_user')))->result();
if(count($cek_data) > 0){
$ket = json_decode($cek_data[0]->simpanan_sukarela,true);
function date_simpanan($a,$b)
{
return strcmp($a['tanggal_simpanan'],$b['tanggal_simpanan']);
}
/// atur kembali array berdasarkan tanggal
usort($ket , 'date_simpanan');
foreach ($ket as $key => $value) {
// $data[$i]['no'] = $i;
$data[$i]['waktu'] = $value['tanggal_simpanan'];
$data[$i]['ket'] = 'Rp. '. number_format($value['simpanan']);
// $data[$i]['foto'] = $value['foto'];
// print_r(count($cek_data));
if (count($cek_data) > 0) {
print_r(json_encode(['res' => 'ok' , 'url' => $level.'/']));
$i++;
}
$out = array_values($data);
echo json_encode($out);
}
else
{
print_r(json_encode(['res' => 'ko' ]));
echo json_encode(array());
}
}
else if ($this->input->post('proses') == 'cek_data_detail') {
// print_r('cek data');
$nik = $this->input->post('nik');
$level = $this->input->post('level');
// print_r($level);
$cek_data =$this->model->tampil_data_where('tb_'.$level,['nik_'.$level =>$nik ])->result();
// print_r(count($cek_data));
if (count($cek_data) > 0) {
print_r(json_encode(['res' => 'ok' , 'nama' => $cek_data[0]->nama]));
}
else
{
print_r(json_encode(['res' => 'ko' ]));
}
}
}
}
?>

View File

@ -0,0 +1,109 @@
<?php
class M_tabel_ss extends CI_Model {
public function __construct()
{
parent::__construct();
$this->load->database();
}
private function _get_datatables_query($column_search,$column_order,$order,$table,$table_join,$where,$as)
{
$column_search = $column_search;
$column_order = $column_order;
$order = $order;
$this->db->select($as);
$this->db->from($table);
if ($where != null) {
$this->db->where($where);
}
if ($table_join != null) {
// $this->db->where($where);
foreach ($table_join as $key => $value) {
$this->db->join($value['table'],$value['join']);
}
}
$i = 0;
// foreach ($this->column_search as $item) // looping awal
foreach ($column_search as $item) // looping awal
{
if($_POST['search']['value']) // jika datatable mengirimkan pencarian dengan metode POST
{
if($i===0) // looping awal
{
$this->db->group_start();
$this->db->like($item, $_POST['search']['value']);
}
else
{
$this->db->or_like($item, $_POST['search']['value']);
}
// if(count($this->column_search) - 1 == $i)
if(count($column_search) - 1 == $i)
$this->db->group_end();
}
$i++;
}
if(isset($_POST['order']))
{
$this->db->order_by($column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
// $this->db->order_by($this->column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
}
else if(isset($this->order))
{
$order = $this->order;
$this->db->order_by(key($order), $order[key($order)]);
}
}
function get_datatables($column_search,$column_order,$order,$table,$table_join,$where,$as)
{
$this->_get_datatables_query($column_search,$column_order,$order,$table,$table_join,$where,$as);
if($_POST['length'] != -1)
$this->db->limit($_POST['length'], $_POST['start']);
$query = $this->db->get();
return $query->result();
}
function count_filtered($column_search,$column_order,$order,$table,$table_join,$where,$as)
{
$this->_get_datatables_query($column_search,$column_order,$order,$table,$table_join,$where,$as);
$query = $this->db->get();
return $query->num_rows();
}
public function count_all($table,$table_join,$where,$as)
{
$this->db->select($as);
$this->db->from($table);
if ($where != null) {
$this->db->where($where);
}
if ($table_join != null) {
// $this->db->where($where);
foreach ($table_join as $key => $value) {
$this->db->join($value['table'],$value['join']);
}
}
return $this->db->count_all_results();
}
}

View File

@ -32,6 +32,16 @@ class Model extends CI_Model {
return $query;
}
function tampil_data_where1($namatabel,$array,$bintang) //gunakan ini untuk menampilkan tabel yg lebih spesifik 'where'
{
$this->db->select($bintang);
$this->db->from($namatabel);
$this->db->where($array);
// $this->db->limit(1);
$query = $this->db->get();
return $query;
}
function tampil_data_keseluruhan_order_by($namatabel,$order_by,$order) //gunakan ini untuk menampilkan tabel yg lebih spesifik 'where'
{
$this->db->select("*");
@ -142,6 +152,34 @@ class Model extends CI_Model {
}
}
function upload_foto($value,$key,$cek_no,$kategori) {
$data = $value;
$data = substr($data, 0, -2);
// $data = 'data:image/'.$data;
// print_r($data);
// define('UPLOAD_DIR', 'images/');
$image_parts = explode(";base64,", $data);
$image_type_aux = explode("image/", $image_parts[0]);
$image_type = $image_type_aux[1];
$image_base64 = base64_decode($image_parts[1]);
// if ($e == 1) {
// $edit = '_edit';
// $file = 'images/'.$cek_no. '/foto'.$edit.$key.'.png';
// }
// else
// {
// $edit = '';
if ($kategori == 'berita') {
$file = 'assets/admin_assets/images/berita/'.$cek_no. '/foto'.$key.'.png';
}
if ($kategori == 'iklan') {
$file = 'assets/admin_assets/images/iklan/'.$cek_no. '/foto'.$key.'.png';
}
file_put_contents($file, $image_base64);
}
function bulan($bulan)
{
@ -203,37 +241,68 @@ class Model extends CI_Model {
return $bulannya;
}
function qrcode_buku($kode){
include "phpqrcode/qrlib.php";
$kode = $kode;
// $PNG_TEMP_DIR = 'images/'.$kategori;
$PNG_WEB_DIR = 'images/buku/';
if (!file_exists($PNG_WEB_DIR))
mkdir($PNG_WEB_DIR);
$errorCorrectionLevel = 'H';
$matrixPointSize = 10;
$filename =$PNG_WEB_DIR.md5($kode).'.png';
QRcode::png($kode, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
if (file_exists($PNG_WEB_DIR.md5($kode).'.png') > 0) {
return "ada";
}else{
return "tiada";
function hari($hari)
{
// $ini = ''
switch ($hari) {
case 'Sunday':
$ini = 'Ahad';
break;
case 'Monday':
$ini = 'Senin';
break;
case 'Tuesday':
$ini = 'Selasa';
break;
case 'Wednesday':
$ini = 'Rabu';
break;
case 'Thursday':
$ini = 'Kamis';
break;
case 'Friday':
$ini = 'Jumat';
break;
case 'Saturday':
$ini = 'Sabtu';
break;
}
return $ini;
}
function cek_last_ai(){
return $this->db->query("SELECT `AUTO_INCREMENT` as no
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '".$this->db->database."'
AND TABLE_NAME = 'tb_map_perpustakaan'");
// function qrcode_buku($kode){
// include "phpqrcode/qrlib.php";
// $kode = $kode;
// // $PNG_TEMP_DIR = 'images/'.$kategori;
// $PNG_WEB_DIR = 'images/buku/';
}
// if (!file_exists($PNG_WEB_DIR))
// mkdir($PNG_WEB_DIR);
// $errorCorrectionLevel = 'H';
// $matrixPointSize = 10;
// $filename =$PNG_WEB_DIR.md5($kode).'.png';
// QRcode::png($kode, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
// if (file_exists($PNG_WEB_DIR.md5($kode).'.png') > 0) {
// return "ada";
// }else{
// return "tiada";
// }
// }
function cek_last_ai($tables){
return $this->db->query("SELECT `AUTO_INCREMENT` as no
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '".$this->db->database."'
AND TABLE_NAME = '".$tables."'")->result()[0]->no;
}
}

View File

@ -18,7 +18,7 @@
"paragonie/random_compat": "Provides better randomness in PHP 5.x"
},
"require-dev": {
"mikey179/vfsStream": "1.1.*",
"mikey179/vfsstream": "1.1.*",
"phpunit/phpunit": "4.* || 5.*"
}
}

View File

@ -2,7 +2,7 @@
Kicap Karan - Koperasi Server
###################
Back of Koperasi Project
Backend of Koperasi Project
*******************
Release Information
@ -15,5 +15,5 @@ License
Created By Kicap Karan
Facebook https://www.facebook.com/kicap.karan
Website https://kicap-karan.com
Website https://kicap-karan.com/index.html