<?php

namespace App\Http\Controllers;

use App\Models\Order;
use Illuminate\Http\Request;
 use App\Models\IncomeHistory;
use App\Services\VoucherTransactionService;
 
class AdminDriveOrderController extends Controller
{
    // পেন্ডিং অর্ডার দেখানো
    public function pending()
    {
        $orders = Order::with('user', 'offer')->where('status', 'pending')->latest()->get();
        return view('admin.orders.pending', compact('orders'));
    }

    // কমপ্লিট অর্ডার দেখানো
    public function completed()
    {
        $orders = Order::with('user', 'offer')->where('status', 'approved')->latest()->get();
        return view('admin.orders.completed', compact('orders'));
    }

    // ক্যান্সেল অর্ডার দেখানো
    public function cancelled()
    {
        $orders = Order::with('user', 'offer')->where('status', 'rejected')->latest()->get();
        return view('admin.orders.cancelled', compact('orders'));
    }

    // অর্ডার কমপ্লিট করা এবং ইউজারকে ক্যাশব্যাক দেয়া
public function complete($id)
{
    $order = Order::with('user', 'offer')->findOrFail($id);

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

    // ক্যাশব্যাক অ্যাড
    $order->user->balance += $order->offer->cashback;
    $order->user->save();
    
    // ✅ ব্যালেন্স লগ রেকর্ড
    \App\Models\BalanceLog::create([
        'user_id' => $order->user->id,
        'amount'  => $order->offer->cashback,
    ]);

    // ✅ ইনকাম হিস্ট্রি রেকর্ড
    IncomeHistory::create([
        'user_id'     => $order->user->id,
        'source'      => 'drive_offer',
        'amount'      => $order->offer->cashback,
        'description' => 'অভিনন্দন! আপনি ড্রাইভ অফার সেল করে '.$order->offer->cashback.'৳ ক্যাশব্যাক পেয়েছেন।',
    ]);

    return back()->with('success', 'অর্ডার সফলভাবে কমপ্লিট করা হয়েছে এবং ইউজারকে ক্যাশব্যাক দেয়া হয়েছে।');
}


    // অর্ডার ক্যান্সেল করা এবং টাকা ফেরত দেয়া
public function cancel($id)
{
    $order = Order::with('user', 'offer')->findOrFail($id);

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

    // টাকা ফেরত
    $beforeVoucher = (float) ($order->user->voucher_balance ?? 0);
    $refund = (float) ($order->offer->price ?? 0);
    $afterVoucher = $beforeVoucher + $refund;

    $order->user->voucher_balance = $afterVoucher;
    $order->user->save();

    VoucherTransactionService::record(
        userId: (int) $order->user->id,
        direction: 'credit',
        amount: $refund,
        before: $beforeVoucher,
        after: $afterVoucher,
        source: 'drive_offer_order_refund',
        description: 'ড্রাইভ অফার অর্ডার #' . $order->id . ' ক্যান্সেল হওয়ায় ভাউচার রিফান্ড।',
        referenceType: 'offer_order',
        referenceId: $order->id,
        metadata: [
            'offer_id' => $order->offer_id,
        ]
    );


    return back()->with('success', 'অর্ডার ক্যান্সেল করা হয়েছে এবং ইউজারকে টাকা ফেরত দেয়া হয়েছে।');
}

}
