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.
		
		
		
		
			
				
					90 lines
				
				3.1 KiB
			
		
		
			
		
	
	
					90 lines
				
				3.1 KiB
			| 
								 
											2 years ago
										 
									 | 
							
								<?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'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |