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.
152 lines
6.7 KiB
152 lines
6.7 KiB
2 years ago
|
<?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()
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|