File "DiamondRequestController.php"
Full Path: /home/trinadezambia/public_html/gambling/app/Http/Controllers/Admin/DiamondRequestController.php
File size: 3.24 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Controllers\Admin;
use App\Constants\Status;
use App\Http\Controllers\Controller;
use App\Models\DiamondRequest;
use App\Models\Transaction;
use App\Models\User;
use Illuminate\Http\Request;
class DiamondRequestController extends Controller {
public function index() {
$pageTitle = 'Diamond Requests';
$requests = $this->requestData();
return view('admin.diamond_request.index', compact('pageTitle', 'requests'));
}
public function pending() {
$pageTitle = 'Pending Diamond Requests';
$requests = $this->requestData('pending');
return view('admin.diamond_request.index', compact('pageTitle', 'requests'));
}
public function approved() {
$pageTitle = 'Approved Diamond Requests';
$requests = $this->requestData('approved');
return view('admin.diamond_request.index', compact('pageTitle', 'requests'));
}
public function rejected() {
$pageTitle = 'Rejected Diamond Requests';
$requests = $this->requestData('rejected');
return view('admin.diamond_request.index', compact('pageTitle', 'requests'));
}
protected function requestData($scope = null) {
$query = DiamondRequest::with('user')->searchable(['trx', 'user:username', 'user:email']);
if ($scope) {
$query = $query->$scope();
}
return $query->orderBy('id', 'desc')->paginate(getPaginate());
}
public function approve($id) {
$diamondRequest = DiamondRequest::pending()->with('user')->findOrFail($id);
$diamondRequest->status = Status::DIAMOND_APPROVED;
$diamondRequest->save();
$user = $diamondRequest->user;
$user->balance += $diamondRequest->amount;
$user->save();
$transaction = new Transaction();
$transaction->user_id = $user->id;
$transaction->amount = $diamondRequest->amount;
$transaction->charge = 0;
$transaction->post_balance = $user->balance;
$transaction->trx_type = '+';
$transaction->trx = $diamondRequest->trx;
$transaction->details = 'Diamond request approved';
$transaction->remark = 'diamond_request_approved';
$transaction->save();
notify($user, 'DIAMOND_REQUEST_APPROVED', [
'amount' => showAmount($diamondRequest->amount),
'trx' => $diamondRequest->trx,
]);
$notify[] = ['success', 'Diamond request approved successfully'];
return back()->withNotify($notify);
}
public function reject(Request $request, $id) {
$request->validate([
'reason' => 'required|string|max:1000',
]);
$diamondRequest = DiamondRequest::pending()->with('user')->findOrFail($id);
$diamondRequest->status = Status::DIAMOND_REJECTED;
$diamondRequest->rejection_reason = $request->reason;
$diamondRequest->save();
notify($diamondRequest->user, 'DIAMOND_REQUEST_REJECTED', [
'amount' => showAmount($diamondRequest->amount),
'trx' => $diamondRequest->trx,
]);
$notify[] = ['success', 'Diamond request rejected successfully'];
return back()->withNotify($notify);
}
}