partner discounts and their referrals

This commit is contained in:
ok236449 2022-08-27 18:59:07 +02:00
parent 748b21117a
commit 3a53ddbc59
11 changed files with 714 additions and 26 deletions

View file

@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin;
use App\Events\UserUpdateCreditsEvent;
use App\Http\Controllers\Controller;
use App\Models\InvoiceSettings;
use App\Models\PartnerDiscount;
use App\Models\Payment;
use App\Models\ShopProduct;
use App\Models\Settings;
@ -57,10 +58,13 @@ class PaymentController extends Controller
public function checkOut(Request $request, ShopProduct $shopProduct)
{
return view('store.checkout')->with([
'product' => $shopProduct,
'taxvalue' => $shopProduct->getTaxValue(),
'taxpercent' => $shopProduct->getTaxPercent(),
'total' => $shopProduct->getTotalPrice()
'product' => $shopProduct,
'discountpercent' => PartnerDiscount::getDiscount(),
'discountvalue' => PartnerDiscount::getDiscount() * $shopProduct->price/100,
'discountedprice' => $shopProduct->getPriceAfterDiscount(),
'taxvalue' => $shopProduct->getTaxValue(),
'taxpercent' => $shopProduct->getTaxPercent(),
'total' => $shopProduct->getTotalPrice()
]);
}
@ -78,7 +82,7 @@ class PaymentController extends Controller
"purchase_units" => [
[
"reference_id" => uniqid(),
"description" => $shopProduct->description,
"description" => $shopProduct->display . (PartnerDiscount::getDiscount()?(" (" . __('Discount') . " " . PartnerDiscount::getDiscount() . '%)'):""),
"amount" => [
"value" => $shopProduct->getTotalPrice(),
'currency_code' => strtoupper($shopProduct->currency_code),
@ -86,7 +90,7 @@ class PaymentController extends Controller
'item_total' =>
[
'currency_code' => strtoupper($shopProduct->currency_code),
'value' => $shopProduct->price,
'value' => $shopProduct->getPriceAfterDiscount(),
],
'tax_total' =>
[
@ -188,7 +192,7 @@ class PaymentController extends Controller
if((config("SETTINGS::REFERRAL:MODE") == "commission" || config("SETTINGS::REFERRAL:MODE") == "both") && $shopProduct->type=="Credits"){
if($ref_user = DB::table("user_referrals")->where('registered_user_id', '=', $user->id)->first()){
$ref_user = User::findOrFail($ref_user->referral_id);
$increment = number_format($shopProduct->quantity/100*config("SETTINGS::REFERRAL:PERCENTAGE"),0,"","");
$increment = number_format($shopProduct->quantity*(PartnerDiscount::getCommission($ref_user->id))/100,0,"","");
$ref_user->increment('credits', $increment);
//LOGS REFERRALS IN THE ACTIVITY LOG
@ -273,10 +277,10 @@ class PaymentController extends Controller
'price_data' => [
'currency' => $shopProduct->currency_code,
'product_data' => [
'name' => $shopProduct->display,
'name' => $shopProduct->display . (PartnerDiscount::getDiscount()?(" (" . __('Discount') . " " . PartnerDiscount::getDiscount() . '%)'):""),
'description' => $shopProduct->description,
],
'unit_amount_decimal' => round($shopProduct->price * 100, 2),
'unit_amount_decimal' => round($shopProduct->getPriceAfterDiscount() * 100, 2),
],
'quantity' => 1,
],
@ -284,7 +288,7 @@ class PaymentController extends Controller
'price_data' => [
'currency' => $shopProduct->currency_code,
'product_data' => [
'name' => 'Product Tax',
'name' => __('Tax'),
'description' => $shopProduct->getTaxPercent() . "%",
],
'unit_amount_decimal' => round($shopProduct->getTaxValue(), 2) * 100,
@ -678,4 +682,4 @@ class PaymentController extends Controller
->rawColumns(['actions'])
->make(true);
}
}
}

View file

@ -0,0 +1,203 @@
<?php
namespace App\Http\Controllers;
use App\Models\PartnerDiscount;
use App\Models\User;
use Illuminate\Http\Request;
class PartnerController extends Controller
{
public function index()
{
return view('admin.partners.index');
}
/**
* Show the form for creating a new resource.
*
* @return Application|Factory|View
*/
public function create()
{
return view('admin.partners.create', [
'partners' =>PartnerDiscount::get(),
'users' => User::orderBy('name')->get()
]);
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
* @return RedirectResponse
*/
public function store(Request $request)
{
$request->validate([
'user_id' => 'required|integer|min:0',
'partner_discount' => 'required|integer|max:100|min:0',
'registered_user_discount' => 'required|integer|max:100|min:0'
]);
PartnerDiscount::create($request->all());
return redirect()->route('admin.partners.index')->with('success', __('partner has been created!'));
}
/**
* Display the specified resource.
*
* @param Voucher $voucher
* @return Response
*/
public function show(Voucher $voucher)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param Voucher $voucher
* @return Application|Factory|View
*/
public function edit(PartnerDiscount $partner)
{
return view('admin.partners.edit', [
'partners' =>PartnerDiscount::get(),
'partner' => $partner,
'users' => User::orderBy('name')->get()
]);
}
/**
* Update the specified resource in storage.
*
* @param Request $request
* @param Voucher $voucher
* @return RedirectResponse
*/
public function update(Request $request, PartnerDiscount $partner)
{
//dd($request);
$request->validate([
'user_id' => 'required|integer|min:0',
'partner_discount' => 'required|integer|max:100|min:0',
'registered_user_discount' => 'required|integer|max:100|min:0'
]);
$partner->update($request->all());
return redirect()->route('admin.partners.index')->with('success', __('partner has been updated!'));
}
/**
* Remove the specified resource from storage.
*
* @param Voucher $voucher
* @return RedirectResponse
*/
public function destroy(PartnerDiscount $partner)
{
$partner->delete();
return redirect()->back()->with('success', __('partner has been removed!'));
}
public function users(Voucher $voucher)
{
return view('admin.vouchers.users', [
'voucher' => $voucher
]);
}
/**
* @param Request $request
* @return JsonResponse
* @throws ValidationException
*/
public function redeem(Request $request)
{
#general validations
$request->validate([
'code' => 'required|exists:vouchers,code'
]);
#get voucher by code
$voucher = Voucher::where('code', '=', $request->input('code'))->firstOrFail();
#extra validations
if ($voucher->getStatus() == 'USES_LIMIT_REACHED') throw ValidationException::withMessages([
'code' => __('This voucher has reached the maximum amount of uses')
]);
if ($voucher->getStatus() == 'EXPIRED') throw ValidationException::withMessages([
'code' => __('This voucher has expired')
]);
if (!$request->user()->vouchers()->where('id', '=', $voucher->id)->get()->isEmpty()) throw ValidationException::withMessages([
'code' => __('You already redeemed this voucher code')
]);
if ($request->user()->credits + $voucher->credits >= 99999999) throw ValidationException::withMessages([
'code' => "You can't redeem this voucher because you would exceed the limit of " . CREDITS_DISPLAY_NAME
]);
#redeem voucher
$voucher->redeem($request->user());
event(new UserUpdateCreditsEvent($request->user()));
return response()->json([
'success' => "{$voucher->credits} " . CREDITS_DISPLAY_NAME ." ". __("have been added to your balance!")
]);
}
public function usersDataTable(Voucher $voucher)
{
$users = $voucher->users();
return datatables($users)
->editColumn('name', function (User $user) {
return '<a class="text-info" target="_blank" href="' . route('admin.users.show', $user->id) . '">' . $user->name . '</a>';
})
->addColumn('credits', function (User $user) {
return '<i class="fas fa-coins mr-2"></i> ' . $user->credits();
})
->addColumn('last_seen', function (User $user) {
return $user->last_seen ? $user->last_seen->diffForHumans() : '';
})
->rawColumns(['name', 'credits', 'last_seen'])
->make();
}
public function dataTable()
{
$query = PartnerDiscount::query();
return datatables($query)
->addColumn('actions', function (PartnerDiscount $partner) {
return '
<a data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.partners.edit', $partner->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.partners.destroy', $partner->id) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';
})
->addColumn('user', function (PartnerDiscount $partner) {
return ($user=User::where('id', $partner->user_id)->first())?'<a href="'.route('admin.users.show', $partner->user_id).'">'.$user->name.'</a>':__('Unknown user');
})
->editColumn('created_at', function (PartnerDiscount $partner) {
return $partner->created_at ? $partner->created_at->diffForHumans() : '';
})
->editColumn('partner_discount', function (PartnerDiscount $partner) {
return $partner->partner_discount ? $partner->partner_discount . "%" : "0%";
})
->editColumn('registered_user_discount', function (PartnerDiscount $partner) {
return $partner->registered_user_discount ? $partner->registered_user_discount . "%" : "0%";
})
->rawColumns(['user', 'actions'])
->make();
}
}

View file

@ -0,0 +1,40 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class PartnerDiscount extends Model
{
use HasFactory;
protected $fillable = [
'user_id',
'partner_discount',
'registered_user_discount',
'referral_system_commission'
];
public static function getDiscount()
{
if($partnerDiscount = PartnerDiscount::where('user_id', Auth::user()->id)->first()){
return $partnerDiscount->partner_discount;
}
else if($ref_user = DB::table("user_referrals")->where('registered_user_id', '=', Auth::user()->id)->first()){
if($partnerDiscount = PartnerDiscount::where('user_id', $ref_user->referral_id)->first()){
return $partnerDiscount->registered_user_discount;
}
return $discountPercent = 0;
}
}
public static function getCommission($user_id)
{
if($partnerDiscount = PartnerDiscount::where('user_id', $user_id)->first()){
if($partnerDiscount->referral_system_commission>=0) return $partnerDiscount->referral_system_commission>=0;
}
return config("SETTINGS::REFERRAL:PERCENTAGE");
}
}

View file

@ -63,6 +63,11 @@ class ShopProduct extends Model
return $tax < 0 ? 0 : $tax;
}
public function getPriceAfterDiscount()
{
return number_format($this->price - ($this->price * PartnerDiscount::getDiscount() / 100), 2);
}
/**
* @description Returns the tax as Number
*
@ -70,7 +75,7 @@ class ShopProduct extends Model
*/
public function getTaxValue()
{
return number_format($this->price * $this->getTaxPercent() / 100, 2);
return number_format($this->getPriceAfterDiscount() * $this->getTaxPercent() / 100, 2);
}
/**
@ -80,6 +85,6 @@ class ShopProduct extends Model
*/
public function getTotalPrice()
{
return number_format($this->price + $this->getTaxValue(), 2);
return number_format($this->getPriceAfterDiscount() + $this->getTaxValue(), 2);
}
}
}

