Files
database-pertani-web/app/Http/Controllers/Web/ProgramLokasiController.php

144 lines
4.3 KiB
PHP

<?php
namespace App\Http\Controllers\Web;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use App\Models\Core\Program;
use App\Models\Core\LokasiProgram;
use App\Models\Wilayah\Provinsi;
use App\Models\Pertanian\Komoditas;
class ProgramLokasiController extends Controller
{
public function index()
{
}
public function create(int $programId)
{
}
public function getProgram()
{
$program = Program::select(['id', 'nama', 'sub_domain'])->get();
return response()->json(['data' => $program]);
}
public function store(Request $request, int $programId)
{
$program = Program::find($programId);
if (!$program) {
return response()->json([
'status' => 'error',
'message' => 'Data program tidak ditemukan.'
], 404);
}
$validator = Validator::make($request->all(), [
'provinsi_id' => ['required', 'exists:master_provinsi,id'],
'kabupaten_kota_id' => ['nullable', 'exists:master_kabupaten_kota,id'],
'kecamatan_id' => ['nullable', 'exists:master_kecamatan,id'],
'desa_kelurahan_id' => ['nullable', 'exists:master_desa_kelurahan,id'],
'default' => ['nullable', 'boolean'],
]);
if ($validator->fails()) {
return response()->json([
'status' => 'error',
'message' => $validator->errors()->first()
], 422);
}
LokasiProgram::where('program_id', $programId)->update(['default' => false]);
LokasiProgram::create([...$validator->validated(),
//'default' => $request->has('default'),
'program_id' => $programId,
'created_by' => auth()->id(),
'updated_by' => auth()->id(),
]);
return response()->json([
'status' => 'success',
'message' => 'Data lokasi program berhasil disimpan.'
]);
}
public function show($id)
{
$program = Program::find($id);
if (!$program) {
return redirect()->route('program.index')->with('error', 'Data program tidak ditemukan.');
}
return view('core.program.view', compact('program'));
}
public function edit($id)
{
$program = Program::find($id);
if (!$program) {
return redirect()->route('program.index')->with('error', 'Data program tidak ditemukan.');
}
return view('core.program.edit', compact('program'));
}
public function update(Request $request, int $programId, int $id)
{
$lokasiProgram = LokasiProgram::where('program_id', $programId)->where('id', $id)->first();
if (!$lokasiProgram) {
return response()->json([
'status' => 'error',
'message' => 'Data lokasi program tidak ditemukan.'
], 404);
}
$validator = Validator::make($request->all(), [
'default' => ['nullable', 'boolean'],
]);
if ($validator->fails()) {
return response()->json([
'status' => 'error',
'message' => $validator->errors()->first()
], 422);
}
LokasiProgram::where('program_id', $programId)->update(['default' => false]);
$lokasiProgram->update([...$validator->validated(),
'updated_by' => auth()->id(),
]);
return response()->json([
'status' => 'success',
'message' => 'Data lokasi program berhasil diperbarui!'
]);
}
public function destroy(int $programId, int $id)
{
$lokasiProgram = LokasiProgram::where('program_id', $programId)->where('id', $id)->first();
if (!$lokasiProgram) {
return response()->json([
'status' => 'error',
'message' => 'Data lokasi program tidak ditemukan.'
], 404);
}
$lokasiProgram->deleted_by = auth()->user()->id;
$lokasiProgram->save();
$lokasiProgram->delete();
return response()->json([
'status' => 'success',
'message' => 'Data lokasi program berhasil dihapus.'
]);
}
}