HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/be.naniguide.com/app/Http/Controllers/SendingCreditPlanController.php
<?php

namespace Acelle\Http\Controllers;

use Illuminate\Http\Request;
use Acelle\Model\SendingCreditPlan;

class SendingCreditPlanController extends Controller
{
    public function index()
    {
        return view('sending_credit_plans.index');
    }

    public function select(Request $request)
    {
        $plans = SendingCreditPlan::visible()->orderBy('credits', 'asc')->get();

        return view('sending_credit_plans.select', [
            'plans' => $plans,
        ]);
    }

    public function buy(Request $request)
    {
        $customer = $request->user()->customer;
        $sendingCreditPlan = SendingCreditPlan::findByUid($request->plan_uid);

        $invoice = $customer->createSendingCreditsInvoice(
            $sendingCreditPlan->getPrice(),
            $sendingCreditPlan->currency,
            $sendingCreditPlan->credits,
        );

        // Redirect to checkout process
        return redirect()->action('CheckoutController@billingAddress', [
            'invoice_uid' => $invoice->uid,
        ]);
    }

    public function invoiceList(Request $request)
    {
        $invoices = $request->user()->customer->sendingCreditsInvoices()->select('invoices.*');

        // type filter
        if (isset($request->type)) {
            $invoices = $invoices->where('type', $request->type);
        }

        // status filter
        if (isset($request->status)) {
            if ($request->status == 'pending') {
                $invoices = $invoices->pending();
            } else {
                $invoices = $invoices->notPending()->where('status', $request->status);
            }
        }

        // sort
        if (!empty($request->sort_order)) {
            $invoices = $invoices->orderBy($request->sort_order, $request->sort_direction);
        }

        // pagination
        $invoices = $invoices->paginate($request->per_page);

        // view
        return view('sending_credit_plans.invoiceList', [
            'invoices' => $invoices,
        ]);
    }

    public function transactionList(Request $request)
    {
        $transactions = $request->user()->customer->sendingCreditsTransactions()->select('transactions.*');

        // sort
        if (!empty($request->sort_order)) {
            $transactions = $transactions->orderBy($request->sort_order, $request->sort_direction);
        }

        // status filter
        if (isset($request->status)) {
            $transactions = $transactions->where('transactions.status', $request->status);
        }

        // pagination
        $transactions = $transactions->paginate($request->per_page);

        // view
        return view('sending_credit_plans.transactionList', [
            'transactions' => $transactions,
        ]);
    }
}