Viewing file: DepositRequestController.php (6.4 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller; use App\Models\CustomerWallet; use App\Models\Deposit; use App\Models\Transaction; use Illuminate\Http\Request;
class DepositRequestController extends Controller { public function index(){ return view('admin.deposit_request.all_request'); } public function pending(){ return view('admin.deposit_request.index'); } public function getAll() { $deposits = Deposit::with('customer')->where('status', '!=', 'pending')->orderBy('created_at', 'DESC')->select(['id', 'customer_id', 'amount', 'payment_status', 'transaction_id', 'payment_type', 'status', 'created_at']);
return datatables()->of($deposits) ->addColumn('created_at', function ($q) { return formatDate($q->created_at); }) ->addColumn('customer_details', function ($q) { $name = isset($q->customer) ? $q->customer->full_name : ''; $email = isset($q->customer) ? $q->customer->email : ''; return '<strong>Name:</strong> ' . $name . '<br><strong>Email:</strong> ' . $email; }) ->addColumn('deposit_details', function ($q) { return '<strong>Amount:</strong> ' . formatNumberWithCurrSymbol($q->amount) . '<br>' . '<strong>Payment Type:</strong> ' . ucfirst($q->payment_type) . '<br>' . '<strong>Payment Status:</strong> ' . ucfirst($q->payment_status) . '<br>' . '<strong>Transaction ID:</strong> ' . ($q->transaction_id ? '#' . $q->transaction_id : '<span class="badge bg-danger">N/A</span>'); }) ->addColumn('status', function ($q) { if ($q->status == 'pending') { $status = '<span class="badge bg-green">Pending</span>'; } elseif ($q->status == 'approved') { $status = '<span class="badge bg-primary">Approved</span>'; } else { $status = '<span class="badge bg-danger">Rejected</span>'; } return $status; })
->rawColumns(['status', 'customer_details', 'deposit_details']) ->toJson(); } public function getAllPending(){ $deposits = Deposit::with('customer')->where('status','pending')->orderBy('created_at', 'DESC')->select(['id','customer_id','amount','payment_status','transaction_id','payment_type','status', 'created_at']);
return datatables()->of($deposits) ->addColumn('created_at', function ($q) { return formatDate($q->created_at); }) ->addColumn('customer_details', function ($q) { $name = isset($q->customer) ? $q->customer->full_name : ''; $email = isset($q->customer) ? $q->customer->email : ''; return '<strong>Name:</strong> ' . $name . '<br><strong>Email:</strong> ' . $email; }) ->addColumn('deposit_details', function ($q) { return '<strong>Amount:</strong> ' . formatNumberWithCurrSymbol($q->amount) . '<br>' . '<strong>Payment Type:</strong> ' . ucfirst($q->payment_type) . '<br>' . '<strong>Payment Status:</strong> ' . ucfirst($q->payment_status) . '<br>' . '<strong>Transaction ID:</strong> ' . ($q->transaction_id ? '#' . $q->transaction_id : '<span class="badge bg-danger">N/A</span>'); })
->addColumn('status', function ($q) { if($q->status=='pending'){ $status='<span class="badge bg-green">Pending</span>'; }elseif ($q->status=='approved'){ $status='<span class="badge bg-primary">Approved</span>'; }else{ $status='<span class="badge bg-danger">Rejected</span>'; } return $status; }) ->addColumn('action', function ($q) { return '<button class="mr-1 btn btn-sm btn-info" data-message="Are you sure you want to approved this top up request" data-action=' . route('admin.deposit.request.status.change') . ' data-input={"deposit_id":"' . $q->id . '","customer_id":"' . $q->customer_id . '","status":"approved"} data-toggle="modal" data-target="#modal-confirm" ><i class="fas fa-check-circle"></i></button>' . '<button class="btn btn-sm btn-danger" data-message="Are you sure you want to rejected this top up request" data-action=' . route('admin.deposit.request.status.change') . ' data-input={"deposit_id":"' . $q->id . '","customer_id":"' . $q->customer_id . '","status":"rejected"} data-toggle="modal" data-target="#modal-confirm" ><i class="fas fa-times-circle"></i></button>'; }) ->rawColumns(['action','status','deposit_details','customer_details']) ->toJson(); } public function depositRequestStatusChange(Request $request){ $request->validate([ 'deposit_id' => 'required|numeric', 'customer_id' => 'required|numeric', 'status' => 'required|in:approved,rejected' ]); $depositRequest = Deposit::where('id',$request->deposit_id)->firstOrFail();
if ($request->status == 'approved'){ $customerWallet = CustomerWallet::where('customer_id',$request->customer_id)->firstOrFail(); Transaction::create([ 'customer_id'=> $customerWallet->customer_id, 'amount'=> $depositRequest->amount, 'payment_type'=> $depositRequest->payment_type, 'type'=> 'deposit', 'payment_status'=> 'paid', 'status'=> 'approved', ]); $totalAmount = $customerWallet->amount + $depositRequest->amount; $depositRequest->update(['status'=> 'approved']); $depositRequest->update(['payment_status'=> 'paid']); $customerWallet->update(['amount'=> $totalAmount]); }else{ $depositRequest->update(['status'=> 'rejected']); } cache()->forget('pending_deposit_request'); return back()->with('success', 'Top up status successfully changed'); } }
|