You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

338 lines
11 KiB
PHP

<?php
use NN\Route;
use NN\Session;
use NN\Module\DB;
use NN\Module\DD;
use NN\Link;
use NN\Files;
use NN\load;
use NN\Module\View;
use NN\Module\Uuid as id;
use NN\Webs;
use NN\Bug;
use NN\Module\crontab;
use NN\Module\Help;
use NN\Module\Datatable;
use NN\Enc;
use NN\Post;
class Api_googlink {
private $link = [];
public function addLink($url, $callback){
$url = preg_replace('/\{([^}]+)\}/', '([^/]+)', $url);
$this->link[$url] = $callback;
}
public function run($link = ""){
foreach($this->link as $pattern => $callback){
$pattern = '#^' . $pattern . '$#';
if(preg_match($pattern, $link, $matches)){
header('Content-Type: application/json');
try {
array_shift($matches);
call_user_func_array($callback, $matches);
} catch (\Exception $e) {
echo json_encode([
"status" => "error",
"message" => $e->getMessage()
]);
}
return;
}
}
echo json_encode([
"status" => "error",
"message" => "no action"
]);
}
}
$api = new Api_googlink();
$api->addLink('/cooperatives/getcooperativedetail/{id}', function($id=""){
if($id == "888"){
echo json_encode([
"id" => 1,
"no" => 1,
"code" => "001",
"special_code" => "888",
"name" => "WARPEKAMART",
"description" => "WARPEKAMART merupakan koperasi yang berdiri sejak tahun 1996 dengan nomor badan hukum 4344/BH-II/1996. Koperasi ini dipimpin oleh Drs. H. Nadlif, M.Si sebagai ketua dan H. Suwanto, M.Pd sebagai bendahara, serta diawasi oleh Sholikh, S.Pd., M.PdI.",
"type" => "Konsumen",
"created_date" => "1996-09-27",
"address" => "JL. ARIF RAHMAN HAKIM NO. 108 GRESIK",
"latitude" => -7.1635451,
"longitude" => 112.646249,
"phone" => "(031) 3973837",
"email" => "warpekamart@gmail.com",
"photo_file" => "/images/koperasi.png",
"logo_file" => "/images/koperasi.png",
"database_name" => null,
"database_created" => 1,
"app_folder" => null,
"app_created" => 1,
"url_profile" => null,
"dividend_percentage" => 30,
"version_app" => "01.00.01",
"postal_code" => "61122",
"city" => "GRESIK",
"admin" => "Ika Novita Sari",
"cashier" => "Aulia Sukmana Pasi",
"shu_usp" => 146267177,
"shu_induk" => 643749331,
"shu_blusp" => 315201,
"shu_blinduk" => 315101,
"ppn_sl" => 0,
"ppn_rate" => 0,
"online_shop" => 1,
"created_at" => "2023-01-16T05:48:39.000000Z",
"updated_at" => "2023-01-16T05:48:39.000000Z"
]);
}else{
echo json_encode([
"status" => "error",
"message" => "data not found"
]);
}
});
$api->addLink('/auth/pin', function(){
$accept = $_SERVER['HTTP_ACCEPT'];
$authorization = $_SERVER['HTTP_AUTHORIZATION'];
header("Content-Type: $accept");
$token = explode(" ", $authorization)[1];
$memberid = $_POST['member_id'];
$pin = $_POST['pin'];
// cek barier token
$cek = DB::query_result_object_row("SELECT * FROM login WHERE token = '$token' AND memberid = '$memberid'");
if($cek != null){
$pin_exist = DB::query_result_object_row("SELECT pin FROM anggota WHERE kode = '$memberid' AND pin = '$pin'");
if($pin_exist != null){
echo json_encode([
'success' => true,
'message' => 'Successfully you can access this page'
]);
return;
}else{
echo json_encode([
'success' => false,
'message' => 'Failed pin',
]);
return;
}
}else{
echo json_encode([
'success' => false,
'message' => 'pin not corect',
]);
return;
}
});
$api->addLink('/logout', function(){
$accept = $_SERVER['HTTP_ACCEPT'];
$authorization = $_SERVER['HTTP_AUTHORIZATION'];
header("Content-Type: $accept");
$token = explode(" ", $authorization)[1];
$memberid = $_POST['id'];
// cek barier token
$cek = DB::query_result_object_row("SELECT * FROM login WHERE token = '$token' AND memberid = '$memberid'");
if($cek != null){
DB::query("DELETE FROM login WHERE token = '$token' AND memberid = '$memberid'");
echo json_encode([
'status' => 'success',
'message' => 'Logged out successfully'
]);
return;
}else{
echo json_encode([
'status' => 'error',
'message' => 'Failed to logout',
'error' => $memberid
]);
return;
}
});
$api->addLink('/login', function($id=""){
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
echo json_encode([
'status' => 'error',
'message' => 'Method not allowed'
]);
return;
}
$accept = $_SERVER['HTTP_ACCEPT'];
$mobile_phone = $_POST['mobile_phone'];
$password = $_POST['password'];
$device_token_id = $_POST['device_token_id'];
$android_id = $_POST['android_id'];
// Generate random prefix number between 1000-9999
$prefix = rand(1000, 9999);
// Generate random string for token
$length = 40;
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$token = '';
for ($i = 0; $i < $length; $i++) {
$token .= $characters[rand(0, strlen($characters) - 1)];
}
// Combine prefix and token with pipe separator
$final_token = $prefix . '|' . $token;
$response = DB::query_result_object_row("SELECT * FROM anggota where telp = '$mobile_phone' AND password = '$password'");
if($response != null){
$totable = [
"android_id" => $android_id,
"device_token_id" => $device_token_id,
"member_id" => $response->kode,
"anggota" => $response->nama,
"login_time" => date("Y-m-d H:i:s"),
"token" => $final_token
];
$table = "login";
$query = "INSERT INTO $table (android_id, device_token_id, memberid, anggota, login_time, token)
SELECT * FROM (SELECT '$android_id', '$device_token_id', '$response->kode', '$response->nama', '".date("Y-m-d H:i:s")."', '$final_token') AS tmp
WHERE NOT EXISTS (
SELECT android_id, device_token_id FROM $table
WHERE android_id = '$android_id' AND device_token_id = '$device_token_id'
) LIMIT 1";
DB::query($query);
echo json_encode([
"success" => true,
"message" => "login berhasil",
"token" => $final_token,
"data" => [
"id" => $response->kode,
"cooperative_id" => 1,
"branch_id" => 1,
"ring_id" => 2,
"bto_biz_id" => 1,
"bto_cell_id" => 1,
"perks_level_id" => 1,
"member_no" => "1145",
"account_counter" => 4,
"name" => $response->nama,
"mobile_phone" => $response->telp,
"mobile_phone_verified" => 1,
"email" => "-",
"email_verified_at" => null,
"photo_profile_file" => "/assets/images/profile.png",
"pin" => "$2y$10$9PLwq79saFGP7/Jy3KTBFeLY.bB89vI4z.Mm/bd.XCWmtz3kcGVLe",
"referral_code" => "888GUG274",
"bank_name" => null,
"bank_account_name" => null,
"bank_account_number" => null,
"virtual_account" => null,
"token" => null,
"android_id" => $android_id,
"device_token_id" => $device_token_id,
"login_status" => 1,
"dantar_android_id" => null,
"dantar_device_token_id" => null,
"dantar_login_status" => 0,
"dantar_driver_android_id" => null,
"dantar_driver_device_token_id" => null,
"dantar_driver_login_status" => 0,
"dantar_admin_android_id" => null,
"dantar_admin_device_token_id" => null,
"dantar_admin_login_status" => 0,
"shop_device_token_id" => null,
"shop_login_status" => 0,
"time_registered" => $response->masuk,
"data_verified" => 1,
"data_verified_date" => "2024-11-12 12:22:17",
"initial_obligation" => 1,
"initial_obligation_verified" => 0,
"initial_obligation_verified_date" => null,
"active" => 0,
"terminate" => 0,
"deleted" => 0,
"created_at" => "2024-10-08T06:19:56.000000Z",
"updated_at" => "2024-12-15T07:26:19.000000Z",
"data_personal_status" => true,
"data_family_status" => true,
"data_document_status" => true,
"nip" => "",
"ktp" => "",
"dept" => "A",
"unit" => null,
"unitkerja" => "Kepala Dispendik Kab. Gresik",
"bagian" => null,
"status" => "0",
"golkar" => null,
"gaji" => "0",
"kota" => "Gresik",
"pokok" => "0",
"wajib" => "80000",
"manasuka" => "20000",
"bw" => "200000",
"tk" => "200000",
"swp" => "0",
"uang" => null,
"spuang" => null,
"spbank" => null,
"spbarang" => null,
"kunci" => null,
"nomor" => null,
"keluar" => null,
"dk" => null,
"batas" => "",
"idcard" => null,
"idlog" => null,
"kdpos" => "",
"tgllahir" => "1972-04-22",
"jk" => "L",
"prima" => "1",
"jurubayar" => "Kab",
"rekapgol" => "DINAS KAB",
"laporan" => "1",
]
]);
}else{
echo json_encode([
"success" => false,
"message" => "login gagal",
]);
}
});
foreach(Webs::map(SETUP_PATH.'web/android/') as $pathLoad){
try{
include_once $pathLoad;
}catch(Exception $e){
// throw error
}
};
$route->add('/api', function() use ($api){
global $_GET;
$api->run($_GET['u']);
})
->use('vendor/autoload.php')
->use('module/db.php')
->use('module/dd.php')
->use('module/perusahaan.php');