Viewing file: DepositRequestController.php (5.62 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','payment_type','status', 'created_at']);
return datatables()->of($deposits) ->addColumn('created_at', function ($q) { return formatDate($q->created_at); }) ->addColumn('full_name', function ($q) { return isset($q->customer)?$q->customer->full_name:''; }) ->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('amount', function ($q) { return formatNumberWithCurrSymbol($q->amount); }) ->addColumn('payment_type', function ($q) { return ucfirst($q->payment_type); }) ->addColumn('payment_status', function ($q) { return ucfirst($q->payment_status); }) ->rawColumns(['status']) ->toJson(); } public function getAllPending(){ $deposits = Deposit::with('customer')->where('status','pending')->orderBy('created_at', 'DESC')->select(['id','customer_id','amount','payment_status','payment_type','status', 'created_at']);
return datatables()->of($deposits) ->addColumn('created_at', function ($q) { return formatDate($q->created_at); }) ->addColumn('full_name', function ($q) { return isset($q->customer)?$q->customer->full_name:''; }) ->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('amount', function ($q) { return formatNumberWithCurrSymbol($q->amount); }) ->addColumn('payment_type', function ($q) { return ucfirst($q->payment_type); }) ->addColumn('payment_status', function ($q) { return ucfirst($q->payment_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']) ->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'); } }
|