chore: sync repository snapshot
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Spbu;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class SpbuController extends Controller
|
||||
{
|
||||
public function index(): JsonResponse
|
||||
{
|
||||
return response()->json(
|
||||
Spbu::query()->orderByDesc('created_at')->get()
|
||||
);
|
||||
}
|
||||
|
||||
public function store(Request $request): JsonResponse
|
||||
{
|
||||
$validator = $this->validator($request);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->validationError($validator);
|
||||
}
|
||||
|
||||
$spbu = Spbu::create([
|
||||
...$validator->validated(),
|
||||
'created_at' => now(),
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Data SPBU berhasil disimpan',
|
||||
'id' => $spbu->id,
|
||||
], 201);
|
||||
}
|
||||
|
||||
public function update(Request $request, Spbu $spbu): JsonResponse
|
||||
{
|
||||
$validator = $this->validator($request);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->validationError($validator);
|
||||
}
|
||||
|
||||
$spbu->update($validator->validated());
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Data SPBU berhasil diperbarui',
|
||||
]);
|
||||
}
|
||||
|
||||
public function destroy(Spbu $spbu): JsonResponse
|
||||
{
|
||||
$spbu->delete();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Data SPBU berhasil dihapus',
|
||||
]);
|
||||
}
|
||||
|
||||
private function validator(Request $request): \Illuminate\Validation\Validator
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'nama_spbu' => ['required', 'string', 'max:255'],
|
||||
'nomor_spbu' => ['required', 'string', 'max:50'],
|
||||
'status' => [
|
||||
'required',
|
||||
Rule::in([
|
||||
Spbu::STATUS_BUKA_24_JAM,
|
||||
Spbu::STATUS_TIDAK_BUKA_24_JAM,
|
||||
]),
|
||||
],
|
||||
'latitude' => ['required', 'numeric', 'between:-90,90'],
|
||||
'longitude' => ['required', 'numeric', 'between:-180,180'],
|
||||
]);
|
||||
|
||||
$validator->after(function ($validator) use ($request): void {
|
||||
if ((float) $request->input('latitude') === 0.0 && (float) $request->input('longitude') === 0.0) {
|
||||
$validator->errors()->add('latitude', 'Koordinat tidak valid.');
|
||||
}
|
||||
});
|
||||
|
||||
return $validator;
|
||||
}
|
||||
|
||||
private function validationError(\Illuminate\Validation\Validator $validator): JsonResponse
|
||||
{
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Validasi gagal',
|
||||
'errors' => $validator->errors(),
|
||||
], 422);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user