<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Models\Wallet;
use Auth;
use Illuminate\Http\Request;
use Session;
class WalletController extends Controller {
public function __construct() {
// Staff Permission Check
$this->middleware(['permission:view_all_offline_wallet_recharges'])->only('offline_recharge_request');
}
public function index() {
$wallets = Wallet::where('user_id', Auth::user()->id)->latest()->paginate(10);
return view('frontend.user.wallet.index', compact('wallets'));
}
public function recharge(Request $request) {
$data['amount'] = $request->amount;
$data['payment_method'] = $request->payment_option;
$request->session()->put('payment_type', 'wallet_payment');
$request->session()->put('payment_data', $data);
$decorator = __NAMESPACE__ . '\\Payment\\' . str_replace(' ', '', ucwords(str_replace('_', ' ', $request->payment_option))) . "Controller";
if (class_exists($decorator)) {
return (new $decorator)->pay($request);
}
}
public function wallet_payment_done(Wallet $wallet, Request $request) {
$user = Auth::user();
$user->balance += round($request->Amount / 100);
$user->save();
$wallet->update([
'reciept' => $request->AzulOrderId,
'approval' => 1,
]);
Session::forget('payment_data');
Session::forget('payment_type');
flash(translate('Recharge completed'))->success();
return redirect()->route('wallet.index');
}
public function offline_recharge(Request $request) {
$wallet = new Wallet;
$wallet->user_id = Auth::user()->id;
$wallet->amount = $request->amount;
$wallet->payment_method = $request->payment_option;
$wallet->payment_details = $request->trx_id;
$wallet->approval = 0;
$wallet->offline_payment = 1;
$wallet->reciept = $request->photo;
$wallet->save();
flash(translate('Offline Recharge has been done. Please wait for response.'))->success();
return redirect()->route('wallet.index');
}
public function offline_recharge_request() {
$wallets = Wallet::where('offline_payment', 1)->paginate(10);
return view('manual_payment_methods.wallet_request', compact('wallets'));
}
public function updateApproved(Request $request) {
$wallet = Wallet::findOrFail($request->id);
$wallet->approval = $request->status;
if ($request->status == 1) {
$user = User::where('id', $wallet->user_id)->first();
$user->balance = $user->balance + $wallet->amount;
$user->save();
} else {
$user = User::where('id', $wallet->user_id)->first();
$user->balance = $user->balance - $wallet->amount;
$user->save();
}
if ($wallet->save()) {
return 1;
}
return 0;
}
// public function updateApproved(Request $request)
// {
// $wallet = Wallet::findOrFail($request->id);
// $wallet->approval = $request->status;
// if ($request->status == 1) {
// $user = $wallet->user_id;
// $user->balance = $user->balance + $wallet->amount;
// $user->save();
// } else {
// $user = $wallet->user;
// $user->balance = $user->balance - $wallet->amount;
// $user->save();
// }
// if ($wallet->save()) {
// return 1;
// }
// return 0;
// }
}
|