You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
3.1 KiB
89 lines
3.1 KiB
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\CentralLogics\CustomerLogic;
|
|
use App\CentralLogics\Helpers;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\BusinessSetting;
|
|
use App\Models\WalletTransaction;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Brian2694\Toastr\Facades\Toastr;
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
class CustomerWalletController extends Controller
|
|
{
|
|
public function add_fund_view()
|
|
{
|
|
if(BusinessSetting::where('key','wallet_status')->first()->value != 1)
|
|
{
|
|
Toastr::error(translate('messages.customer_wallet_disable_warning_admin'));
|
|
return back();
|
|
}
|
|
return view('admin-views.customer.wallet.add_fund');
|
|
}
|
|
|
|
public function add_fund(Request $request)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'customer_id'=>'exists:users,id',
|
|
'amount'=>'numeric|min:.01',
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json(['errors' => Helpers::error_processor($validator)]);
|
|
}
|
|
|
|
$wallet_transaction = CustomerLogic::create_wallet_transaction($request->customer_id, $request->amount, 'add_fund_by_admin',$request->referance);
|
|
|
|
if($wallet_transaction)
|
|
{
|
|
try{
|
|
if(config('mail.status')) {
|
|
Mail::to($wallet_transaction->user->email)->send(new \App\Mail\AddFundToWallet($wallet_transaction));
|
|
}
|
|
}catch(\Exception $ex)
|
|
{
|
|
info($ex);
|
|
}
|
|
|
|
return response()->json([], 200);
|
|
}
|
|
|
|
return response()->json(['errors'=>[
|
|
'message'=>translate('messages.failed_to_create_transaction')
|
|
]], 200);
|
|
}
|
|
|
|
public function report(Request $request)
|
|
{
|
|
$data = WalletTransaction::selectRaw('sum(credit) as total_credit, sum(debit) as total_debit')
|
|
->when(($request->from && $request->to),function($query)use($request){
|
|
$query->whereBetween('created_at', [$request->from.' 00:00:00', $request->to.' 23:59:59']);
|
|
})
|
|
->when($request->transaction_type, function($query)use($request){
|
|
$query->where('transaction_type',$request->transaction_type);
|
|
})
|
|
->when($request->customer_id, function($query)use($request){
|
|
$query->where('user_id',$request->customer_id);
|
|
})
|
|
->get();
|
|
|
|
$transactions = WalletTransaction::
|
|
when(($request->from && $request->to),function($query)use($request){
|
|
$query->whereBetween('created_at', [$request->from.' 00:00:00', $request->to.' 23:59:59']);
|
|
})
|
|
->when($request->transaction_type, function($query)use($request){
|
|
$query->where('transaction_type',$request->transaction_type);
|
|
})
|
|
->when($request->customer_id, function($query)use($request){
|
|
$query->where('user_id',$request->customer_id);
|
|
})
|
|
->whereNull('delivery_man_id')
|
|
->latest()
|
|
->paginate(config('default_pagination'));
|
|
|
|
return view('admin-views.customer.wallet.report', compact('data','transactions'));
|
|
}
|
|
}
|
|
|