pos-gis/app/Http/Controllers/Controller.php
2024-10-07 13:13:42 +07:00

420 lines
11 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Request as Req;
use App\Models\AuditTrailModel;
use Auth;
use Illuminate\Database\QueryException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Mail;
use DB;
use App\Models\CustomerModel;
use App\Models\NotifListModel;
use Illuminate\Support\Str;
use Endroid\QrCode\QrCode;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Support\Facades\Log;
use Yajra\DataTables\DataTables;
date_default_timezone_set('Asia/Jakarta');
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
public function bsGetView($view,$param)
{
// if (Auth::user()->role == 2){
// if($view == 'content.ref.index'){
// return view('errors.404');
// }
// }
$isAllow = false;
$urlCheck = substr(\Request::getRequestUri(),1);
if (!Auth::user()) {
Auth::guard('admin')->logout();
return view('auth.login');
}
$check = \DB::select("SELECT m.* from menu m
join menu_privilege mp on mp.menu_uid = m.menu_uid
where mp.group_id = ?",[Auth::user()->role]);
foreach ($check as $key => $v) {
if($v->url == '/'.$urlCheck){
$isAllow = true;
}
}
if ($isAllow) {
if (Req::ajax()) {
return view('content.onlyContent')->nest('child', $view,$param);
}else {
return view('content.main')->nest('child', $view,$param);
}
}else{
return view('errors.404');
}
}
public function convertDate($date)
{
return date('Y-m-d',strtotime($date));
}
public function cleanString($string) {
// $string = str_replace(' ', '', $string);
$string = str_replace('(', '', $string);
$string = str_replace(')', '', $string);
return preg_replace('/[^a-zA-Z0-9,()%@_ ]/', '', $string);
}
public function checkRoleAccessRef($type)
{
$isAllow = false;
$check = \DB::select("SELECT m.* from menu m join menu_privilege mp on mp.menu_uid = m.menu_uid where mp.group_id = ?",[Auth::user()->role]);
foreach ($check as $key => $v) {
$typeUrl = substr($v->url, strpos($v->url, "=") + 1);
if($typeUrl == $type){
$isAllow = true;
}
}
return $isAllow;
}
public function checkRoleAccess($type)
{
$isAllow = false;
$check = \DB::select("SELECT m.* from menu m join menu_privilege mp on mp.menu_uid = m.menu_uid where mp.group_id = ?",[Auth::user()->role]);
foreach ($check as $key => $v) {
$typeUrl = substr($v->url, strpos($v->url, "list/") + 5);
if($typeUrl == $type){
$isAllow = true;
}
}
return $isAllow;
}
public function decryptId($request)
{
try {
if ($request->id) {
$decId = Crypt::decryptString($request->id);
$request->merge([
'id' => $decId,
]);
}
if ($request->get_id) {
$decId = Crypt::decryptString($request->get_id);
$request->merge([
'get_id' => $decId,
]);
}
if ($request->outlet_id) {
$decId = Crypt::decryptString($request->outlet_id);
$request->merge([
'outlet_id' => $decId,
]);
}
if ($request->get_mid_tax) {
$decId = Crypt::decryptString($request->get_mid_tax);
$request->merge([
'get_mid_tax' => $decId,
]);
}
return ['rc' => 0, 'data'=> $request];
} catch (DecryptException $e) {
return ['rc' => 0, 'data'=> $request];
// return ['rc' => 999, 'data'=> 'Fak ╭∩╮︶_︶╭∩╮'];
}
}
public function decryptIdOnly($id)
{
try {
$decId = Crypt::decryptString($id);
return $decId;
} catch (DecryptException $e) {
return ['rc' => 999, 'data'=> 'Fak ╭∩╮︶_︶╭∩╮'];
}
}
public function hashPassword($password)
{
$iterations = 310000;
$salt = openssl_random_pseudo_bytes(16);
$hash_password = hash_pbkdf2('sha256', $password, $salt,$iterations,0, false);
$salt = bin2hex($salt);
return $salt.$hash_password;
}
public function hashPasswordCheck($passwordInput,$passwordUser)
{
$salt = substr($passwordUser,0,32);
$saltHex = hex2bin($salt);
$iterations = 310000;
$hash_password = hash_pbkdf2('sha256', $passwordInput, $saltHex,$iterations,0, false);
return $salt.$hash_password;
}
public function convertDateYear($date)
{
return date('Y',strtotime($date));
}
public function convertDateMonth($date)
{
return date('m',strtotime($date));
}
public function responseData($code, $message){
return ['code' => $code, 'message'=> $message];
}
public function getNasabah($id)
{
return \DB::select("SELECT * FROM users where user_uid = ".$id);
}
public function getUserAdmin($id)
{
return \DB::select("SELECT * FROM users_admin where id = ".$id);
}
public function rupiah($nominal)
{
return "Rp ".number_format($nominal,0,",",".");
}
public function getNotifDesc($status)
{
$data = DB::selectOne("select notif from notif_format where id = ?",[$status]);
return $data->notif;
}
public function clearSeparator($nominal)
{
if($nominal){
$nom = str_replace('.','',$nominal);
$nom = str_replace(',','.',$nom);
}else{
$nom = 0;
}
return $nom;
// return str_replace('.','',$nominal);
}
public function numFormat($nominal)
{
return number_format($nominal,0,",",".");
}
public function sendNotif($cust_id,$text,$type)
{
$data = new NotifListModel();
$data->cust_id = $cust_id;
$data->notif = $text;
$data->type = $type;
$data->save();
}
public function sendMail($view,$data)
{
Mail::send($view, $data, function ($message) use ($data) {
$message->from('official@huit.co.id', 'HUIT SPORTWEAR');
$message->to($data['sendto']);
$message->subject($data['subject']);
});
}
public function auditTrail($event,$data)
{
$get = collect(\DB::select("SELECT max(id) as max_id FROM audits"))->first();
$d = new AuditTrailModel();
$d->id = $get->max_id+1;
$d->user_id = Auth::user()->id;
$d->event = Auth::user()->username."|".$event;
$d->auditable_type = $data;
$d->auditable_id = 0;
$d->created_at = Date('Y-m-d H:i:s');
$d->save();
Log::info($event);
}
public function auditTrailValue($event,$data,$table,$newvalue,$oldvalue)
{
$get = collect(\DB::select("SELECT max(id) as max_id FROM audits"))->first();
$d = new AuditTrailModel();
$d->id = $get->max_id+1;
$d->user_id = Auth::user()->id;
$d->event = Auth::user()->username."|".$event;
$d->auditable_type = $data;
$d->auditable_id = 0;
$d->created_at = Date('Y-m-d H:i:s');
$d->old_value = $oldvalue;
$d->new_value = $newvalue;
$d->table = $table;
$d->save();
Log::info($event."|".$newvalue."|".$oldvalue);
}
public function auditTrailLog($event,$data,$table,$newvalue,$oldvalue)
{
$get = collect(\DB::select("SELECT max(id) as max_id FROM audits"))->first();
$d = new AuditTrailModel();
$d->id = $get->max_id+1;
$d->event = $event;
$d->auditable_type = $data;
$d->auditable_id = 0;
$d->created_at = Date('Y-m-d H:i:s');
$d->old_value = $oldvalue;
$d->new_value = $newvalue;
$d->table = $table;
$d->save();
Log::info($event."|".$newvalue."|".$oldvalue);
}
public function DeleteWhere($table,$id,$condition)
{
DB::table($table)->where('votes', '>', 100)->delete();
}
public function get_data(Request $request)
{
// LOCAL get
if ($request->input('type') == 'local') {
$response = json_encode($response);
}
// LOCAL POST WITH ID
elseif ($request->input('type') == 'local_id') {
$response = json_encode($response);
}
//API
else{
$url = $request->input('url').$request->input('id');
$response = Http::withToken('eyJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdGllcyI6WyJST0xFX1dFQk1JTiJdLCJzdWIiOiJ3ZWJtaW4ifQ.IyFC9q18ehYtCUsOcLzHxnXbFog92DTCZxY2aR49NFElmIBFKBup2LC7Ld28m3mdDPYvI4UaUlsp1CbqwfMf0Q')
->get(env('API_BASE').$url)->json();
}
return $response;
}
public function getPerencanaanByJobId($id)
{
$getPerencanaan = collect(\DB::select("SELECT map.*
from master_audit_plan map
join master_audit_job maj on maj.audit_plan_id = map.id
where maj.id = ?",[$id]))->first();
return $getPerencanaan;
}
public function getPerencanaanByPlanId($id)
{
$getPerencanaan = collect(\DB::select("SELECT map.*
from master_audit_plan map where map.id = ?",[$id]))->first();
return $getPerencanaan;
}
public function generateQR($data)
{
$toko_name = Str::of($data->toko_nm)->slug('_');
$fileName = $data->toko_id. '_' . $toko_name . '_qrcode' . '.png';
$qrCode = new QrCode();
$pathImgFile = public_path('qrcode') . "/" . $fileName;
$d_json = [
'toko_id' => Crypt::encryptString($data->toko_id),
'toko_nm' => $data->toko_nm,
'mid' => $data->mid
];
// $dataQR = json_encode($d_json);
$enc_data = Crypt::encryptString($data->toko_id);
// $dec_data = Crypt::decryptString($enc_data);
$qrCode->setText($enc_data)
->setSize(600)
->setPadding(30)
->setErrorCorrection('high')
->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0))
->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0))
// Path to your logo with transparency
->setLogo(public_path('/img/') . "bank_ntt.png")
// Set the size of your logo, default is 48
->setLogoSize(150)
->setImageType(QrCode::IMAGE_TYPE_PNG);
$qrCode->save($pathImgFile);
return $fileName;
} // end function
}