The Rise of Contactless Payments:...
In recent years, contactless payments have surged in popularity, driven...
<?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'));
}
}
Blog Section
Dive into our blog to explore the cutting-edge trends in digital payments and NFC technology. Stay updated on the innovations that are revolutionizing transactions, boosting security, and making payments quicker and more convenient. Learn how these advancements are shaping the future of financial interactions and driving the global transition towards a cashless world.
In recent years, contactless payments have surged in popularity, driven...
As digital transactions proliferate, ensuring robust payment security is more critical than ever. Two foundational...
Digital wallets have fundamentally transformed how we manage money, offering a streamlined, secure, and highly...