<?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);
}
}
Contact Section
We’d love to hear from you! Whether you have questions, feedback, or need support, our team is here to help. Reach out to us via email, phone, or visit our office. We’re committed to providing you with exceptional service and ensuring your experience with NFC Pay is seamless and satisfying. Let’s connect!