Added quiz new features

This commit is contained in:
m.razaghi
2026-08-19 12:18:35 +03:30
parent f84ef8c067
commit a6b2a1ba30
11 changed files with 549 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\DailyQuest;
use Illuminate\Http\Request;
class DailyQuestController extends Controller
{
public function index()
{
$quests = \App\Models\DailyQuest::latest()->paginate(15);
// Upgraded Bank of Smart Suggestions (Hardcore Focused)
$suggestions = [
// --- EXTREME CHALLENGES ---
['title' => 'اسطوره لیگ: پیروزی در ۵۰ دوئل', 'quest_type' => 'duel_win', 'required_amount' => 50, 'reward_xp' => 4000],
['title' => 'ماراتن تست‌زنی: پاسخ به ۵۰۰ تست', 'quest_type' => 'answer_tests', 'required_amount' => 500, 'reward_xp' => 3500],
['title' => 'کمال‌گرا: کسب نمره کامل در ۵ آزمون', 'quest_type' => 'perfect_score', 'required_amount' => 5, 'reward_xp' => 2500],
// --- HARD CHALLENGES ---
['title' => 'مبارز خستگی‌ناپذیر: پیروزی در ۲۰ دوئل', 'quest_type' => 'duel_win', 'required_amount' => 20, 'reward_xp' => 1500],
['title' => 'چالش حقوق‌دان: پاسخ به ۲۵۰ تست', 'quest_type' => 'answer_tests', 'required_amount' => 250, 'reward_xp' => 1200],
['title' => 'دقت بالا: کسب نمره کامل در ۳ آزمون', 'quest_type' => 'perfect_score', 'required_amount' => 3, 'reward_xp' => 1200],
['title' => 'پیروزی در ۱۰ دوئل متوالی (کاپ نقره)', 'quest_type' => 'duel_win', 'required_amount' => 10, 'reward_xp' => 700],
// --- MEDIUM CHALLENGES (For balance) ---
['title' => 'گرم‌کردن: پیروزی در ۵ دوئل', 'quest_type' => 'duel_win', 'required_amount' => 5, 'reward_xp' => 300],
['title' => 'مرور روزانه: پاسخ به ۵۰ تست', 'quest_type' => 'answer_tests', 'required_amount' => 50, 'reward_xp' => 250],
['title' => 'کسب نمره کامل در ۱ آزمون', 'quest_type' => 'perfect_score', 'required_amount' => 1, 'reward_xp' => 350],
];
return view('admin.daily-quests.index', compact('quests', 'suggestions'));
}
public function create()
{
return view('admin.daily-quests.create');
}
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|string|max:255',
'quest_type' => 'required|string|in:duel_win,answer_tests,perfect_score',
'required_amount' => 'required|integer|min:1',
'reward_xp' => 'required|integer|min:10',
]);
$validated['is_active'] = $request->has('is_active'); // <-- Catch the switch
DailyQuest::create($validated);
return redirect()->route('daily-quests.index')->with('success', 'چالش روزانه با موفقیت ایجاد شد.');
}
public function update(Request $request, DailyQuest $daily_quest)
{
$validated = $request->validate([
'title' => 'required|string|max:255',
'quest_type' => 'required|string|in:duel_win,answer_tests,perfect_score',
'required_amount' => 'required|integer|min:1',
'reward_xp' => 'required|integer|min:10',
]);
$validated['is_active'] = $request->has('is_active'); // <-- Catch the switch
$daily_quest->update($validated);
return redirect()->route('daily-quests.index')->with('success', 'چالش روزانه با موفقیت ویرایش شد.');
}
public function edit(DailyQuest $daily_quest)
{
return view('admin.daily-quests.update', compact('daily_quest'));
}
public function destroy(DailyQuest $daily_quest)
{
$daily_quest->delete();
return redirect()->route('daily-quests.index')->with('success', 'چالش روزانه حذف شد.');
}
}