Penambahan login cashier via API, perhitungan tarif
This commit is contained in:
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user