Penambahan login cashier via API, perhitungan tarif

This commit is contained in:
2026-07-24 14:04:49 +07:00
parent 3ea7367255
commit 8bd2d0c542
63 changed files with 1979 additions and 309 deletions
@@ -0,0 +1,187 @@
<?php
namespace App\Http\Controllers\Api\V1\Cashier;
use App\Http\Controllers\Controller;
use App\Models\JenisMobil;
use App\Models\NamaPos;
use App\Models\Pegawai;
use App\Models\Softseting;
use App\Services\Parking\geTransaksi;
use App\Services\Parking\RateParkingService;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use function GuzzleHttp\json_encode;
class CashierOperationController extends Controller
{
public function login(Request $request)
{
$username = $request->username;
$password = $request->password;
$gateStatus = $request->idpintu;
$user = Pegawai::where("username", $username)->where("password", $password)->first();
$gateId = NamaPos::with("posHardware", "posParams")->where("id", $gateStatus)->first();
if (!$gateId) {
return response()->json([
"status" => false,
"message" => "ID Pintu tidak ditemukan",
]);
}
$globalSetting = Softseting::first();
$shortcutVeh = explode(",", $gateId->posParams->kend_valid);
$kendValid = JenisMobil::whereIn("id", $shortcutVeh)->orderBy("id")->get();
if (!$user) {
return response()->json([
"status" => false,
"message" => "Username dan Password salah atau user tidak aktif",
]);
}
Log::info("Login user " . $user->nama . " berhasil.");
$fotoPegawai = $user->foto;
Log::info([
"type" => gettype($fotoPegawai),
"resource" => is_resource($fotoPegawai),
"length" => is_string($fotoPegawai) ? strlen($fotoPegawai) : null,
]);
if (is_resource($fotoPegawai)) {
// $pegawaiFilename = $user->username;
rewind($fotoPegawai);
$fotoPegawai = stream_get_contents($fotoPegawai);
} else {
$user->foto = url(Storage::url("images/pegawai/no-image.jpg"));
}
// $fotoPegawai = pg_unescape_bytea($fotoPegawai);
// $foto = stream_get_contents($fotoPegawai);
// file_put_contents(storage_path("app/debug_before.bin"), $foto);
// file_put_contents(
// storage_path("app/debug_after.bin"),
// pg_unescape_bytea($foto),
// );
// $raw = stream_get_contents($fotoPegawai);
// Log::info([
// "raw_size" => strlen($raw),
// ]);
// $binary = pg_unescape_bytea($raw);
// Log::info([
// "binary_size" => strlen($binary),
// ]);
// Log::info([
// "resource" => is_resource($fotoPegawai),
// "type" => gettype($fotoPegawai),
// "size" => is_string($fotoPegawai) ? strlen($fotoPegawai) : null,
// "hex" => bin2hex(substr($fotoPegawai, 0, 100)),
// "before" => bin2hex(substr($fotoPegawai, 0, 16)),
// // "after" => bin2hex(substr($decoded, 0, 16)),
// ]);
if (!empty($fotoPegawai)) {
$filename = "pegawai_" . $user->nomer . ".jpg";
$result = Storage::disk("public")->put("images/pegawai/" . $filename, $fotoPegawai);
Log::info(["save" => $result]);
$user->foto = url(Storage::url("images/pegawai/" . $filename));
}
// Log::info($user->toArray());
return response()->json([
"status" => true,
"message" => "Login berhasil",
"data" => [
"user" => $user,
"gate" => $gateId,
"settings" => $globalSetting,
"vehicleValid" => $kendValid,
],
]);
}
function checkMember(Request $request)
{
Log::info($request->input("transaksi"));
$getMember = new geTransaksi();
$data = $getMember->TransaksiMember($request->input("transaksi"));
if (!$data) {
return response()->json([
"success" => false,
"message" => "Transaksi member tidak ditemukan",
]);
}
return response()->json([
"success" => true,
"data" => $data,
]);
}
function transaksiInside(Request $request)
{
Log::info("Transaksi di input : " . $request->input("transaksi"));
$gateOut = $request->input("idpintu");
$vehicle = $request->input("kendaraan");
$licensePlate = $request->input("platNomer");
$gettransaksi = new geTransaksi();
$dateNow = Carbon::now()->format("Y-m-d HH:mm:ss");
Log::info("Kendaraan di pilih : " . $vehicle);
$Transaksi = $gettransaksi->TransaksiParkir($request->input("transaksi"));
if (!$Transaksi) {
Log::info("Transaksi tidak ditemukan : " . json_encode($Transaksi));
return response()->json([
"success" => false,
"message" => "Transaksi tidak ditemukan",
]);
}
Log::info("Transaksi ditemukan : " . json_encode($Transaksi));
$waktu_masuk = Str::of($Transaksi->waktu_masuk)->trim();
$timeInSecond = Carbon::parse($waktu_masuk);
$timeOutSecond = Carbon::now();
$duration = $timeInSecond->diffInSeconds($timeOutSecond);
$hitungTarif = new RateParkingService();
[$duration, $tarifParkir] = $hitungTarif->parkingTimeCalc($vehicle, $duration);
$Transaksi["waktu_keluar"] = $timeOutSecond->format("Y-m-d H:i:s");
$Transaksi["bayar_keluar"] = (int) $tarifParkir;
$Transaksi["id_pintu_keluar"] = $gateOut;
Log::info("jam masuk : " . $timeInSecond);
Log::info("jam keluar : " . $timeOutSecond);
Log::info("Lama parkir dalam detik : " . $duration);
Log::info("Tarif transaksi : " . $tarifParkir);
return response()->json([
"success" => true,
"data" => $Transaksi,
]);
}
// function transaksiProcess(Request $request)
}
@@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers\Api\V1;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class ParkingOperationConteroller extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
@@ -2,8 +2,9 @@
namespace App\Http\Controllers\Api\V1;
use App\Http\Controllers\Controller;
use App\Models\TransaksiParkir;
use App\Http\Controllers\Controller;
use App\Services\Parking\geTransaksiParkir;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
@@ -14,9 +15,60 @@ class ParkingOperationController extends Controller
*
* @return \Illuminate\Http\Response
*/
public function inTransaksi($data)
{
Log::info('Memulai proses pintu masuk : ' . $data);
$service = new geTransaksiParkir();
$data = $service->TransaksiParkir($data);
Log::info('Hasil : ' . $data);
if ($data) {
return response()->json([
'status' => true,
'message' => 'Kendaraan masih didalam',
'data' => $data
]);
}
$data = $service->TransaksiMember($data);
// if (!$data) {
// // store ke function/ insert ke database
// $memberActive = $service->TransaksiMember($data);
// // if (!$memberActive)
// }
return $data;
}
public function outTransaksi($data, geTransaksiParkir $TransaksiParkir)
{
$data = $TransaksiParkir->TransaksiParkir($data);
}
public function index()
{
return TransaksiParkir::selectRaw(
'transaksi_parkir.id::VARCHAR as id,
no_pol,
id_kendaraan,
id_pintu_masuk,
id_pintu_keluar,
waktu_masuk,
waktu_keluar,
bayar_keluar,
jm.nama',
)->leftJoin('jenis_mobil as jm','transaksi_parkir.id_kendaraan','=','jm.id')
// ->where('status', 1)
->orderByDesc('waktu_masuk')
->limit(50)->get();
}
/**
@@ -37,15 +89,25 @@ public function create()
*/
public function store(Request $request)
{
$transaksi = $this->show($request->input('transaksi'))->getData();
// dd($transaksi)->status;
// dd($transaksi->getData());
Log::info(get_class($transaksi));
dd(get_class($transaksi));
// if ($transaksi->status === true && $transaksi->member === false) {
// }
return;
$gateStatus = $request->input('gate');
$no_pol = $request->input('transaksi');
Log::info($no_pol);
if ($gateStatus == 0) {
$transaksiIn = $this->inTransaksi($no_pol);
if ($transaksiIn) {
return $transaksiIn;
}
$transaksi = $this->store($no_pol);
}
// Log::info($data);
return response()->json([
// 'data' => $data
]);
}
-13
View File
@@ -1,13 +0,0 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
@@ -1,7 +1,8 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Parking;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class ApiV1MemberController extends Controller
@@ -1,12 +1,13 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Parking;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class DashboardController extends Controller
{
public function index()
public function index()
{
return view('dashboard');
}
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\FrontOffice;
namespace App\Http\Controllers\Parking\FrontOffice;
use App\Http\Controllers\Controller;
use App\Models\TransaksiParkir;
@@ -24,7 +24,7 @@ public function search(Request $request)
{
// Log::info($request->all());
$keyword = $request->q;
Log::info($keyword);
Log::info($keyword);
if (!$keyword) {
return response()->json([
@@ -50,7 +50,7 @@ public function search(Request $request)
}
// $pic_body_masuk = (string) $data->pic_body_masuk;
// $data->pic_body_masuk_base64 = $data->pic_body_masuk
// $data->pic_body_masuk_base64 = $data->pic_body_masuk
// ? 'data:image/jpeg;base64,' . base64_encode($pic_body_masuk )
// : null;
@@ -84,7 +84,7 @@ public function image($id)
// return response($picture->pic_body_masuk)
// ->header('Content-Type', 'image/jpeg');
// ❌ kalau tidak ada data
if (!$picture || !$picture->pic_body_masuk) {
return response()->file(public_path('images/no-image.jpg'));
@@ -92,7 +92,7 @@ public function image($id)
return response($picture->pic_body_masuk)
->header('Content-Type', 'image/jpeg')
->header('Cache-Control', 'public, max-age=86400'); // cache 1 hari
->header('Cache-Control', 'public, max-age=86400'); // cache 1 hari
}
/**
@@ -1,7 +1,8 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Parking;
use App\Http\Controllers\Controller;
use App\Models\TransaksiParkir;
use Carbon\Carbon;
use Illuminate\Http\Request;
@@ -36,7 +37,7 @@ public function index()
// $incidenTrans = $data->where('veri_check', 0)->whereDate('veri_date', $dateNow)->count();
// $pendingTrans = $data->where('veri_check', 1)->whereDate('veri_date', $dateNow)->count();
// $inSite = $data->where('status',1)->count();
// dd($dateNow, $VeriTrans,$incidenTrans);
return view('home', compact('VeriTrans','incidenTrans', 'pendingTrans','inSite'));
}
@@ -1,7 +1,8 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Parking;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class LostiketController extends Controller
@@ -1,7 +1,8 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Parking;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class MemberProduct extends Controller
@@ -1,7 +1,8 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Parking;
use App\Http\Controllers\Controller;
use App\Models\ProdukPrice;
use Illuminate\Http\Request;
@@ -15,7 +16,7 @@ class MemberProductController extends Controller
public function index()
{
$products = ProdukPrice::getProduct();
return view('register', compact('products'));
}
@@ -1,7 +1,8 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Parking;
use App\Http\Controllers\Controller;
use App\Models\MemberCard;
use App\Models\StikerTrans;
use App\Models\StikerTransDetail;
@@ -28,7 +29,7 @@ public function index(Request $request)
$departmentSelect = DB::table('stasiunkerja')->get();
$memberSelect = DB::table('jenis_langganan')->get();
$jenisStiker = DB::table('tarif_stiker')->get();
return view('member.member', compact([
'vehicleSelect',
'departmentSelect',
@@ -37,7 +38,7 @@ public function index(Request $request)
]));
}
public function getMember (Request $request)
public function getMember (Request $request)
{
Log::info(json_encode('nopol : ' .$request->nopol));
Log::info(json_encode('veh : ' .$request->vehicle));
@@ -47,7 +48,7 @@ public function getMember (Request $request)
Log::info(json_encode('isactive : ' .gettype($request->isactive)));
if ($request->ajax() ) {
$dataStiker = DB::table('transaksi_stiker as ts')
->leftjoin('detail_transaksi_stiker as dts','dts.notrans','=','ts.notrans')
->leftJoin('card_member as cm','cm.notrans','=','ts.no_id')
@@ -55,12 +56,12 @@ public function getMember (Request $request)
->leftJoin('stasiunkerja as sk','sk.kode','=','ts.unit_kerja')
->leftJoin('jenis_mobil as jm','jm.id','=','dts.jenis_mobil')
->select(DB::raw('
ts.notrans as notrans , ts.nama , ts.alamat as alamat , ts.telepon as telepon,
ts.awal as awal , ts.akhir as akhir, jl.nama as jmember, sk.nama as dept, dts.nopol,
ts.notrans as notrans , ts.nama , ts.alamat as alamat , ts.telepon as telepon,
ts.awal as awal , ts.akhir as akhir, jl.nama as jmember, sk.nama as dept, dts.nopol,
jm.nama vehicle, dts.jenis_member, cm.no_card as no_card'))
->distinct();
// ->select(DB::raw('ts.notrans as notrans , ts.nama , ts.alamat as alamat , ts.telepon as telepon , ts.awal as awal , ts.akhir as akhir, sk.nama as unit_kerja, jl.nama as jenis_member, ts.no_id'))
if ($request->nama) {
$dataStiker = $dataStiker->where('ts.nama', 'like', '%' . $request->nama . '%');
}
@@ -72,15 +73,15 @@ public function getMember (Request $request)
if ($request->nopol) {
$dataStiker = $dataStiker->where('ts.unit_kerja', 'like', '%' . $request->depart . '%');
}
if ($request->member) {
$dataStiker = $dataStiker->where('ts.jenis_langganan', 'like', '%' . $request->member . '%');
}
if ($request->nopol) {
$dataStiker = $dataStiker->where('dts.nopol', 'like', '%' . $request->nopol . '%');
}
if ($request->vehicle) {
$dataStiker = $dataStiker->where('dts.jenis_mobil', 'like', '%' . $request->vehicle . '%');
}
@@ -94,7 +95,7 @@ public function getMember (Request $request)
}
Log::info($dataStiker->toSql());
$dataStiker = $dataStiker->get();
return response()->json($dataStiker);
@@ -126,7 +127,7 @@ public function checkField (Request $request)
'nopol' => 'required|string|unique:detail_transaksi_stiker,nopol',
// 'nocard' => 'string|exists:card_member,no_card',
]);
$nocard = $request->input('nocard');
$nocardExists = DB::table('card_member')
->where('no_card', $nocard)
@@ -188,14 +189,14 @@ public function store(Request $request)
'no_id' => $noid,
'nama' => $dataStiker['nama'],
'alamat' => $dataStiker['address'] ?? '',
'telepon' => $dataStiker['phone'] ?? '',
'unit_kerja' => $dataStiker['depart'],
'jenis_stiker' => $dataStiker['member'],
'awal' => $awal,
'telepon' => $dataStiker['phone'] ?? '',
'unit_kerja' => $dataStiker['depart'],
'jenis_stiker' => $dataStiker['member'],
'awal' => $awal,
'akhir' => $akhir,
'harga' => $dataStiker['harga'] ?? 0,
'keterangan' => $dataStiker['note'] ?? '',
'tanggal' => $dateNow,
'harga' => $dataStiker['harga'] ?? 0,
'keterangan' => $dataStiker['note'] ?? '',
'tanggal' => $dateNow,
'operator' => $user->nomer,
];
@@ -215,7 +216,7 @@ public function store(Request $request)
} else {
return 0;;
}
if ($dataCard) {
foreach ($dataCard as $cardNumber) {
$dataCard = [
@@ -238,7 +239,7 @@ public function store(Request $request)
$response = false;
$msg = 'Gagal menyimpan data ' . $e->getMessage() . $e->getLine();
}
return response()->json(['response' => $response, 'pesan' => $msg]);
}
@@ -252,7 +253,7 @@ public function show($id)
{
Log::info('Data yang diterima : ' . json_encode($id));
$dataStiker = StikerTrans::with('stiker_details.vehicle', 'memberCard')
->select('transaksi_stiker.notrans', 'transaksi_stiker.nama', 'transaksi_stiker.alamat', 'transaksi_stiker.telepon', 'transaksi_stiker.awal', 'transaksi_stiker.akhir', 'transaksi_stiker.jenis_langganan',
->select('transaksi_stiker.notrans', 'transaksi_stiker.nama', 'transaksi_stiker.alamat', 'transaksi_stiker.telepon', 'transaksi_stiker.awal', 'transaksi_stiker.akhir', 'transaksi_stiker.jenis_langganan',
'transaksi_stiker.unit_kerja', 'transaksi_stiker.no_id', 'jl.nama as jmember', 'sk.nama as dept')
->leftJoin('jenis_langganan as jl','jl.id','=','transaksi_stiker.jenis_langganan')
->leftJoin('stasiunkerja as sk','sk.kode','=','transaksi_stiker.unit_kerja')
@@ -265,8 +266,8 @@ public function show($id)
// ->leftJoin('jenis_mobil as jm','jm.id','=','dts.jenis_mobil')
// ->leftJoin('card_member as cm','cm.notrans','=','ts.no_id')
// ->select(DB::raw('
// ts.notrans as notrans , ts.nama , ts.alamat as alamat , ts.telepon as telepon,
// ts.awal as awal , ts.akhir as akhir, jl.nama as jmember, sk.nama as dept, dts.nopol,
// ts.notrans as notrans , ts.nama , ts.alamat as alamat , ts.telepon as telepon,
// ts.awal as awal , ts.akhir as akhir, jl.nama as jmember, sk.nama as dept, dts.nopol,
// jm.nama vehicle, dts.jenis_member, cm.no_card as no_card')
// )->where('ts.notrans', 'like', '%' . $id . '%')
// ->get();
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Operasional;
namespace App\Http\Controllers\Parking\Operasional;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Report;
namespace App\Http\Controllers\Parking\Report;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
@@ -78,7 +78,7 @@ public function dataStiker(Request $request)
}
}
// public function laporanStikerHarian()
// public function laporanStikerHarian()
// {
// $jenisLangganan = DB::table('jenis_langganan')->get();
// $jenisStiker = DB::table('stasiunkerja')->get();
@@ -1,7 +1,8 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Parking;
use App\Http\Controllers\Controller;
use App\Models\TransaksiParkir;
use Carbon\Carbon;
use Illuminate\Http\Request;
@@ -104,7 +105,7 @@ public function gateData(Request $request)
};
})
->when($paymentMethod, function ($q) use ($paymentMethod) {
return $q->where('tp.rep_bank', $paymentMethod);
@@ -141,7 +142,7 @@ public function gateData(Request $request)
->orderBy('jm.nama')
->orderBy('tp.status_transaksi');
return response()->json([
'byGateData' => $query->get()
]);
@@ -212,7 +213,7 @@ public function allReportData(Request $request)
'pk.nama as kasir_keluar',
'tp.id_op_masuk',
'tp.waktu_masuk',
'tp.waktu_keluar',
'tp.status',
@@ -261,7 +262,7 @@ public function allReportData(Request $request)
// $keluarCasual = $tunai->where('status_transaksi', '0');
// $keluarMember = $tunai->where('status_transaksi', '3');
// $keluarLost = $tunai->where('status_transaksi', '32');
$keluarCasual = $tunai->filter(fn ($r) =>
$keluarCasual = $tunai->filter(fn ($r) =>
(string) data_get($r, 'status_transaksi') === '0'
&& data_get($r, 'id_op_masuk') !== null
);
@@ -356,7 +357,7 @@ public function allReportData(Request $request)
// $keluarCasual = $nonTunai->where('status_transaksi', '0');
// $keluarMember = $nonTunai->where('status_transaksi', '3');
// $keluarLost = $nonTunai->where('status_transaksi', '32');
$keluarCasual = $nonTunai->filter(fn ($r) =>
$keluarCasual = $nonTunai->filter(fn ($r) =>
(string) data_get($r, 'status_transaksi') === '0'
&& data_get($r, 'id_op_masuk') !== null
);
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Http\Setup\Gate;
namespace App\Http\Controllers\Parking\Setup\Gate;
use App\Http\Controllers\Controller;
use App\Models\NamaPos;
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Http\Setup\Gate;
namespace App\Http\Controllers\Parking\Setup\Gate;
use App\Http\Controllers\Controller;
use App\Models\ConfigHardware;
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Http\Setup\Gate;
namespace App\Http\Controllers\Parking\Setup\Gate;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
@@ -0,0 +1,93 @@
<?php
namespace App\Http\Controllers\Parking\Setup\UserLevel;
use App\Http\Controllers\Controller;
use App\Models\LevelPegawai;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
class LevelUserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$leveluser = Auth()->User()->level_pegawai;
Log::info((int) $leveluser);
$levelAvail = LevelPegawai::where("level_code", ">=", $leveluser)->orderBy("level_id")->get();
return view("setup.UserLevel.level-user", compact("levelAvail"));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Http\Setup\Vehicle;
namespace App\Http\Controllers\Parking\Setup\Vehicle;
use App\Http\Controllers\Controller;
use App\Models\VehicleItem;
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Http\Setup\Vehicle;
namespace App\Http\Controllers\Parking\Setup\Vehicle;
use App\Http\Controllers\Controller;
use App\Models\MasterTarif;
@@ -51,9 +51,9 @@ public function show($id)
{
// Log::info($id);
$id = str($id);
$vehicleRates = DB::table('tarif')->where('id_mobil', $id)->first();
$vehicleRates = DB::table("tarif")->where("id_mobil", $id)->first();
Log::info(json_encode($vehicleRates));
Log::info(json_encode($vehicleRates));
return $vehicleRates;
}
@@ -77,44 +77,42 @@ public function edit($id)
*/
public function update(Request $request, $id)
{
// Log::info($request->all());
Log::info($request->all());
// $id = $request->id_mobil;
$dataQuery = MasterTarif::find($id);
try {
Log::info($request->all());
$dataQuery->fill($request->all());
if (! $dataQuery->isDirty()) {
// if($dataQuery->isDirty()) {
if (!$dataQuery->isDirty()) {
return response()->json([
'status' => false,
'message' => 'Tidak ada perubahan data'
"status" => false,
"message" => "Tidak ada perubahan data",
]);
// }
}
Log::info('Data yang di simpan' . json_encode($dataQuery->getDirty()));
Log::info(
"Data yang di simpan" . json_encode($dataQuery->getDirty()),
);
$dataQuery->save();
return response()->json([
'status' => true,
'message' => 'Data berhasil di ubah'
"status" => true,
"message" => "Data berhasil di ubah",
]);
} catch (\Throwable $th) {
//throw $th;
Log::info('Data yang di simpan' . json_encode($dataQuery->getDirty()));
Log::info(
"Data yang di simpan" . json_encode($dataQuery->getDirty()),
);
// Log::info($request->all());
return response()->json([
'status' => false,
'message' => 'Gagal menyimpan data ' . $th->getMessage(),
"status" => false,
"message" => "Gagal menyimpan data " . $th->getMessage(),
]);
}
}
/**
@@ -1,7 +1,8 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Parking;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
@@ -40,7 +41,7 @@ public function run()
if (!$this->checkUsersView()) {
DB::statement("
CREATE OR REPLACE VIEW users AS
SELECT
SELECT
id,
nomer,
nama,
@@ -90,8 +91,8 @@ public function run()
private function checkPgcrypto()
{
// $result = DB::select("
// SELECT 1
// FROM pg_extension
// SELECT 1
// FROM pg_extension
// WHERE extname = 'pgcrypto'
// ");
@@ -117,8 +118,8 @@ private function checkPegawaiColumns()
private function checkUsersView()
{
$result = DB::select("
SELECT 1
FROM information_schema.views
SELECT 1
FROM information_schema.views
WHERE table_name = 'users'
");
@@ -1,7 +1,8 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Parking;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
@@ -19,7 +20,7 @@ public function index()
$departmentSelect = DB::table('stasiunkerja')->get();
$memberSelect = DB::table('jenis_langganan')->get();
$jenisStiker = DB::table('tarif_stiker')->get();
return view('stiker.stiker', compact([
// return view('member.member', compact([
'vehicleSelect',
@@ -27,7 +28,7 @@ public function index()
'memberSelect',
'jenisStiker',
]));
}
/**
@@ -1,7 +1,8 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Parking;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
@@ -21,7 +22,7 @@ public function index ()
return view('streaming', compact('urlStream'));
}
public function streamSnapshot()
{
// Ambil URL kamera dan autentikasi
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Tools;
namespace App\Http\Controllers\Parking\Tools;
use App\Http\Controllers\Controller;
use App\Models\TransaksiStiker;
@@ -12,7 +12,7 @@
class StikerExtendedController extends Controller
{
// protected function ;
/**
* Display a listing of the resource.
@@ -103,9 +103,9 @@ public function show($id, Request $request)
// ->whereRaw("to_char(tgl_edited, 'YYYY-MM') = ?", [$blnKemarin])
->whereBetween('tgl_edited', [$start, $end])
->get();
$jumlah = $count->count();
return response()->json([
'jumlah' => $jumlah
]);
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Tools;
namespace App\Http\Controllers\Parking\Tools;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
@@ -1,7 +1,8 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Parking;
use App\Http\Controllers\Controller;
use App\Models\TransaksiParkir;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
@@ -19,7 +20,7 @@ class VerifyTransController extends Controller
*
* @return \Illuminate\Http\Response
*/
public function skipMember ()
public function skipMember ()
{
$transaksi = TransaksiParkir::leftjoin('jenis_mobil as jm','transaksi_parkir.id_kendaraan','=','jm.id')
->leftjoin('nama_pos as np_masuk', 'transaksi_parkir.id_pintu_masuk','=','np_masuk.id')
@@ -41,7 +42,7 @@ public function skipMember ()
->get();
Log::info(json_encode($transaksi));
if ($transaksi->status_transaksi && $transaksi->status_transaksi == 3) {
$dateNow = Carbon::now();
@@ -51,7 +52,7 @@ public function skipMember ()
'veri_date' => $dateNow,
'veri_adm' => 'SYSTEM'
]);
// $response = true;
// $message = [
// 'no_pol' => $RealtimeTrans->no_pol,
@@ -61,7 +62,7 @@ public function skipMember ()
return $transaksi;
}
public function index(Request $request)
{
if ($request->ajax()) {
@@ -93,7 +94,7 @@ public function index(Request $request)
foreach ($transaksi as $data) {
if ($data->status_transaksi && $data->status_transaksi == '3') {
$dateNow = Carbon::now();
$query = DB::table('transaksi_parkir')
->where('no_pol', $data->no_pol )
->where('status', 1)
@@ -101,7 +102,7 @@ public function index(Request $request)
'veri_date' => $dateNow,
'veri_adm' => 'SYSTEM'
]);
Log::info('Member update ' . $query);
// $response = true;
@@ -272,7 +273,7 @@ private function getCurlImage($url)
// Mengambil bagian 'user' dan 'pass' dari URL
$user = $parsedUrl['user'] ?? null;
$pass = $parsedUrl['pass'] ?? null;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
@@ -344,7 +345,7 @@ public function showImages(Request $request)
->select('video1_conn as body_cam','video2_conn as drive_cam')
->where('id_pos', $transaksi->veri_kode)
->first();
Log::info(json_encode($getCamera));
// Log::info($getCamera);
/* Body Masuk */
@@ -354,9 +355,9 @@ public function showImages(Request $request)
$transaksi->pic_body_masuk = 'Tidak ada foto';
}
$baseIn =
$baseIn =
Log::info(json_encode('foto masuk' .$transaksi->pic_body_masuk));
/* Driver Masuk */
if (!empty($transaksi->pic_driver_masuk) && is_resource($transaksi->pic_driver_masuk)) {
$transaksi->pic_driver_masuk = base64_encode(stream_get_contents($transaksi->pic_driver_masuk)) ?? 'Tidak ada FOTO';
@@ -373,7 +374,7 @@ public function showImages(Request $request)
// Log::info('Drive Cam URL: ' . $getCamera->drive_cam);
// $ImgBodyOut = $this->getCurlImage($getCamera->body_cam);
// // try {
// // try {
// $ImgBodyOut = Http::accept('image/jpeg')
// ->withOptions(['verify' => false,])
// ->withHeaders(['Authorization' => 'Digest username="admin", realm="your_realm", nonce="nonce_value", response="response_hash"'])
@@ -381,7 +382,7 @@ public function showImages(Request $request)
// if ($ImgBodyOut->successful()) {
// Konversi gambar ke base64
// $ImgBodyOut = base64_encode($ImgBodyOut->body());
// $ImgBodyOut = base64_encode($ImgBodyOut->body());
// } else {
// Log::error('Failed to get image. Status code: ' . $ImgBodyOut->status());
// return 'Tidak ada foto';
@@ -393,7 +394,7 @@ public function showImages(Request $request)
// 'error' => $e->getMessage(),
// ], 500);
// }
// ])->get($getCamera->body_cam);
// ])->get('http://192.168.200.64/ISAPI/streaming/channels/1/picture&auth=digest&username=admin&password=rootjuga1');
// $ImgDriveOut = $this->getCurlImage($getCamera->drive_cam);
@@ -412,7 +413,7 @@ public function showImages(Request $request)
Log::error('Error fetching data: ' . $e->getMessage());
return response()->json(['error' => 'Data not found or other error'], 500);
}
}
}
// $transaksi = TransaksiParkir::where('id', $request->id)->where('no_pol', $request->no_pol)->firstOrfail();
// // $pic_masuk = $transaksi->pic_body_masuk ? base64_encode(stream_get_contents($transaksi->pic_body_masuk)) : null;
@@ -434,7 +435,7 @@ public function showImages(Request $request)
// public function show($no_pol)
// {
// $transaksi = TransaksiParkir::where('no_pol', $no_pol)->orderBy('waktu_masuk','desc')->first();
// // if($transaksi->veri_kode) {
// // $paramsBodyKeluar = DB::table('config_pos_hardware')->select('video1_conn')->where('id_pos', $transaksi->veri_kode)->first();
// // }
@@ -0,0 +1,29 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class CashierAuthentication
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
$token = $request->header('X-Token');
if (!$token) {
return response()->json([
'status' => false,
'message' => 'Anda tidak berhasil login'
], 401);
}
return $next($request);
}
}