View file

@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePartnerDiscountsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('partner_discounts', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id');
$table->integer('partner_discount');
$table->integer('registered_user_discount');
$table->integer('referral_system_commission');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('partner_discounts');
}
}

View file

@ -0,0 +1,139 @@
@extends('layouts.main')
@section('content')
<!-- CONTENT HEADER -->
<section class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>{{__('Vouchers')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.partners.index')}}">{{__('Vouchers')}}</a>
</li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.partners.create')}}">{{__('Create')}}</a>
</li>
</ol>
</div>
</div>
</div>
</section>
<!-- END CONTENT HEADER -->
<!-- MAIN CONTENT -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title">
<i class="fas fa-handshake mr-2"></i>{{__('Partner details')}}
</h5>
</div>
<div class="card-body">
<form action="{{route('admin.partners.store')}}" method="POST">
@csrf
<div class="form-group">
<label for="user_id">{{__('User')}}</label>
<select id="user_id" style="width:100%"
class="custom-select @error('user') is-invalid @enderror" name="user_id" autocomplete="off">
@foreach($users as $user)
<option @if($partners->contains('user_id' , $user->id)) disabled @endif
value="{{$user->id}}">{{$user->name}} ({{$user->email}})</option>
@endforeach
</select>
@error('user')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group">
<label for="partner_discount">{{__('Partner discount')}}</label>
<input value="{{old('partner_discount')}}" placeholder="{{__('Discount in percent')}}" id="partner_discount" name="partner_discount"
type="number" step="any" min="0" max="100"
class="form-control @error('partner_discount') is-invalid @enderror">
@error('partner_discount')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group">
<label for="registered_user_discount">{{__('Registered user discount')}}</label>
<div class="input-group">
<input value="{{old('registered_user_discount')}}" placeholder="Discount in percent" id="registered_user_discount" name="registered_user_discount"
type="number" class="form-control @error('registered_user_discount') is-invalid @enderror"
required="required">
</div>
@error('registered_user_discount')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group">
<label for="referral_system_commission">{{__('Referral system commission')}}
<i data-toggle="popover" data-trigger="hover"
data-content="{{__('Override value for referral system commission. You can set it to -1 to get the default commission from settings.')}}"
class="fas fa-info-circle"></i>
</label>
<input value="{{old('referral_system_commission')}}" placeholder="{{__('Commission in percent')}}" id="referral_system_commission" name="referral_system_commission"
type="number" step="any" min="-1" max="100"
class="form-control @error('referral_system_commission') is-invalid @enderror">
@error('referral_system_commission')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
{{__('Submit')}}
</button>
</div>
</form>
</div>
</div>
</div>
</div>
<i class="fas"></i>
</div>
</section>
<!-- END CONTENT -->
<script>
document.addEventListener('DOMContentLoaded', (event) => {
$('#expires_at').datetimepicker({
format: 'DD-MM-yyyy HH:mm:ss',
icons: {
time: 'far fa-clock',
date: 'far fa-calendar',
up: 'fas fa-arrow-up',
down: 'fas fa-arrow-down',
previous: 'fas fa-chevron-left',
next: 'fas fa-chevron-right',
today: 'fas fa-calendar-check',
clear: 'far fa-trash-alt',
close: 'far fa-times-circle'
}
});
})
</script>
@endsection

View file

@ -0,0 +1,158 @@
@extends('layouts.main')
@section('content')
<!-- CONTENT HEADER -->
<section class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>{{__('Partners')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.partners.index')}}">{{__('Partners')}}</a>
</li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.partners.edit' , $partner->id)}}">{{__('Edit')}}</a>
</li>
</ol>
</div>
</div>
</div>
</section>
<!-- END CONTENT HEADER -->
<!-- MAIN CONTENT -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title">
<i class="fas fa-handshake mr-2"></i>{{__('Partner details')}}
</h5>
</div>
<div class="card-body">
<form action="{{route('admin.partners.update' , $partner->id)}}" method="POST">
@csrf
@method('PATCH')
<div class="form-group">
<label for="user_id">{{__('User')}}</label>
<select id="user_id" style="width:100%"
class="custom-select @error('user') is-invalid @enderror" name="user_id" autocomplete="off">
@foreach($users as $user)
<option @if($partners->contains('user_id' , $user->id)&&$partner->user_id!=$user->id) disabled @endif
@if($partner->user_id==$user->id) selected @endif
value="{{$user->id}}">{{$user->name}} ({{$user->email}})</option>
@endforeach
</select>
@error('user')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group">
<label for="partner_discount">{{__('Partner discount')}}</label>
<input value="{{$partner->partner_discount}}" placeholder="{{__('Discount in percent')}}" id="partner_discount" name="partner_discount"
type="number" step="any" min="0" max="100"
class="form-control @error('partner_discount') is-invalid @enderror">
@error('partner_discount')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group">
<label for="registered_user_discount">{{__('Registered user discount')}}</label>
<div class="input-group">
<input value="{{$partner->registered_user_discount}}" placeholder="Discount in percent" id="registered_user_discount" name="registered_user_discount"
type="number" class="form-control @error('registered_user_discount') is-invalid @enderror"
required="required">
</div>
@error('registered_user_discount')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group">
<label for="referral_system_commission">{{__('Referral system commission')}}
<i data-toggle="popover" data-trigger="hover"
data-content="{{__('Override value for referral system commission. You can set it to -1 to get the default commission from settings.')}}"
class="fas fa-info-circle"></i>
</label>
<input value="{{$partner->referral_system_commission}}" placeholder="{{__('Commission in percent')}}" id="referral_system_commission" name="referral_system_commission"
type="number" step="any" min="-1" max="100"
class="form-control @error('referral_system_commission') is-invalid @enderror">
@error('referral_system_commission')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
{{__('Submit')}}
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- END CONTENT -->
<script>
document.addEventListener('DOMContentLoaded', (event) => {
$('#expires_at').datetimepicker({
format: 'DD-MM-yyyy HH:mm:ss',
icons: {
time: 'far fa-clock',
date: 'far fa-calendar',
up: 'fas fa-arrow-up',
down: 'fas fa-arrow-down',
previous: 'fas fa-chevron-left',
next: 'fas fa-chevron-right',
today: 'fas fa-calendar-check',
clear: 'far fa-trash-alt',
close: 'far fa-times-circle'
}
});
})
function setMaxUses() {
let element = document.getElementById('uses')
element.value = element.max;
console.log(element.max)
}
function setRandomCode() {
let element = document.getElementById('code')
element.value = getRandomCode(36)
}
function getRandomCode(length) {
let result = '';
let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-';
let charactersLength = characters.length;
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() *
charactersLength));
}
return result;
}
</script>
@endsection

View file

@ -0,0 +1,92 @@
@extends('layouts.main')
@section('content')
<!-- CONTENT HEADER -->
<section class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>{{__('Partners')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.partners.index')}}">{{__('Partners')}}</a></li>
</ol>
</div>
</div>
</div>
</section>
<!-- END CONTENT HEADER -->
<!-- MAIN CONTENT -->
<section class="content">
<div class="container-fluid">
<div class="card">
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-handshake mr-2"></i>{{__('Partners')}}</h5>
<a href="{{route('admin.partners.create')}}" class="btn btn-sm btn-primary"><i
class="fas fa-plus mr-1"></i>{{__('Create new')}}</a>
</div>
</div>
<div class="card-body table-responsive">
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>{{__('User')}}</th>
<th>{{__('Partner discount')}}</th>
<th>{{__('Registered user discount')}}</th>
<th>{{__('Created')}}</th>
<th>{{__('Actions')}}</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
<!-- END CUSTOM CONTENT -->
</section>
<!-- END CONTENT -->
<script>
function submitResult() {
return confirm("{{__('Are you sure you wish to delete?')}}") !== false;
}
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("SETTINGS::LOCALE:DATATABLES")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,
ajax: "{{route('admin.partners.datatable')}}",
columns: [
{data: 'user'},
{data: 'partner_discount'},
{data: 'registered_user_discount'},
{data: 'created_at'},
{data: 'actions', sortable: false}
],
fnDrawCallback: function( oSettings ) {
$('[data-toggle="popover"]').popover();
}
});
});
</script>
@endsection

