<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\JobSubmission;
use App\Models\User;
use Illuminate\Http\Request;
use App\Models\IncomeHistory;

class AdminJobSubmissionController extends Controller
{
    // সব সাবমিশন
    public function index()
    {
        $submissions = JobSubmission::with('user', 'job')->orderBy('created_at', 'desc')->get();
        return view('admin.job_submissions.index', compact('submissions'));
    }

    // Pending submissions
    public function pending()
    {
        $submissions = JobSubmission::with('user', 'job')
            ->where('status', 'pending')
            ->latest()
            ->get();

        return view('admin.submissions.pending', compact('submissions'));
    }

    // Approved submissions
    public function approved()
    {
        $submissions = JobSubmission::with('user', 'job')
            ->where('status', 'approved')
            ->latest()
            ->get();

        return view('admin.submissions.approved', compact('submissions'));
    }

    // Rejected submissions
    public function rejected()
    {
        $submissions = JobSubmission::with('user', 'job')
            ->where('status', 'rejected')
            ->latest()
            ->get();

        return view('admin.submissions.rejected', compact('submissions'));
    }

    // Approve by GET route (old method, optional)
    public function approve($id)
    {
        $submission = JobSubmission::with('job', 'user')->findOrFail($id);

        if ($submission->status !== 'pending') {
            return back()->with('error', 'এই সাবমিশন ইতিমধ্যেই রিভিউ হয়েছে।');
        }

        $submission->status = 'approved';
        $submission->save();

        // টাকা যুক্ত করা
        $submission->user->balance += $submission->job->amount;
        $submission->user->save();
        
        
        // ✅ ব্যালেন্স লগ
    \App\Models\BalanceLog::create([
        'user_id' => $submission->user->id,
        'amount'  => $submission->job->amount,
    ]);



        // ✅ ইনকাম হিস্ট্রি
        IncomeHistory::create([
            'user_id'     => $submission->user->id,
            'source'      => 'micro_job',
            'amount'      => $submission->job->amount,
            'description' => 'অভিনন্দন! আপনি মাইক্রো জবের "'.$submission->job->title.'" কাজ সফলভাবে সম্পন্ন করে '.$submission->job->amount.'৳ ইনকাম পেয়েছেন।',
        ]);

        return back()->with('success', 'জবটি সফলভাবে এপ্রুভ করা হয়েছে এবং টাকা যুক্ত হয়েছে।');
    }

    // Reject by GET route (old method, optional)
    public function reject($id)
    {
        $submission = JobSubmission::findOrFail($id);

        if ($submission->status !== 'pending') {
            return back()->with('error', 'এই সাবমিশন ইতিমধ্যেই রিভিউ হয়েছে।');
        }

        $submission->status = 'rejected';
        $submission->save();

        return back()->with('success', 'জবটি রিজেক্ট করা হয়েছে।');
    }

    // ✅ নতুন: Approve/Reject via PUT (Blade form থেকে আসা)
    public function update(Request $request, $id)
    {
        $request->validate([
            'status' => 'required|in:approved,rejected',
        ]);

        $submission = JobSubmission::with('job', 'user')->findOrFail($id);

        if ($submission->status !== 'pending') {
            return back()->with('error', 'এই সাবমিশন ইতিমধ্যেই রিভিউ হয়েছে।');
        }

        $submission->status = $request->status;
        $submission->save();

        // Approve হলে টাকা যুক্ত করব
        if ($request->status === 'approved') {
            $submission->user->balance += $submission->job->amount;
            $submission->user->save();
            
            
            // ✅ ব্যালেন্স লগ
        \App\Models\BalanceLog::create([
            'user_id' => $submission->user->id,
            'amount'  => $submission->job->amount,
        ]);

            // ✅ ইনকাম হিস্ট্রি
            IncomeHistory::create([
                'user_id'     => $submission->user->id,
                'source'      => 'micro_job',
                'amount'      => $submission->job->amount,
                'description' => 'অভিনন্দন! আপনি মাইক্রো জবের "'.$submission->job->title.'" কাজ সফলভাবে সম্পন্ন করে '.$submission->job->amount.'৳ ইনকাম পেয়েছেন।',
            ]);

            return back()->with('success', 'জবটি সফলভাবে এপ্রুভ হয়েছে এবং টাকা যুক্ত হয়েছে।');
        }

        return back()->with('success', 'জবটি রিজেক্ট করা হয়েছে।');
    }
}
