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.' ]); } }