Viewing File: /home/ubuntu/vedadeals-backend-base/app/Http/Controllers/Admin/RevenueController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Helpers\Helper;
use DB, Exception, Setting, Hash, Storage, stdClass;
use App\Models\{ UserWallet, UserWalletPayment, UserWithdrawal, User, Order, OrderPayment };
use App\Http\Requests\Admin\UserWithdrawal\{ UserWithdrawalGetRequest };
use App\Http\Requests\Admin\UserWallet\{ UserWalletGetRequest };
use App\Http\Requests\Admin\UserWalletPayment\{ UserWalletPaymentGetRequest };
use App\Http\Requests\Admin\User\{ UserGetRequest };
use App\Services\{ EmailService, PaymentService };
class RevenueController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(Request $request)
{
$this->middleware('auth:admin');
$this->skip = $request->skip ?: 0;
$this->take = $request->take ?: (Setting::get('admin_take_count') ?: TAKE_COUNT);
}
/**
* @method withdrawal_requests_index()
*
* @uses to list the withdrawal_requests
*
* @created Karthick
*
* @updated
*
* @param
*
* @return to withdrawal_requests index page
*/
public function withdrawal_requests_index(Request $request) {
try {
$user = '';
$base_query = UserWithdrawal::with('user')->orderBy('created_at','DESC');
if($request->filled('search_key')) {
$base_query = $base_query->when($request->filled('status'), function ($query) use ($request) {
$query->where('status', $request->status);
})->where(function($query) use ($request) {
$query->where('unique_id', "LIKE", "%". $request->search_key . "%");
})->orWhereHas('user', function ($query) use ($request) {
$query->where('users.name', "LIKE", "%" . $request->search_key . "%");
});
}
if($request->user_id) {
Helper::check_model_exists($request->user_id, USER);
$user = User::find($request->user_id);
$base_query = $base_query->where('user_id', $request->user_id);
}
if($request->filled('status')) {
$base_query = $base_query->where('status', $request->status);
}
$withdrawal_requests = $base_query->paginate($this->take);
return view('admin.withdrawal_requests.index')
->with('page', 'withdrawal_requests')
->with('sub_page', 'withdrawal_requests-view')
->with('user', $user)
->with('withdrawal_requests', $withdrawal_requests);
} catch (Exception $e) {
return redirect()->route('admin.withdrawal_requests.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method withdrawal_requests_view()
*
* @uses to view the withdrawal request details based on user_withdrawal_id
*
* @created Karthick
*
* @updated
*
* @param object $request - user_withdrawal_id
*
* @return View page
*
*/
public function withdrawal_requests_view(UserWithdrawalGetRequest $request) {
try {
$withdrawal_request = UserWithdrawal::find($request->user_withdrawal_id);
return view('admin.withdrawal_requests.view')
->with('page', 'withdrawal_requests')
->with('sub_page', 'withdrawal_requests-view')
->with('withdrawal_request', $withdrawal_request);
} catch (Exception $e) {
return redirect()->route('admin.withdrawal_requests.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method withdrawal_requests_reject
*
* @uses to reject withdrawal request based on user_withdrawal_id
*
* @created Karthick
*
* @updated
*
* @param object $request - user_withdrawal_id
*
* @return response success/failure message
*
**/
public function withdrawal_requests_reject(UserWithdrawalGetRequest $request) {
try {
$withdrawal_request = UserWithdrawal::find($request->user_withdrawal_id);
$result = PaymentService::reject_withdrawal_request($withdrawal_request->id, $request->cancel_reason);
if($result['result']) {
return back()->with('flash_success', tr('withdrawal_request_rejected_success'));
}
throw new Exception($result['message']);
} catch(Exception $e) {
DB::rollback();
return redirect()->route('admin.withdrawal_requests.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method withdrawal_requests_pay
*
* @uses to pay withdrawal request based on user_withdrawal_id
*
* @created Karthick
*
* @updated
*
* @param object $request - user_withdrawal_id
*
* @return response success/failure message
*
**/
public function withdrawal_requests_pay(UserWithdrawalGetRequest $request) {
try {
$withdrawal = UserWithdrawal::find($request->user_withdrawal_id);
if($request->amount > $withdrawal->requested_amount) {
throw new Exception(tr('paying_amount_error'));
}
$result = PaymentService::pay_withdrawal_request($withdrawal->id, $request->amount);
if($result['result']) {
return back()->with('flash_success', $result['message']);
}
throw new Exception(tr('withdrawal_request_paid_failure'));
} catch(Exception $e) {
return redirect()->route('admin.withdrawal_requests.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method wallet_transactions_index()
*
* @uses to list the wallet_transactions
*
* @created Karthick
*
* @updated
*
* @param
*
* @return to wallet_transactions index page
*/
public function wallet_transactions_index(Request $request) {
try {
$user = '';
$base_query = UserWalletPayment::with('user')->orderBy('created_at','DESC');
if($request->filled('search_key')) {
$base_query = $base_query->when($request->filled('status'), function ($query) use ($request) {
$query->where('status', $request->status);
})->where(function($query) use ($request) {
$query->where('unique_id', "LIKE", "%". $request->search_key . "%");
$query->orWhere('payment_id', "LIKE", "%". $request->search_key . "%");
})->orWhereHas('user', function ($query) use ($request) {
$query->where('users.name', "LIKE", "%" . $request->search_key . "%");
});
}
if($request->user_id) {
Helper::check_model_exists($request->user_id, USER);
$user = User::find($request->user_id);
$base_query = $base_query->where('user_id', $request->user_id);
}
if($request->filled('status')) {
$base_query = $base_query->where('status', $request->status);
}
$wallet_transactions = $base_query->paginate($this->take);
return view('admin.wallet_transactions.index')
->with('page', 'wallet_transactions')
->with('sub_page', 'wallet_transactions-view')
->with('user', $user)
->with('wallet_transactions', $wallet_transactions);
} catch(Exception $e) {
return redirect()->route('admin.wallet_transactions.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method wallet_transactions_view()
*
* @uses to view the withdrawal request details based on user_wallet_payment_id
*
* @created Karthick
*
* @updated
*
* @param object $request - user_wallet_payment_id
*
* @return View page
*
*/
public function wallet_transactions_view(UserWalletPaymentGetRequest $request) {
try {
$wallet_transaction = UserWalletPayment::find($request->user_wallet_payment_id);
return view('admin.wallet_transactions.view')
->with('page', 'wallet_transactions')
->with('sub_page', 'wallet_transactions-view')
->with('wallet_transaction', $wallet_transaction);
} catch (Exception $e) {
return redirect()->route('admin.wallet_transactions.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method wallets_view()
*
* @uses to view the user wallet
*
* @created Karthick
*
* @updated
*
* @param object $request - user_id
*
* @return View page
*
*/
public function wallets_view(UserGetRequest $request) {
try {
$wallet = UserWallet::firstOrCreate(['user_id' => $request->user_id]);
$user = User::find($request->user_id);
$base_query = UserWalletPayment::with('user')->where('user_id', $request->user_id)->orderBy('created_at', 'desc');
$wallet_transactions_count = $base_query->count();
$wallet_transactions = $base_query->get()->take($this->take);
return view('admin.wallets.view')
->with('page', 'users')
->with('sub_page', 'users-view')
->with('wallet_transactions', $wallet_transactions)
->with('user', $user)
->with('wallet_transactions_count', $wallet_transactions_count)
->with('wallet', $wallet->refresh());
} catch (Exception $e) {
return redirect()->route('admin.wallet_transactions.index')->with('flash_error', $e->getMessage());
}
}
public function revenue_dashboard() {
$data = new stdClass();
// $data->total_user_wallet_amount = formatted_amount(UserWalletPayment::where(['payment_type' => WALLET_PAYMENT_TYPE_CREDIT, 'status' => PAID])->sum('amount'));
// $data->wallet_transaction_data = Helper::user_payments_stats_in_last_one_year();
$data->total_order_amount = formatted_amount(Order::sum('total'));
$data->today_order_amount = formatted_amount(Order::whereDate('created_at', today())->sum('total'));
$data->total_refund_amount = formatted_amount(Order::where(['status' => ORDER_REFUND_SUCCESS])->sum('total'));
$data->today_refund_amount = formatted_amount(Order::where(['status' => ORDER_REFUND_SUCCESS])->whereDate('created_at', today())->sum('total'));
$data->orders_month_data = Helper::orders_month_graph(12);
$data->order_payments_month_data = Helper::order_payments_month_graph(12);
$data->orders_days_data = Helper::orders_n_days_graph(10);
$data->order_payments_days_data = Helper::order_payments_n_days_graph(10);
$data->order_refunds_month_data = Helper::orders_month_graph(12, ORDER_REFUND_SUCCESS);
$data->order_payment_refunds_month_data = Helper::order_payments_month_graph(12, ORDER_REFUND_SUCCESS);
$data->order_refunds_days_data = Helper::orders_n_days_graph(10, ORDER_REFUND_SUCCESS);
$data->order_payment_refunds_days_data = Helper::order_payments_n_days_graph(10, ORDER_REFUND_SUCCESS);
$data->recent_order_payments = OrderPayment::with(['user'])->orderBy('id' , 'desc')->take($this->take)->get();
return view('admin.revenue_dashboard')
->with(compact(['data']))
->with('page', 'revenue_dashboard');
}
}
Back to Directory
File Manager