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

110 lines
3.4 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\KomoditasProgram;
use App\Models\Wilayah\Provinsi;
use App\Models\Pertanian\Komoditas;
class ProgramKomoditasController extends Controller
{
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(), [
'komoditas_id' => [
'required',
'exists:master_komoditas,id',
Rule::unique('core_program_komoditas')
->where(fn ($query) => $query->where('program_id', $programId))->whereNull('deleted_at'),
],
'default' => ['nullable', 'boolean'],
]);
if ($validator->fails()) {
return response()->json([
'status' => 'error',
'message' => $validator->errors()->first()
], 422);
}
KomoditasProgram::where('program_id', $programId)->update(['default' => false]);
KomoditasProgram::create([...$validator->validated(),
'program_id' => $programId,
'created_by' => auth()->id(),
'updated_by' => auth()->id(),
]);
return response()->json([
'status' => 'success',
'message' => 'Data komoditas program berhasil disimpan.'
]);
}
public function update(Request $request, int $programId, int $id)
{
$komoditasProgram = KomoditasProgram::where('program_id', $programId)->where('id', $id)->first();
if (!$komoditasProgram) {
return response()->json([
'status' => 'error',
'message' => 'Data komoditas 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);
}
KomoditasProgram::where('program_id', $programId)->update(['default' => false]);
$komoditasProgram->update([...$validator->validated(),
'updated_by' => auth()->id(),
]);
return response()->json([
'status' => 'success',
'message' => 'Data komoditas program berhasil diperbarui.'
]);
}
public function destroy(int $programId, int $id)
{
$komoditasProgram = KomoditasProgram::where('program_id', $programId)->where('id', $id)->first();
if (!$komoditasProgram) {
return response()->json([
'status' => 'error',
'message' => 'Data komoditas program tidak ditemukan.'
], 404);
}
$komoditasProgram->deleted_by = auth()->user()->id;
$komoditasProgram->save();
$komoditasProgram->delete();
return response()->json([
'status' => 'success',
'message' => 'Data komoditas program berhasil dihapus.'
]);
}
}