/home/kueuepay/public_html/app/Http/Controllers/Admin/PaymentLogsController.php
<?php

namespace App\Http\Controllers\Admin;

use Exception;
use App\Models\Transaction;
use Illuminate\Http\Request;
use App\Http\Helpers\Response;
use App\Models\UserNotification;
use App\Models\TransactionDevice;
use App\Models\Admin\BasicSettings;
use App\Http\Controllers\Controller;
use App\Constants\PaymentGatewayConst;
use App\Notifications\Admin\CardMethodConfirmLogEmailNotification;
use App\Notifications\Admin\CardMethodRejectLogEmailNotification;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Notification;


class PaymentLogsController extends Controller
{
    /**
     * Method for all card method logs
     * @return view
     */
    public function index(){
        $page_title     = "All Logs";
        $transactions   = Transaction::where('type',PaymentGatewayConst::CARD_PAYMENT)
                                    ->whereNot('status',PaymentGatewayConst::STATUSTEST)
                                    ->orderBy('id','desc')->paginate(10);

        return view('admin.sections.payment-logs.index',compact(
            'page_title',
            'transactions'
        ));
    }
    /**
     * Method for pending card method logs
     * @return view
     */
    public function pending(){
        $page_title     = "Pending Logs";
        $transactions   = Transaction::where('type',PaymentGatewayConst::CARD_PAYMENT)
                                    ->where('status',PaymentGatewayConst::STATUSPENDING)
                                    ->orderBy('id','desc')->paginate(10);

        return view('admin.sections.payment-logs.pending',compact(
            'page_title',
            'transactions'
        ));
    }
    /**
     * Method for complete card method logs
     * @return view
     */
    public function complete(){
        $page_title     = "Confirm Logs";
        $transactions   = Transaction::where('type',PaymentGatewayConst::CARD_PAYMENT)
                                    ->where('status',PaymentGatewayConst::STATUSSUCCESS)
                                    ->orderBy('id','desc')->paginate(10);

        return view('admin.sections.payment-logs.complete',compact(
            'page_title',
            'transactions'
        ));
    }
    /**
     * Method for rejected card method logs
     * @return view
     */
    public function rejected(){
        $page_title     = "Rejected Logs";
        $transactions   = Transaction::where('type',PaymentGatewayConst::CARD_PAYMENT)
                                    ->where('status',PaymentGatewayConst::STATUSREJECTED)
                                    ->orderBy('id','desc')->paginate(10);

        return view('admin.sections.payment-logs.rejected',compact(
            'page_title',
            'transactions'
        ));
    }
    /**
     * Method for view test card method logs
     * @return view
     */
    public function test(){
        $page_title     = "Test Logs";
        $transactions   = Transaction::where('type',PaymentGatewayConst::CARD_PAYMENT)
                                    ->where('status',PaymentGatewayConst::STATUSTEST)
                                    ->orderBy("id","desc")->paginate(10);
                        
        return view('admin.sections.payment-logs.test',compact(
            'page_title',
            'transactions'
        ));


    }
    /**
     * Method for view card method log details page
     * @return view
     * @param $trx_id
     */
    public function details($trx_id){
        $page_title             = "Payment Log Details";
        $transaction            = Transaction::with(['card_method','user_wallet'])->where('trx_id',$trx_id)->first();
        $transaction_device     = TransactionDevice::where('transaction_id',$transaction->id)->first();
        if(!$transaction) return back()->with(['error' => ['Sorry! Data not found.']]);
        
        return view('admin.sections.payment-logs.details',compact(
            'page_title',
            'transaction',
            'transaction_device'
        ));
    }
    /**
     * Method for update status 
     * @param $trx_id
     * @param Illuminate\Http\Request $request
     */
    public function statusConfirm(Request $request,$trx_id){
        $basic_setting  = BasicSettings::first();
        $validator = Validator::make($request->all(),[
            'status'            => 'required|integer',
        ]);

        if($validator->fails()) {
            $errors = ['error' => $validator->errors() ];
            return Response::error($errors);
        }

        $validated = $validator->validate();
        $transaction   = Transaction::with('card_payment_method')->where('trx_id',$trx_id)->first();
        
        try{
            $transaction->update([
                'status' => $validated['status'],
            ]);
            $form_data = [
                'data'        => $transaction,
                'status'      => "Confirm",
            ];
            if($basic_setting->email_notification == true){
                Notification::route("mail",$transaction->user->email)->notify(new CardMethodConfirmLogEmailNotification($form_data));
            }
            
            UserNotification::create([
                'user_id'           => $transaction->user->id,
                'transaction_id'    => $transaction->id,
                'details'           => [
                    'title'         => 'Your Order',
                    'amount'        => $transaction->request_amount,
                    'currency'      => $transaction->request_currency,
                    'card_number'   => $transaction->card_payment_method->card_number,
                    'message'       => "Successfully placed."
                ],
            ]);
           
        }catch(Exception $e){
            return back()->with(['error' => ['Something went wrong! Please try again.']]);
        }
        return back()->with(['success' => ['Transaction Status updated successfully']]);
    }
    /**
     * Method for reject transaction
     * @param $trx_id
     * @param \Illuminate\Http\Request $request
     */
    public function statusRejected(Request $request,$trx_id){
        $basic_setting  = BasicSettings::first();
        $validator = Validator::make($request->all(),[
            'reject_reason'     => 'required',
            'status'            => 'required|integer',
        ]);

        if($validator->fails()) {
            $errors = ['error' => $validator->errors() ];
            return Response::error($errors);
        }

        $validated = $validator->validate();
        $transaction   = Transaction::with('card_payment_method')->where('trx_id',$trx_id)->first();
        
        try{
            $transaction->update([
                'status'            => $validated['status'],
                'reject_reason'     => $validated['reject_reason']
            ]);
            $form_data = [
                'data'        => $transaction,
                'status'      => "Reject",
            ];
            if($basic_setting->email_notification == true){
                Notification::route("mail",$transaction->user->email)->notify(new CardMethodRejectLogEmailNotification($form_data));
            }
            
            UserNotification::create([
                'user_id'           => $transaction->user->id,
                'transaction_id'    => $transaction->id,
                'details'           => [
                    'title'         => 'Your Order',
                    'amount'        => $transaction->request_amount,
                    'currency'      => $transaction->request_currency,
                    'card_number'   => $transaction->card_payment_method->card_number,
                    'message'       => "Successfully placed."
                ],
            ]);
        }catch(Exception $e){
            return back()->with(['error' => ['Something went wrong! Please try again.']]);
        }
        return back()->with(['success' => ['Transaction Rejected successfully']]);
    }
    /** 
    * Method for search all log  
    */
    public function search(Request $request) {
        $validator = Validator::make($request->all(),[
            'text'  => 'required|string',
        ]);
        if($validator->fails()) {
            $error = ['error' => $validator->errors()];
            return Response::error($error,null,400);
        }

        $validated = $validator->validate();
        
        $transactions    = Transaction::where('type',PaymentGatewayConst::CARD_PAYMENT)
                                        ->search($validated['text'])->get();
       
        return view('admin.components.search.all-log-search',compact('transactions'));
        
    }
    /** 
    * Method for search pending log  
    */
    public function searchPending(Request $request) {
        $validator = Validator::make($request->all(),[
            'text'  => 'required|string',
        ]);
        if($validator->fails()) {
            $error = ['error' => $validator->errors()];
            return Response::error($error,null,400);
        }

        $validated = $validator->validate();
        
        $transactions    = Transaction::where('type',PaymentGatewayConst::CARD_PAYMENT)
                                        ->where('status',PaymentGatewayConst::STATUSPENDING)
                                        ->search($validated['text'])
                                        ->get();
       
        return view('admin.components.search.all-log-search',compact('transactions'));
        
    }
    /** 
    * Method for search confirm log  
    */
    public function searchComplete(Request $request) {
        $validator = Validator::make($request->all(),[
            'text'  => 'required|string',
        ]);
        if($validator->fails()) {
            $error = ['error' => $validator->errors()];
            return Response::error($error,null,400);
        }

        $validated = $validator->validate();
        
        $transactions    = Transaction::where('type',PaymentGatewayConst::CARD_PAYMENT)
                                        ->where('status',PaymentGatewayConst::STATUSSUCCESS)
                                        ->search($validated['text'])
                                        ->get();
       
        return view('admin.components.search.all-log-search',compact('transactions'));
        
    }
    /** 
    * Method for search confirm log  
    */
    public function searchReject(Request $request) {
        $validator = Validator::make($request->all(),[
            'text'  => 'required|string',
        ]);
        if($validator->fails()) {
            $error = ['error' => $validator->errors()];
            return Response::error($error,null,400);
        }

        $validated = $validator->validate();
        
        $transactions    = Transaction::where('type',PaymentGatewayConst::CARD_PAYMENT)
                                        ->where('status',PaymentGatewayConst::STATUSREJECTED)
                                        ->search($validated['text'])
                                        ->get();
       
        return view('admin.components.search.all-log-search',compact('transactions'));
        
    }
}
Save Card
top

Save Your Card for Quick and Easy Future Payments Online

Simplify your payment experience by securely saving your card on our platform. After your initial transaction, you can choose to store your card details safely for future use. This feature eliminates the need to re-enter your payment information each time, making checkouts faster while keeping your data secure with advanced encryption and robust security measures.

  • Navigate to the “Save Card” section.
  • Click on “Add Card.”
  • Choose your preferred setup method.
  • Your card is now saved for future payments.
img