Kumpulan perubahan yang udah numpuk di working tree: refactor Setup (Gate/Vehicle/Member), rapihin memberin & stiker, service parking baru (ParkingUtilsServices, NetworkService), model/migration lot-parking & DHCP reservation, dan fitur baru Intercom (controller/model/migration/ view). ReportTransaksiController versi lokal ini WIP (~90%, masih didebug) - versi yang bener ada di server, jadi dikeluarin dari git (ditambahin ke .gitignore) biar gak numpuk nindihin punya server pas git pull di sana. Sekalian keluarin dump mentah tabel softseting (1.8MB, nyasar ke-commit), file .bak, dan arsip ad-hoc (api.tgz, c.zip) yang emang bukan source code. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01EAJc2mrpj2cSTe4oowLPzQ
178 lines
5.1 KiB
PHP
178 lines
5.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Parking\Setup\Member;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Origin\MasterStasiunKerja;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Illuminate\Validation\Rule;
|
|
|
|
class StasiunKerjaController extends Controller
|
|
{
|
|
/**
|
|
* Tampilkan halaman utama (view + tabel kosong, data di-load via JS).
|
|
*/
|
|
public function index()
|
|
{
|
|
return view("Parking.setup.member.stasiunkerja");
|
|
}
|
|
|
|
/**
|
|
* Ambil seluruh data stasiun kerja dalam format JSON.
|
|
* Dipanggil via fetch() dari JS untuk mengisi tabel.
|
|
*/
|
|
public function data(): JsonResponse
|
|
{
|
|
$data = MasterStasiunKerja::orderBy("kode")->get();
|
|
|
|
return response()->json([
|
|
"success" => true,
|
|
"data" => $data,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Ambil satu data berdasarkan kode (dipakai saat buka form edit).
|
|
*/
|
|
public function show(string $kode): JsonResponse
|
|
{
|
|
$item = MasterStasiunKerja::find($kode);
|
|
|
|
if (!$item) {
|
|
return response()->json(
|
|
[
|
|
"success" => false,
|
|
"message" => "Data stasiun kerja tidak ditemukan.",
|
|
],
|
|
404,
|
|
);
|
|
}
|
|
|
|
return response()->json([
|
|
"success" => true,
|
|
"data" => $item,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Simpan data stasiun kerja baru.
|
|
*/
|
|
public function store(Request $request): JsonResponse
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
"kode" => ["required", "string", "max:50", Rule::unique("stasiunkerja", "kode")],
|
|
"nama" => ["required", "string", "max:255"],
|
|
"margin" => ["nullable", "integer"],
|
|
"spv" => ["nullable", "string", "max:20"],
|
|
"target" => ["nullable", "integer"],
|
|
"id_lokasi" => ["nullable", "string", "max:10"],
|
|
"lantai" => ["nullable", "string", "max:4"],
|
|
"status" => ["nullable", "integer"],
|
|
"alamat" => ["nullable", "string", "max:255"],
|
|
"bank" => ["nullable", "string", "max:64"],
|
|
"telp" => ["nullable", "string", "max:32"],
|
|
"kode_akses" => ["nullable", "string", "max:5"],
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json(
|
|
[
|
|
"success" => false,
|
|
"message" => "Validasi gagal.",
|
|
"errors" => $validator->errors(),
|
|
],
|
|
422,
|
|
);
|
|
}
|
|
|
|
$item = MasterStasiunKerja::create($validator->validated());
|
|
|
|
return response()->json(
|
|
[
|
|
"success" => true,
|
|
"message" => "Data stasiun kerja berhasil ditambahkan.",
|
|
"data" => $item,
|
|
],
|
|
201,
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Perbarui data stasiun kerja berdasarkan kode.
|
|
*/
|
|
public function update(Request $request, string $kode): JsonResponse
|
|
{
|
|
$item = MasterStasiunKerja::find($kode);
|
|
|
|
if (!$item) {
|
|
return response()->json(
|
|
[
|
|
"success" => false,
|
|
"message" => "Data stasiun kerja tidak ditemukan.",
|
|
],
|
|
404,
|
|
);
|
|
}
|
|
|
|
$validator = Validator::make($request->all(), [
|
|
"nama" => ["required", "string", "max:255"],
|
|
"margin" => ["nullable", "integer"],
|
|
"spv" => ["nullable", "string", "max:20"],
|
|
"target" => ["nullable", "integer"],
|
|
"id_lokasi" => ["nullable", "string", "max:10"],
|
|
"lantai" => ["nullable", "string", "max:4"],
|
|
"status" => ["nullable", "integer"],
|
|
"alamat" => ["nullable", "string", "max:255"],
|
|
"bank" => ["nullable", "string", "max:64"],
|
|
"telp" => ["nullable", "string", "max:32"],
|
|
"kode_akses" => ["nullable", "string", "max:5"],
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json(
|
|
[
|
|
"success" => false,
|
|
"message" => "Validasi gagal.",
|
|
"errors" => $validator->errors(),
|
|
],
|
|
422,
|
|
);
|
|
}
|
|
|
|
$item->update($validator->validated());
|
|
|
|
return response()->json([
|
|
"success" => true,
|
|
"message" => "Data stasiun kerja berhasil diperbarui.",
|
|
"data" => $item,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Hapus data stasiun kerja berdasarkan kode.
|
|
*/
|
|
public function destroy(string $kode): JsonResponse
|
|
{
|
|
$item = MasterStasiunKerja::find($kode);
|
|
|
|
if (!$item) {
|
|
return response()->json(
|
|
[
|
|
"success" => false,
|
|
"message" => "Data stasiun kerja tidak ditemukan.",
|
|
],
|
|
404,
|
|
);
|
|
}
|
|
|
|
$item->delete();
|
|
|
|
return response()->json([
|
|
"success" => true,
|
|
"message" => "Data stasiun kerja berhasil dihapus.",
|
|
]);
|
|
}
|
|
}
|