View file

@ -319,6 +319,14 @@
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.partners.index') }}"
class="nav-link @if (Request::routeIs('admin.partners.*')) active @endif">
<i class="nav-icon fas fa-handshake"></i>
<p>{{ __('Partners') }}</p>
</a>
</li>
{{-- <li class="nav-header">Pterodactyl</li> --}}
{{-- <li class="nav-item"> --}}

View file

@ -107,18 +107,20 @@
<div class="table-responsive">
<table class="table">
@if($discountpercent&&$discountvalue)
<tr>
<th>{{ __('Discount') }} ({{ $discountpercent }}%):</th>
<td>{{$product->formatToCurrency($discountvalue)}}</td>
</tr>
@endif
<tr>
<th style="width:50%">{{ __('Subtotal') }}:</th>
<td>{{ $product->formatToCurrency($product->price) }}</td>
<td>{{ $product->formatToCurrency($discountedprice) }}</td>
</tr>
<tr>
<th>{{ __('Tax') }} ({{ $taxpercent }}%)</th>
<th>{{ __('Tax') }} ({{ $taxpercent }}%):</th>
<td>{{ $product->formatToCurrency($taxvalue) }}</td>
</tr>
<tr>
<th>{{ __('Quantity') }}:</th>
<td>1</td>
</tr>
<tr>
<th>{{ __('Total') }}:</th>
<td>{{ $product->formatToCurrency($total) }}</td>
@ -154,7 +156,6 @@
//loading
paymentMethod: '',
paymentRoute: '',
setPaymentRoute(provider) {
switch (provider) {
case 'paypal':
@ -167,12 +168,9 @@
this.paymentRoute = '{{ route('payment.PaypalPay', $product->id) }}';
}
},
}
}
</script>
@endsection
@endsection

View file

@ -30,6 +30,7 @@ use Illuminate\Support\Facades\Route;
use App\Classes\Settings\Language;
use App\Classes\Settings\Invoices;
use App\Classes\Settings\System;
use App\Http\Controllers\PartnerController;
/*
|--------------------------------------------------------------------------
@ -173,6 +174,11 @@ Route::middleware(['auth', 'checkSuspended'])->group(function () {
Route::get('vouchers/{voucher}/users', [VoucherController::class, 'users'])->name('vouchers.users');
Route::resource('vouchers', VoucherController::class);
#partners
Route::get('partners/datatable', [PartnerController::class, 'datatable'])->name('partners.datatable');
Route::get('partners/{voucher}/users', [PartnerController::class, 'users'])->name('partners.users');
Route::resource('partners', PartnerController::class);
#api-keys
Route::get('api/datatable', [ApplicationApiController::class, 'datatable'])->name('api.datatable');
Route::resource('api', ApplicationApiController::class)->parameters([
@ -198,4 +204,4 @@ Route::middleware(['auth', 'checkSuspended'])->group(function () {
});
Route::get('/home', [HomeController::class, 'index'])->name('home');
});
});