110 lines
3.4 KiB
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.'
|
|
]);
|
|
}
|
|
} |