<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Deal;

class AdminDealController extends Controller
{
    public function index()
    {
        $deals = Deal::with(['user', 'comments'])
            ->orderBy('is_pinned', 'desc')
            ->orderBy('created_at', 'desc')
            ->paginate(20);

        return view('admin.deals.index', compact('deals'));
    }

    public function show(Deal $deal)
    {
        $deal->load(['user', 'comments.user']);
        
        return view('admin.deals.show', compact('deal'));
    }

    public function edit(Deal $deal)
    {
        return view('admin.deals.edit', compact('deal'));
    }

    public function update(Request $request, Deal $deal)
    {
        $validated = $request->validate([
            'title' => 'required|string|max:255',
            'description' => 'required|string',
            'url' => 'required|url',
            'price' => 'nullable|numeric|min:0',
            'original_price' => 'nullable|numeric|min:0',
            'store_name' => 'required|string|max:255',
            'is_pinned' => 'boolean',
            'is_active' => 'boolean',
            'expires_at' => 'nullable|date|after:now',
        ]);

        $deal->update($validated);

        return redirect()->route('admin.deals.show', $deal)
            ->with('success', 'Deal updated successfully!');
    }

    public function destroy(Deal $deal)
    {
        $deal->delete();

        return redirect()->route('admin.deals.index')
            ->with('success', 'Deal deleted successfully!');
    }

    public function togglePin(Deal $deal)
    {
        $deal->update(['is_pinned' => !$deal->is_pinned]);

        $status = $deal->is_pinned ? 'pinned' : 'unpinned';
        
        return back()->with('success', "Deal {$status} successfully!");
    }

    public function toggleActive(Deal $deal)
    {
        $deal->update(['is_active' => !$deal->is_active]);

        $status = $deal->is_active ? 'activated' : 'deactivated';
        
        return back()->with('success', "Deal {$status} successfully!");
    }
}