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.
		
		
		
		
		
			
		
			
				
					
					
						
							151 lines
						
					
					
						
							6.7 KiB
						
					
					
				
			
		
		
	
	
							151 lines
						
					
					
						
							6.7 KiB
						
					
					
				| <?php
 | |
| 
 | |
| namespace App\Http\Controllers\Vendor;
 | |
| 
 | |
| use App\Models\Restaurant;
 | |
| use Illuminate\Http\Request;
 | |
| use App\CentralLogics\Helpers;
 | |
| use Illuminate\Support\Carbon;
 | |
| use App\Models\RestaurantWallet;
 | |
| use App\Models\SubscriptionPackage;
 | |
| use App\Http\Controllers\Controller;
 | |
| use Brian2694\Toastr\Facades\Toastr;
 | |
| use App\Models\RestaurantSubscription;
 | |
| use App\Models\SubscriptionTransaction;
 | |
| 
 | |
| class SubscriptionController extends Controller
 | |
| {
 | |
|     public function subscription()
 | |
|     {
 | |
|             $id=Helpers::get_restaurant_id();
 | |
|             $restaurant=  Restaurant::where('id',$id)->first();
 | |
|             if ($restaurant->restaurant_model == 'subscription' || $restaurant->restaurant_model == 'unsubscribed') {
 | |
|                 $rest_subscription= RestaurantSubscription::where('restaurant_id', $id)->with(['package'])->latest()->first();
 | |
|                 $transcations = SubscriptionTransaction::where('restaurant_id', $id)->latest()->paginate(config('default_pagination'));
 | |
|                 $package_id=(isset($rest_subscription->package_id))  ? $rest_subscription->package_id : 0 ;
 | |
|                 $total_bill=SubscriptionTransaction::where('restaurant_id', $id)->where('package_id', $package_id)->sum('paid_amount');
 | |
|                 $packages= SubscriptionPackage::where('status', 1)->get();
 | |
|                 return view('vendor-views.subscription.subscription',compact(['rest_subscription','restaurant','transcations','packages','total_bill']));
 | |
|             }
 | |
|             else{
 | |
|             abort(404);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|         public function transcation(Request $request){
 | |
|             $filter = $request->query('filter', 'all');
 | |
|             $transcations = SubscriptionTransaction::where('restaurant_id', Helpers::get_restaurant_id())
 | |
|             ->when($filter == 'month', function ($query) {
 | |
|                 return $query->whereMonth('created_at', Carbon::now()->month);
 | |
|             })
 | |
|             ->when($filter == 'year', function ($query) {
 | |
|                 return $query->whereYear('created_at', Carbon::now()->year);
 | |
|             })
 | |
|             ->latest()->paginate(config('default_pagination'));
 | |
|             $total = $transcations->total();
 | |
|             return view('vendor-views.subscription.subscription-transaction',[
 | |
|             'transcations' => $transcations,
 | |
|             'filter' => $filter,
 | |
|             'total' => $total,
 | |
|             ]);
 | |
|         }
 | |
|         public function trans_search_by_date(Request $request){
 | |
|             $from=$request->start_date;
 | |
|             $to= $request->end_date;
 | |
|             $filter = 'all';
 | |
|             $transcations=SubscriptionTransaction::where('restaurant_id', Helpers::get_restaurant_id())
 | |
|             ->whereBetween('created_at', ["{$from}", "{$to} 23:59:59"])
 | |
|             ->latest()->paginate(config('default_pagination'));
 | |
|             $total = $transcations->total();
 | |
|             return view('vendor-views.subscription.subscription-transaction',[
 | |
|                 'transcations' => $transcations,
 | |
|                 'filter' => $filter,
 | |
|                 'total' => $total,
 | |
|                 'from' =>  $from,
 | |
|                 'to' =>  $to,
 | |
|                 ]);
 | |
|         }
 | |
| 
 | |
|     public function package_renew_change_update(Request $request){
 | |
|         $package = SubscriptionPackage::findOrFail($request->package_id);
 | |
|         $restaurant_id=Helpers::get_restaurant_id();
 | |
|         $discount = $request->discount ?? 0;
 | |
| 
 | |
|         $total_parice =$package->price - (($package->price*$discount)/100);
 | |
|         $reference= $request->reference ?? null;
 | |
|         if($request->button == 'renew'){
 | |
|             $type = 'renew';
 | |
|         }else{
 | |
|             $type = null;
 | |
|         }
 | |
|         if ($request->payment_type == 'wallet') {
 | |
|             $wallet = RestaurantWallet::where('vendor_id',Helpers::get_vendor_id())->first();
 | |
|             if ( $wallet->balance >= $total_parice) {
 | |
|                 $payment_method= 'wallet';
 | |
|                 $status =Helpers::subscription_plan_chosen($restaurant_id ,$package->id, $payment_method ,$reference ,$discount,$type);
 | |
|                 if($status === 'downgrade_error'){
 | |
|                     Toastr::error(translate('messages.You_can_not_downgraded_to_this_package_please_choose_a_package_with_higher_upload_limits') );
 | |
|                     return back();
 | |
|                     }
 | |
|                 $wallet->total_withdrawn= $wallet->total_withdrawn +$total_parice;
 | |
|                     $wallet->save();
 | |
|             }
 | |
|             else{
 | |
|                 Toastr::error('Insufficient Balance');
 | |
|                 return back();
 | |
|             }
 | |
|         }
 | |
|         elseif ($request->payment_type == 'pay_now') {
 | |
|             // dd('pay_now');
 | |
|             $payment_method= 'manual_payment_by_restaurant';
 | |
|             $status = Helpers::subscription_plan_chosen($restaurant_id ,$package->id, $payment_method ,$reference ,$discount,$type);
 | |
|             if($status === 'downgrade_error'){
 | |
|                 Toastr::error(translate('messages.You_can_not_downgraded_to_this_package_please_choose_a_package_with_higher_upload_limits') );
 | |
|                 return back();
 | |
|                 }
 | |
|         }
 | |
|         Toastr::success(translate('messages.subscription_successful') );
 | |
|         return redirect()->route('vendor.subscription.subscription');
 | |
|     }
 | |
| 
 | |
|     public function rest_transcation_search(Request $request)
 | |
|     {
 | |
|         $key = explode(' ', $request['search']);
 | |
|         $transcations = SubscriptionTransaction::where('restaurant_id',Helpers::get_restaurant_id())->where(function ($q) use ($key) {
 | |
|             foreach ($key as $value) {
 | |
|                 $q->orWhere('id', 'like', "%{$value}%")
 | |
|                     ->orWhere('paid_amount', 'like', "%{$value}%")
 | |
|                     ->orWhere('reference', 'like', "%{$value}%")
 | |
|                     ->orWheredate('created_at', 'like', "%{$value}%");
 | |
|             }
 | |
|         })
 | |
|             ->get();
 | |
|         $total = $transcations->count();
 | |
|         return response()->json([
 | |
|             'view' => view('vendor-views.subscription._rest_subs_transcation', compact('transcations'))->render(), 'total'=> $total
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     public function invoice($id){
 | |
|         $subscription_transaction= SubscriptionTransaction::findOrFail($id);
 | |
|         $restaurant= Restaurant::findOrFail($subscription_transaction->restaurant_id);
 | |
| 
 | |
|         return view('vendor-views.subscription.subs_transcation_invoice', compact(
 | |
|             'restaurant',
 | |
|             'subscription_transaction',
 | |
|         ));
 | |
|     }
 | |
| 
 | |
|     public function package_selected(Request $request,$id){
 | |
|         $restaurant = Helpers::get_restaurant_data();
 | |
|         $restaurant_id = $restaurant->id;
 | |
|         $rest_subscription= RestaurantSubscription::where('restaurant_id', $restaurant_id)->with(['package'])->latest()->first();
 | |
|         $package = SubscriptionPackage::where('status',1)->where('id',$id)->first();
 | |
|         return response()->json([
 | |
|             'view' => view('vendor-views.subscription._package_selected', compact('rest_subscription','package'))->render()
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 |