<?php
namespace App\Http\Controllers\Api\V1\User;
use App\Models\User;
use App\Models\UserWallet;
use App\Models\Transaction;
use App\Http\Helpers\Response;
use App\Models\UserNotification;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
use App\Constants\PaymentGatewayConst;
use App\Providers\Admin\CurrencyProvider;
class DashboardController extends Controller
{
public function dashboard() {
$default_currency = CurrencyProvider::default();
// User Wallets
$user_wallets = UserWallet::auth()->select('id','user_id','currency_id', DB::raw('CAST(balance AS FLOAT) as balance'),'status','created_at')->with(['currency' => function($q) {
$q->select('id','code','flag','name','symbol');
}])->get();
$gateway_image_paths = [
'base_url' => url("/"),
'path_location' => files_asset_path_basename("payment-gateways"),
'default_image' => files_asset_path_basename("profile-default"),
];
$transactions = Transaction::auth()->orderBy('id','desc')->get()->map(function($data){
if($data->type == PaymentGatewayConst::TYPETRANSFERMONEY){
if($data->attribute == PaymentGatewayConst::SEND){
$receiver_email = $data->details->receiver->email ?? '';
$receiver = User::where('email',$receiver_email)->first();
$receiver_fullname = $receiver->fullname;
$receiver_image = $receiver->image;
$sender_fullname = '';
$sender_image = '';
$card_name = '';
$card_number = '';
}else{
$sender_email = $data->details->sender->email ?? '';
$sender = User::where('email',$sender_email)->first();
$sender_fullname = $sender->fullname;
$sender_image = $sender->image;
$receiver_fullname = '';
$receiver_image = '';
$card_name = '';
$card_number = '';
}
}
if($data->type == PaymentGatewayConst::TYPEADDMONEY){
$gateway_image = $data->payment_gateway->gateway->image;
$card_name = '';
$card_number = '';
}
if($data->type == PaymentGatewayConst::CARD_PAYMENT){
$card_name = decrypt($data->card_method->name) ?? '';
$card_number = '************'.substr(decrypt($data->card_method->card_number) ?? '',-4) ?? '';
}
return [
'type' => $data->type,
'trx_id' => $data->trx_id,
'sender_fullname' => $sender_fullname ?? '',
'sender_email' => $sender_email ?? '',
'sender_image' => $sender_image ?? '',
'receiver_fullname' => $receiver_fullname ?? '',
'receiver_email' => $receiver_email ?? '',
'receiver_image' => $receiver_image ?? '',
'card_name' => $card_name ?? '',
'card_number' => $card_number ?? '',
'payment_gateway' => $data->payment_gateway->name ?? '',
'gateway_image' => $gateway_image ?? '',
'payment_type' => $data->payment_type ?? '',
'request_amount' => get_amount($data->request_amount),
'total_charge' => get_amount($data->total_charge),
'total_payable' => get_amount($data->total_payable),
'request_currency' => $data->request_currency,
'payment_currency' => $data->payment_currency,
'remark' => $data->remark,
'attribute' => $data->attribute,
'status' => $data->stringStatus->value,
'reject_reason' => $data->reject_reason,
'created_at' => $data->created_at
];
});
// User Information
$user_info = auth()->user()->only([
'id',
'firstname',
'lastname',
'fullname',
'username',
'email',
'image',
'mobile_code',
'mobile',
'full_mobile',
'email_verified',
'kyc_verified',
'two_factor_verified',
'two_factor_status',
'two_factor_secret',
]);
$profile_image_paths = [
'base_url' => url("/"),
'path_location' => files_asset_path_basename("user-profile"),
'default_image' => files_asset_path_basename("profile-default"),
];
$currency_image_paths = [
'base_url' => url("/"),
'path_location' => files_asset_path_basename("currency-flag"),
'default_image' => files_asset_path_basename("profile-default"),
];
$total_add_money = Transaction::auth()->where('type',PaymentGatewayConst::TYPEADDMONEY)->count();
$total_payments = Transaction::auth()->where('type',PaymentGatewayConst::CARD_PAYMENT)->count();
return Response::success([__('User dashboard data fetch successfully!')],[
'instructions' => [
'user_info' => [
'kyc_verified' => "0: Default, 1: Approved, 2: Pending, 3:Rejected",
]
],
'transactions' => $transactions,
'user_info' => $user_info,
'wallets' => $user_wallets,
'profile_image_paths' => $profile_image_paths,
'currency_image_paths' => $currency_image_paths,
'gateway_image_paths' => $gateway_image_paths,
'total_add_money' => $total_add_money,
'total_payments' => $total_payments
]);
}
/**
* Method for get the user notification.
*/
public function notifications() {
$user = auth()->user()->id;
$notification = UserNotification::where('user_id',$user)->orderBy("id","desc")->get()->map(function($data){
return [
'id' => $data->id,
'details' => $data->details,
'created_at' => $data->created_at
];
});
return Response::success([__('Notification Data Fetch Successfuly.')],[
'notification' => $notification,
],200);
}
}
If you encounter any issues or need assistance, please reach out to our dedicated developer support team Contact Us
Thank you for choosing Kueue Pay Payment Gateway Solutions! We look forward to seeing your integration thrive and provide a seamless payment experience for your valued customers.