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.
		
		
		
		
			
				
					75 lines
				
				2.7 KiB
			
		
		
			
		
	
	
					75 lines
				
				2.7 KiB
			| 
								 
											2 years ago
										 
									 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace App\Http\Controllers\Vendor;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use Illuminate\Http\Request;
							 | 
						||
| 
								 | 
							
								use App\CentralLogics\Helpers;
							 | 
						||
| 
								 | 
							
								use App\Models\WithdrawRequest;
							 | 
						||
| 
								 | 
							
								use App\Models\RestaurantWallet;
							 | 
						||
| 
								 | 
							
								use App\Models\WithdrawalMethod;
							 | 
						||
| 
								 | 
							
								use Illuminate\Support\Facades\DB;
							 | 
						||
| 
								 | 
							
								use App\Http\Controllers\Controller;
							 | 
						||
| 
								 | 
							
								use Brian2694\Toastr\Facades\Toastr;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class WalletController extends Controller
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    public function index()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $withdrawal_methods = WithdrawalMethod::ofStatus(1)->get();
							 | 
						||
| 
								 | 
							
								        $withdraw_req = WithdrawRequest::with(['vendor'])->where('vendor_id', Helpers::get_vendor_id())->latest()->paginate(config('default_pagination'));
							 | 
						||
| 
								 | 
							
								        return view('vendor-views.wallet.index', compact('withdraw_req','withdrawal_methods'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    public function w_request(Request $request)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $method = WithdrawalMethod::find($request['withdraw_method']);
							 | 
						||
| 
								 | 
							
								        $fields = array_column($method->method_fields, 'input_name');
							 | 
						||
| 
								 | 
							
								        $values = $request->all();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $method_data = [];
							 | 
						||
| 
								 | 
							
								        foreach ($fields as $field) {
							 | 
						||
| 
								 | 
							
								            if(key_exists($field, $values)) {
							 | 
						||
| 
								 | 
							
								                $method_data[$field] = $values[$field];
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $w = RestaurantWallet::where('vendor_id', Helpers::get_vendor_id())->first();
							 | 
						||
| 
								 | 
							
								        if ($w->balance >= $request['amount'] && $request['amount'] > .01) {
							 | 
						||
| 
								 | 
							
								            $data = [
							 | 
						||
| 
								 | 
							
								                'vendor_id' => Helpers::get_vendor_id(),
							 | 
						||
| 
								 | 
							
								                'amount' => $request['amount'],
							 | 
						||
| 
								 | 
							
								                'transaction_note' => null,
							 | 
						||
| 
								 | 
							
								                'withdrawal_method_id' => $request['withdraw_method'],
							 | 
						||
| 
								 | 
							
								                'withdrawal_method_fields' => json_encode($method_data),
							 | 
						||
| 
								 | 
							
								                'approved' => 0,
							 | 
						||
| 
								 | 
							
								                'created_at' => now(),
							 | 
						||
| 
								 | 
							
								                'updated_at' => now()
							 | 
						||
| 
								 | 
							
								            ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            DB::table('withdraw_requests')->insert($data);
							 | 
						||
| 
								 | 
							
								            RestaurantWallet::where('vendor_id', Helpers::get_vendor_id())->increment('pending_withdraw', $request['amount']);
							 | 
						||
| 
								 | 
							
								            Toastr::success(translate('Withdraw request has been sent.'));
							 | 
						||
| 
								 | 
							
								            return redirect()->back();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Toastr::error('invalid request.!');
							 | 
						||
| 
								 | 
							
								        return redirect()->back();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function close_request($id)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $wr = WithdrawRequest::find($id);
							 | 
						||
| 
								 | 
							
								        if ($wr->approved == 0) {
							 | 
						||
| 
								 | 
							
								            RestaurantWallet::where('vendor_id', Helpers::get_vendor_id())->decrement('pending_withdraw', $wr['amount']);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $wr->delete();
							 | 
						||
| 
								 | 
							
								        Toastr::success(translate('request closed!'));
							 | 
						||
| 
								 | 
							
								        return back();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function method_list(Request $request)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $method = WithdrawalMethod::ofStatus(1)->where('id', $request->method_id)->first();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return response()->json(['content'=>$method], 200);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |