update: change max character on controller
This commit is contained in:
parent
d4a0740943
commit
ced55cc9df
|
|
@ -38,7 +38,7 @@ public function create()
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'title' => 'required|string|max:255',
|
'title' => 'required|string',
|
||||||
'description' => 'nullable|string',
|
'description' => 'nullable|string',
|
||||||
'file_path' => 'nullable|file|mimes:pdf,doc,docx|max:2048'
|
'file_path' => 'nullable|file|mimes:pdf,doc,docx|max:2048'
|
||||||
]);
|
]);
|
||||||
|
|
@ -70,9 +70,9 @@ public function edit($id)
|
||||||
public function update(Request $request, $id)
|
public function update(Request $request, $id)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'title' => 'required|string|max:255',
|
'title' => 'required|string',
|
||||||
'description' => 'nullable|string',
|
'description' => 'nullable|string',
|
||||||
'file_path' => 'nullable|file|mimes:pdf,doc,docx|max:2048'
|
'file_path' => 'nullable|file|mimes:pdf,doc,docx,txt|max:2048'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$material = LiteracyMaterial::findOrFail($id);
|
$material = LiteracyMaterial::findOrFail($id);
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ class LiteracyQuestionController extends Controller
|
||||||
{
|
{
|
||||||
public function questions()
|
public function questions()
|
||||||
{
|
{
|
||||||
$questions = LiteracyQuestion::all();
|
$questions = LiteracyQuestion::orderBy('created_at', 'desc')->get();
|
||||||
$materials = LiteracyMaterial::all();
|
$materials = LiteracyMaterial::all();
|
||||||
$users = User::all();
|
$users = User::all();
|
||||||
return view('literacy.teacher.questions.index', [
|
return view('literacy.teacher.questions.index', [
|
||||||
|
|
@ -29,7 +29,7 @@ public function questions()
|
||||||
|
|
||||||
public function show($id)
|
public function show($id)
|
||||||
{
|
{
|
||||||
$questions = LiteracyQuestion::findOrFail($id);
|
$questions = LiteracyQuestion::all();
|
||||||
return view('literacy.teacher.questions.index', compact('questions'));
|
return view('literacy.teacher.questions.index', compact('questions'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -41,7 +41,6 @@ public function create()
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$validated = $request->validate([
|
$validated = $request->validate([
|
||||||
'material_id' => 'required|exists:materials,id',
|
|
||||||
'question_text' => 'required|string',
|
'question_text' => 'required|string',
|
||||||
'type' => 'required|in:multiple_choice,essay',
|
'type' => 'required|in:multiple_choice,essay',
|
||||||
]);
|
]);
|
||||||
|
|
@ -105,55 +104,80 @@ public function edit($id)
|
||||||
public function update(Request $request, $id)
|
public function update(Request $request, $id)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'material_id' => 'required|exists:materials,id',
|
'question_text' => 'required|string',
|
||||||
'question_text' => 'required|string|max:255',
|
|
||||||
'type' => 'required|string|in:multiple_choice,essay',
|
'type' => 'required|string|in:multiple_choice,essay',
|
||||||
'essay_score' => 'nullable|integer|min:0|max:100',
|
'essay_score' => 'nullable|integer|min:0|max:100',
|
||||||
'essay_answer' => 'nullable|string',
|
'essay_answer' => 'nullable|string',
|
||||||
|
'options' => 'nullable|array',
|
||||||
'options.*.id' => 'nullable|exists:literacy_options,id',
|
'options.*.id' => 'nullable|exists:literacy_options,id',
|
||||||
'options.*.option_text' => 'required_if:type,multiple_choice|string|max:255',
|
'options.*.option_text' => 'required_if:type,multiple_choice|string',
|
||||||
'options.*.score' => 'nullable|integer|min:0',
|
'options.*.score' => 'nullable|integer|min:0|max:100',
|
||||||
'options.*.is_correct' => 'nullable|boolean',
|
'options.*.is_correct' => 'nullable|boolean',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$question = LiteracyQuestion::findOrFail($id);
|
DB::beginTransaction();
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Ambil data pertanyaan
|
||||||
|
$question = LiteracyQuestion::with('options')->findOrFail($id);
|
||||||
|
|
||||||
|
// Update pertanyaan
|
||||||
$question->update([
|
$question->update([
|
||||||
'material_id' => $request->material_id, // Tambahkan material_id
|
|
||||||
'question_text' => $request->question_text,
|
'question_text' => $request->question_text,
|
||||||
'type' => $request->type,
|
'type' => $request->type,
|
||||||
'essay_score' => $request->type === 'essay' ? $request->essay_score : null,
|
'essay_score' => $request->type === 'essay' ? $request->essay_score : null,
|
||||||
'essay_answer' => $request->type === 'essay' ? $request->essay_answer : null,
|
'essay_answer' => $request->type === 'essay' ? $request->essay_answer : null,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Jika pertanyaan adalah pilihan ganda, kelola opsi jawaban
|
// Hanya untuk multiple_choice: proses opsi
|
||||||
if ($request->type === 'multiple_choice' && $request->has('options')) {
|
if ($request->type === 'multiple_choice' && $request->has('options')) {
|
||||||
|
|
||||||
|
// Ambil ulang options yang terbaru
|
||||||
|
$question->refresh()->load('options');
|
||||||
|
|
||||||
$existingOptionIds = $question->options->pluck('id')->toArray();
|
$existingOptionIds = $question->options->pluck('id')->toArray();
|
||||||
$newOptionIds = collect($request->options)->pluck('id')->filter()->toArray();
|
$requestOptionIds = collect($request->options)->pluck('id')->filter()->toArray();
|
||||||
|
|
||||||
// Hapus opsi yang tidak ada di input baru
|
// Hapus opsi yang tidak ada dalam request
|
||||||
$optionsToDelete = array_diff($existingOptionIds, $newOptionIds);
|
$optionsToDelete = array_diff($existingOptionIds, $requestOptionIds);
|
||||||
|
if (!empty($optionsToDelete)) {
|
||||||
LiteracyOption::whereIn('id', $optionsToDelete)->delete();
|
LiteracyOption::whereIn('id', $optionsToDelete)->delete();
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($request->options as $option) {
|
// Proses insert/update opsi
|
||||||
if (isset($option['id'])) {
|
foreach ($request->input('options', []) as $option) {
|
||||||
// Update opsi yang sudah ada
|
$isCorrect = isset($option['is_correct']) && $option['is_correct'] ? 1 : 0;
|
||||||
LiteracyOption::where('id', $option['id'])->update([
|
$score = isset($option['score']) ? intval($option['score']) : 0;
|
||||||
|
|
||||||
|
if (!empty($option['id'])) {
|
||||||
|
// Update existing option
|
||||||
|
$existingOption = LiteracyOption::find($option['id']);
|
||||||
|
if ($existingOption) {
|
||||||
|
$existingOption->update([
|
||||||
'option_text' => $option['option_text'],
|
'option_text' => $option['option_text'],
|
||||||
'score' => $option['score'] ?? 0,
|
'score' => $score,
|
||||||
'is_correct' => isset($option['is_correct']) ? 1 : 0,
|
'is_correct' => $isCorrect,
|
||||||
]);
|
]);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Tambahkan opsi baru
|
// Create new option
|
||||||
$question->options()->create([
|
LiteracyOption::create([
|
||||||
|
'question_id' => $question->id,
|
||||||
'option_text' => $option['option_text'],
|
'option_text' => $option['option_text'],
|
||||||
'score' => $option['score'] ?? 0,
|
'score' => $score,
|
||||||
'is_correct' => isset($option['is_correct']) ? 1 : 0,
|
'is_correct' => $isCorrect,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DB::commit();
|
||||||
return redirect()->route('literacy_teacher_questions')->with('success', 'Pertanyaan berhasil diperbarui!');
|
return redirect()->route('literacy_teacher_questions')->with('success', 'Pertanyaan berhasil diperbarui!');
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
DB::rollBack();
|
||||||
|
Log::error('Update Error:', ['message' => $e->getMessage()]);
|
||||||
|
return redirect()->back()->with('error', 'Terjadi kesalahan: ' . $e->getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy($id)
|
public function destroy($id)
|
||||||
|
|
|
||||||
|
|
@ -46,9 +46,9 @@ public function create()
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'name' => 'required|string|max:255',
|
'name' => 'required|string',
|
||||||
'email' => 'required|email|unique:users',
|
'email' => 'required|email|unique:users',
|
||||||
'password' => 'required|string|min:6',
|
'password' => 'required|string',
|
||||||
'role' => 'required|in:teacher,student',
|
'role' => 'required|in:teacher,student',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
@ -75,7 +75,7 @@ public function update(Request $request, $id)
|
||||||
$user = User::findOrFail($id);
|
$user = User::findOrFail($id);
|
||||||
|
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'name' => 'required|string|max:255',
|
'name' => 'required|string',
|
||||||
'email' => 'required|email|unique:users,email,' . $user->id,
|
'email' => 'required|email|unique:users,email,' . $user->id,
|
||||||
'role' => 'required|in:teacher,student',
|
'role' => 'required|in:teacher,student',
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user