<?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);
}
}
Before you begin integrating the Kueue Pay Developer API, make sure you have: