86 lines
3.8 KiB
PHP
86 lines
3.8 KiB
PHP
<?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', 'چالش روزانه حذف شد.');
|
||
}
|
||
}
|