API aktiviert / Anpassungen + User Übersicht Gutschriften Umsätze

This commit is contained in:
Kevin Adametz 2021-05-18 19:02:18 +02:00
parent c02fffd883
commit a4c76d06fa
27 changed files with 500 additions and 110 deletions

1
.env
View file

@ -3,6 +3,7 @@ APP_ENV=local
APP_KEY=base64:w0K6RjfleoAOpuICea14JnaZ28PNc6EMzIFMQZ3MVtU=
APP_DEBUG=true
APP_URL=https://partner.gruene-seele.test
APP_DOMAIN=partner.gruene-seele.test
APP_CHECKOUT_MAIL=kevin.adametz@me.com
APP_CHECKOUT_TEST_MAIL=kevin.adametz@me.com

View file

@ -45,6 +45,14 @@ class AuthController extends Controller
$token->expires_at = Carbon::now()->addDays(1);
}
\DB::table('oauth_access_tokens')
->whereDate('expires_at', '<', now()->addWeeks(1))
->delete();
\DB::table('oauth_refresh_tokens')
->whereDate('expires_at', '<', now()->addWeeks(1))
->delete();
$token->save();
return response()->json([
'access_token' => $tokenResult->accessToken,

View file

@ -23,10 +23,11 @@ class ShoppingUserController extends Controller
//protected static API_MAIL = 'api.thomas.krummel@gmail.com';
//protected static API_PASS = 'UF(Q<9knap!ev3vH?5~!b8DP';
//URL api.gruene-seele.bio
protected $successStatus = 200;
protected $member_id = 3; //thomas.krummel@gmail.com
protected $member_id = 2; //thomas.krummel@gmail.com
/**
@ -275,7 +276,7 @@ class ShoppingUserController extends Controller
'user' => $user,
'customer_priority' => $priority,
'customer_number' => $shopping_user->number,
'member_email' => $shopping_user->member->email
'member_email' => ($shopping_user && $shopping_user->member) ? $shopping_user->member->email : false,
],
'time' => Carbon::now()->toDateTimeString()
], 200);
@ -385,7 +386,7 @@ class ShoppingUserController extends Controller
'user' => $user,
'order' => $order,
'customer_number' => $shopping_user->number,
'member_email' => $shopping_user->member->email,
'member_email' => ($shopping_user && $shopping_user->member) ? $shopping_user->member->email : false,
'status' => $shopping_user->getAPIShippedType(),
],
'time' => Carbon::now()->toDateTimeString()
@ -566,7 +567,7 @@ class ShoppingUserController extends Controller
$ret['wp_order_date'] = Carbon::parse($ret['wp_order_date'])->toDateTimeString();
}
if ($need === 'same_as_billing') {
$ret['same_as_billing'] = isset($data['same_as_billing']) ? $data['same_as_billing'] : true;
$ret['same_as_billing'] = isset($data['same_as_billing']) ? (int) $data['same_as_billing'] : 1;
}
}
$ret['has_buyed'] = true;
@ -620,7 +621,7 @@ class ShoppingUserController extends Controller
'shopping_user_id' => $shopping_user->id,
'auth_user_id' => $shopping_user->auth_user_id,
'country_id' => Yard::instance('shopping')->getShippingCountryId(),
'user_shop_id' => auth()->user()->user_sponsor->shop->id,
// 'user_shop_id' => auth()->user()->user_sponsor->shop->id,
'member_id' => $shopping_user->member_id,
'total' => Yard::instance('shopping')->total(2, '.', ''),
'subtotal' => Yard::instance('shopping')->subtotal(2, '.', ''),
@ -687,7 +688,7 @@ class ShoppingUserController extends Controller
public function orderStatusSendMail(ShoppingOrder $shopping_order){
$bcc = [];
$user_mail = $shopping_order->shopping_user->member->email;
$user_mail = ($shopping_order->shopping_user && $shopping_order->shopping_user->member) ? $shopping_order->shopping_user->member->email : false;
if($shopping_order->mode === 'dev'){
$bcc[] = config('app.checkout_test_mail');
}else{

View file

@ -6,6 +6,7 @@ use Storage;
use Response;
use App\Services\Credit;
use App\Services\Invoice;
use Auth;
class FileController extends Controller
{
@ -18,24 +19,32 @@ class FileController extends Controller
{
}
private function isPermission($user_id){
if(Auth::user()->isAdmin() || $user_id == Auth::user()->id){
return true;
}
abort(404);
}
public function show($id = null, $disk = null, $do='file')
{
$path = "";
$filename = "";
if($disk === 'user'){
$file = \App\Models\File::findOrFail($id);
$this->isPermission($file->user_id);
$path = Storage::disk($disk)->path($file->dir.$file->filename);
if (file_exists($path)) {
return Response::file($path);
}
}
if ($disk === 'invoice'){
$shopping_order = \App\Models\ShoppingOrder::findOrFail($id);
$this->isPermission($shopping_order->auth_user_id);
$filename = Invoice::getFilename($shopping_order);
$path = Invoice::getDownloadPath($shopping_order);
if (!Storage::disk('public')->exists($path)) {
@ -64,8 +73,11 @@ class FileController extends Controller
if ($disk === 'credit'){
$UserCredit = \App\Models\UserCredit::findOrFail($id);
$this->isPermission($UserCredit->auth_user_id);
$filename = Credit::getFilename($UserCredit);
$path = Credit::getDownloadPath($UserCredit);
if (!Storage::disk('public')->exists($path)) {
return Response::make('File no found.', 404);
}

View file

@ -192,7 +192,7 @@ class PaymentCreditController extends Controller
->addColumn('total', function (UserCredit $UserCredit) {
return $UserCredit->getFormattedTotal();
return $UserCredit->getFormattedTotal()."";
})
->addColumn('user_margins', function (UserCredit $UserCredit) {
$ret = "";

View file

@ -2,19 +2,29 @@
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use App\User;
use Request;
use Carbon;
use App\Models\ShoppingOrder;
use Request;
use App\User;
use App\Services\Credit;
use App\Models\UserCredit;
use App\Http\Controllers\Controller;
use App\Models\UserPayCredit;
class PaymentController extends Controller
{
private $startYear;
private $endYear;
private $rangeYears;
private $activeYear;
public function __construct()
{
$this->middleware('auth');
$this->startYear = 2021;
$this->endYear = date('Y');
$this->rangeYears = range($this->startYear, $this->endYear);
$this->activeYear = $this->endYear;
}
public function paycredit()
@ -25,38 +35,120 @@ class PaymentController extends Controller
return view('user.payment.paycredit', $data);
}
/*public function index()
{
$start = 2021;
$end = date('Y');
$years = range($start, $end);
public function paycredit_datatable(){
if(Request::get('filter_sales_year')){
$active_year = Request::get('filter_sales_year');
$user = \Auth::user();
$query = UserPayCredit::select('user_pay_credits.*')->where('user_id', $user->id);
return \DataTables::eloquent($query)
->addColumn('message', function (UserPayCredit $user_pay_credit) {
if($user_pay_credit->status === 3){
return nl2br($user_pay_credit->message);
}else{
$active_year = $end;
return trans('payment.'.$user_pay_credit->message).
' &nbsp; <a class="btn btn-outline-secondary btn-xs" href="'.route('user_order_detail', [$user_pay_credit->shopping_order_id]).'"><i class="ion ion-md-eye"></i></a>';
}
$date1 = Carbon::parse('01.01.'.$active_year." 00:00:00")->format('Y-m-d H:i:s');
$date2 = Carbon::parse('31.12.'.$active_year." 23:59:59")->toDateString();
$values = ShoppingOrder::where('shopping_orders.auth_user_id', '!=', NULL) //::with('shopping_user', )->select('shopping_orders.*')
->where('mode', '=', 'live')
->where('paid', '=', 1)
->whereHas('shopping_order_items', function($q) {
$q->where('product_id', 34)->OrWhere('product_id', 35)->OrWhere('product_id', 36)->OrWhere('product_id', 67)->OrWhere('product_id', 69);
})
->whereBetween('created_at', [$date1, $date2])
->get();
->addColumn('credit', function (UserPayCredit $user_pay_credit) {
return formatNumber($user_pay_credit->credit)."";
})
->addColumn('old_credit_total', function (UserPayCredit $user_pay_credit) {
return formatNumber($user_pay_credit->old_credit_total)."";
})
->addColumn('new_credit_total', function (UserPayCredit $user_pay_credit) {
return formatNumber($user_pay_credit->new_credit_total)."";
})
->addColumn('created_at', function (UserPayCredit $user_pay_credit) {
return formatDate($user_pay_credit->created_at);
})
->orderColumn('message', 'message $1')
->orderColumn('txaction', 'txaction $1')
->orderColumn('credit', 'credit $1')
->orderColumn('created_at', 'created_at $1')
->rawColumns(['message'])
->make(true);
}
public function credit()
{
$user = \Auth::user();
$data = [
'years' => $years,
'active_year' => $active_year,
'values' => $values,
'user' => $user,
];
return view('user.revenue.index', $data);
return view('user.payment.credit', $data);
}
public function credit_datatable(){
$user = \Auth::user();
$query = UserCredit::with('user', 'user.account')->select('user_credits.*')->where('auth_user_id', $user->id);
return \DataTables::eloquent($query)
->addColumn('total', function (UserCredit $UserCredit) {
return $UserCredit->getFormattedTotal()."";
})
->addColumn('user_margins', function (UserCredit $UserCredit) {
$ret = "";
if($UserCredit->user_margins){
foreach($UserCredit->user_margins as $user_margin){
$ret .= $user_margin->firstname."/".$user_margin->lastname."/".$user_margin->reference."/".$user_margin->created_at."<br>";
}
}
if($UserCredit->user_credits){
foreach($UserCredit->user_credits as $user_credit){
$ret .= nl2br($user_credit->message)." / ".$user_credit->created_at."<br>";
}
}
return $ret;
})
/* ->addColumn('txaction', function (ShoppingOrder $ShoppingOrder) {
return Payment::getShoppingOrderBadge($ShoppingOrder);
})*/
->addColumn('credit', function (UserCredit $UserCredit) {
$ret = "";
if(Credit::isCredit($UserCredit)){
$ret .= '<a href="'.route('storage_file', [$UserCredit->id, 'credit', 'download']).'" class="btn btn-primary btn-xs"><i class="fa fa-download"></i></a> ';
$ret .= '<a href="'.route('storage_file', [$UserCredit->id, 'credit', 'stream']).'" target="_blank" class="btn btn-warning btn-xs"><i class="fa fa-eye"></i></a>';
}else{
$ret = "-";
}
return $ret;
})
->addColumn('status', function (UserCredit $UserCredit) {
return '<span class="badge badge-pill badge-'.$UserCredit->getStatusColor().'">'.$UserCredit->getStatusType().' <span class="ion ion-md-cash"></span></span>';
})
->orderColumn('id', 'id $1')
->orderColumn('status', 'status $1')
->orderColumn('total', 'total $1')
->rawColumns(['shipping_order', 'total', 'credit', 'status', 'user_margins'])
->make(true);
}
private function setActiveYears(){
if(Request::get('filter_year')){
$this->activeYear = Request::get('filter_year');
}
}
public function revenue()
{
$this->setActiveYears();
$user = \Auth::user();
$data = [
'user' => $user,
'years' => $this->rangeYears,
'active_year' => $this->activeYear,
'months' => range(1, 12),
];
return view('user.payment.revenue', $data);
}
*/
}

View file

@ -4,6 +4,8 @@ namespace App\Providers;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Laravel\Passport\Passport;
class AuthServiceProvider extends ServiceProvider
{
@ -24,6 +26,7 @@ class AuthServiceProvider extends ServiceProvider
public function boot()
{
$this->registerPolicies();
Passport::routes();
//
}

View file

@ -72,9 +72,14 @@ class RouteServiceProvider extends ServiceProvider
*/
protected function mapApiRoutes()
{
Route::prefix('api')
Route::domain('api.'.config('app.domain'))
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
/* Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));*/
}
}

View file

@ -22,7 +22,7 @@ class CustomerPriority
//only extern no members with no numbers
$shopping_users = ShoppingUser::where('auth_user_id', '=', NULL)->where('number', '=', NULL)->orderBy('created_at', 'ASC')->get();
foreach ($shopping_users as $shopping_user){
if($shopping_user->shopping_order && $shopping_user->shopping_order->user_shop){
if($shopping_user->shopping_order){
self::checkOne($shopping_user);
}
}
@ -217,8 +217,8 @@ class CustomerPriority
}
private static function newCustomer($shopping_user){
if($shopping_user->shopping_order && $shopping_user->shopping_order->user_shop) {
$member_id = $shopping_user->shopping_order->user_shop->user_id;
if($shopping_user->shopping_order && $shopping_user->shopping_order->member_id) {
$member_id = $shopping_user->shopping_order->member_id;
$shopping_user->member_id = $member_id;
$shopping_user->number = self::nextNumber();
$shopping_user->save();

View file

@ -86,11 +86,16 @@ class UserMarign
public static function getMontlyPartnerCommissionOpen(User $user, $date = null, $format = false){
//$now = $date ? Carbon::parse($date) : Carbon::now();
if(!$date){
$start = Carbon::parse('01.01.2021');
$end = Carbon::now();
$startDay = $start->startOfMonth()->toDateString();
$endDay = $end->endOfMonth()->toDateString();
}else{
$now = $date ? Carbon::parse($date) : Carbon::now();
$startDay = $now->startOfMonth()->toDateString();
$endDay = $now->endOfMonth()->toDateString();
}
$sum_net_amount = ShoppingOrderMargin::whereMSponsorId($user->id)
->whereBetween('from', [$startDay, $endDay])
@ -129,11 +134,16 @@ class UserMarign
public static function getMontlyPartnerCommissionPending(User $user, $date = null, $format = false){
//$now = $date ? Carbon::parse($date) : Carbon::now();
if(!$date){
$start = Carbon::parse('01.01.2021');
$end = Carbon::now();
$startDay = $start->startOfMonth()->toDateString();
$endDay = $end->endOfMonth()->toDateString();
}else{
$now = $date ? Carbon::parse($date) : Carbon::now();
$startDay = $now->startOfMonth()->toDateString();
$endDay = $now->endOfMonth()->toDateString();
}
$sum_net_amount = ShoppingOrderMargin::whereMSponsorId($user->id)
->whereBetween('from', [$startDay, $endDay])

View file

@ -9,6 +9,7 @@ use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Support\Facades\Mail;
use Laravel\Passport\HasApiTokens;
use Util;
/**
@ -98,10 +99,12 @@ use Util;
* @method static \Illuminate\Database\Eloquent\Builder|User wherePaymentAccount($value)
* @property string|null $payment_credit
* @method static \Illuminate\Database\Eloquent\Builder|User wherePaymentCredit($value)
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserPayCredit[] $user_pay_credits
* @property-read int|null $user_pay_credits_count
*/
class User extends Authenticatable
{
use Notifiable;
use Notifiable, HasApiTokens;
/**
* The attributes that are mass assignable.

View file

@ -53,6 +53,7 @@ return [
*/
'url' => env('APP_URL', 'https://partner.gruene-seele.bio'),
'domain' => env('APP_DOMAIN', 'partner.gruene-seele.bio'),
'checkout_mail' => env('APP_CHECKOUT_MAIL', 'kevin.adametz@me.com'),
'checkout_test_mail' => env('APP_CHECKOUT_TEST_MAIL', 'kevin.adametz@me.com'),

View file

@ -42,9 +42,8 @@ return [
],
'api' => [
'driver' => 'token',
'driver' => 'passport',
'provider' => 'users',
'hash' => false,
],
],

View file

@ -92,13 +92,7 @@
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">Über Shop</div>
@if($shopping_user->shopping_order)
@if($shopping_user->shopping_order->user_shop->user->isActive() && $shopping_user->shopping_order->user_shop->user->isActiveShop())
<a href="{{$shopping_user->shopping_order->user_shop->getSubdomain(false)}}" class="badge badge-success" target="_blank">{{$shopping_user->shopping_order->user_shop->getSubdomain(false)}}</a>
@else
<span class="badge badge-danger" target="_blank">{{$shopping_user->shopping_order->user_shop->getSubdomain(false)}}</span>
@endif
@endif
#
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">ist Vertriebspartner</div>

View file

@ -25,8 +25,6 @@
<input type="hidden" name="action" value="{{$data['action']}}">
<input type="hidden" name="id" value="{{$data['id']}}">
<div class="form-row">
<div class="form-group col-12">
<label for="status" class="form-label">{{ __('Status') }}*</label>
@ -36,6 +34,12 @@
<table class="table user-view-table m-0">
<tbody>
<tr>
<td>Betrag:</td>
<td>
{{ $value->getFormattedTotal()."" }}
</td>
</tr>
<tr>
<td>Zahlungsart:</td>
<td>

View file

@ -215,8 +215,6 @@
</div>
</div>
<div class="modal fade" id="modals-credit">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('admin_payments_credit_create') }}" method="post">

View file

@ -15,7 +15,6 @@
@endforeach
</select>
{!! Form::close() !!}
</div>
<div class="card-datatable table-responsive pt-0">

View file

@ -88,9 +88,6 @@
oTable.draw();
});
});
/*$('#filter_user_status').on('change', function(){
$('#form_filter_user_status').submit();
});*/

View file

@ -22,11 +22,14 @@
<li class="sidenav-item Request::is('user/payment/paycredit') ? ' active' : '' }} {{ Request::is('user/payment/paycredit') ? ' active' : '' }}">
<a href="{{ route('user_payment_paycredit') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-cash"></i><div>{{ __('navigation.paycredit') }}</div></a>
</li>
{{--
<li class="sidenav-item Request::is('user/payment/credit') ? ' active' : '' }} {{ Request::is('user/payment/credit') ? ' active' : '' }}">
<a href="{{ route('user_payment_credit') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-cash"></i><div>{{ __('navigation.commissions') }}</div></a>
<a href="{{ route('user_payment_credit') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-cash"></i><div>{{ __('navigation.credit') }}</div></a>
</li>
--}}
<li class="sidenav-item Request::is('user/payment/revenue') ? ' active' : '' }} {{ Request::is('user/payment/revenue') ? ' active' : '' }}">
<a href="{{ route('user_payment_revenue') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-trending-up"></i><div>{{ __('navigation.revenue') }}</div></a>
</li>
<li class="sidenav-item{{ Request::is('user/edit') ? ' active' : '' }}">
<a href="{{ route('user_edit') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-create"></i><div>{{ __('navigation.my_data') }}</div></a>
</li>

View file

@ -304,7 +304,7 @@
<table>
<tr>
<td>
{{ __('Datum') }}/{{ __('Leistungsdatum)') }}: {{ $credit_date }}
{{ __('Datum') }}/{{ __('Leistungsdatum') }}: {{ $credit_date }}
</td>
</tr>
@if($user->account->tax_number)

View file

@ -0,0 +1,58 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-2 mb-2">
{{ __('navigation.my_account') }} / {{ __('navigation.credit') }}
</h4>
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-style table table-striped table-bordered" id="datatable-user-credit">
<thead>
<tr>
<th>{{__('G.Nr.')}}</th>
<th>{{__('Gutschrift')}}</th>
<th>{{__('Betrag') }}</th>
<th>{{__('Datum') }}</th>
<th>{{__('Zahlung')}}</th>
<th>{{__('aus Bestellung / Gutschrift')}}</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<script>
$( document ).ready(function() {
var oTable = $('#datatable-user-credit').DataTable({
"processing": true,
"serverSide": true,
ajax: {
url: '{!! route( 'user_payment_credit_datatable') !!}',
data: function(d) {
//d.filter_sales_year = $('select[name=filter_sales_year]').val();
}
},
"order": [[0, "desc" ]],
"columns": [
{ data: 'credit_number', name: 'credit_number' },
{ data: 'credit', name: 'credit', orderable: false, searchable: false },
{ data: 'total', name: 'total' },
{ data: 'date', name: 'date' },
{ data: 'status', name: 'status', searchable: false },
{ data: 'user_margins', name: 'user_margins', orderable: false },
],
"bLengthChange": false,
"iDisplayLength": 100,
"language": {
"url": "/js/German.json"
}
});
/*$('#filter_sales_year').on('change', function(){
oTable.draw();
});
*/
});
</script>
@endsection

View file

@ -7,7 +7,7 @@
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-style table table-striped table-bordered">
<table class="datatables-style table table-striped table-bordered" id="datatable-user-pay-credit">
<thead>
<tr>
<th style="width: 55%">Mitteilung</th>
@ -18,30 +18,39 @@
</tr>
</thead>
<tbody>
@if($user && $user->user_pay_credits)
@foreach($user->user_pay_credits as $user_pay_credit)
<tr>
@if($user_pay_credit->status === 3)
<th scope="row"> {!! nl2br($user_pay_credit->message) !!}</th>
@else
<th scope="row">{{ trans('payment.'.$user_pay_credit->message) }}
@if($user_pay_credit->shopping_order_id)
<a class="btn btn-outline-secondary btn-xs" href="{{ route('admin_sales_users_detail', [$user_pay_credit->shopping_order_id]) }}"><i class="ion ion-md-eye"></i></a>
@endif
</th>
@endif
<td><div class="no-line-break">{{ formatNumber($user_pay_credit->credit) }} </div></td>
<td><div class="no-line-break">{{ formatNumber($user_pay_credit->old_credit_total) }} </div></td>
<td><div class="no-line-break">{{ formatNumber($user_pay_credit->new_credit_total) }} </div></td>
<td><div class="no-line-break">{{ formatDate($user_pay_credit->created_at) }}</div></td>
</tr>
@endforeach
@endif
</tbody>
</table>
</div>
</div>
<script>
$( document ).ready(function() {
var oTable = $('#datatable-user-pay-credit').DataTable({
"processing": true,
"serverSide": true,
ajax: {
url: '{!! route( 'user_payment_paycredit_datatable') !!}',
/*data: function(d) {
d.filter_user_status = $('select[name=filter_user_status]').val();
}*/
},
"order": [[4, "desc" ]],
"columns": [
{ data: 'message', name: 'message' },
{ data: 'credit', name: 'credit' },
{ data: 'old_credit_total', name: 'old_credit_total', orderable: false, searchable: false },
{ data: 'new_credit_total', name: 'new_credit_total', orderable: false, searchable: false },
{ data: 'created_at', name: 'created_at' },
],
"bLengthChange": false,
"iDisplayLength": 100,
"language": {
"url": "/js/German.json"
}
});
/*$('#filter_user_status').on('change', function(){
oTable.draw();
});*/
});
</script>
@endsection

View file

@ -0,0 +1,83 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-2 mb-2">
{{ __('navigation.my_account') }} / {{ __('navigation.revenue') }}
</h4>
<div class="row">
<div class="col-sm-6 mb-0 mt-2 mb-2">
{!! Form::open(['url' => route('user_payment_revenue'), 'class' => 'form-horizontal', 'id'=>'form_filter_year']) !!}
<label class="form-label" for="filter_year">Filter Jahr</label>
<select class="custom-select" name="filter_year" id="filter_year">
@foreach($years as $year)
<option value="{{$year}}" @if($active_year == $year) selected @endif>{{$year}}</option>
@endforeach
</select>
{!! Form::close() !!}
</div>
</div>
@foreach ($months as $month)
@php($date = $active_year."-".$month."-01")
<div class="card mb-4">
<h6 class="card-header py-1 px-3">
<div class="card-header-title"> {{ App\Services\HTMLHelper::getMonth($month) }} {{ $active_year }}</div>
</h6>
<div class="card-body">
<table class="table table-striped table-bordered">
<tr>
<td class="text-left font-weight-semibold">{{__('Umsatz gesamt')}}:</td>
<td class="text-right font-weight-bold">
{!! \App\Services\UserMarign::getMontlyPrice($user, $date, true) !!} &euro;*
</td>
</tr>
<tr>
<td class="text-left font-weight-semibold">{{__('Umsatz Staffelrabatt')}}:</td>
<td class="text-right font-weight-bold">
{!! \App\Services\UserMarign::getMontlyAmount($user, $date, true) !!} &euro;*
</td>
</tr>
{{-- <tr>
<td class="text-left font-weight-semibold">{{__('Umsatz Zahlung offen')}}:</td>
<td class="text-right font-weight-bold">
{!! \App\Services\UserMarign::getMontlyPriceOpen($user, $date, true) !!} &euro;*
</td>
</tr>
--}}
</table>
{{--
<h6>{{__('Provision')}}</h6>
<table class="table table-striped table-bordered">
<tr>
<td class="text-left font-weight-semibold">{{__('Vertriebspartner Provision')}} pending:</td>
<td class="text-right font-weight-bold">
{!! \App\Services\UserMarign::getMontlyPartnerCommissionPending($user, $date, true) !!} &euro;*
</td>
</tr>
<tr>
<td class="text-left font-weight-semibold">{{__('Vertriebspartner Provision')}} bestätigt:</td>
<td class="text-right font-weight-bold">
{!! \App\Services\UserMarign::getMontlyPartnerCommissionOpen($user, $date, true) !!} &euro;*
</td>
</tr>
</table>
--}}
</div>
</div>
@endforeach
<script>
$( document ).ready(function() {
$('#filter_year').on('change', function(){
$('#form_filter_year').submit();
});
});
</script>
@endsection

View file

@ -1,7 +1,6 @@
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
@ -14,6 +13,47 @@ use Illuminate\Support\Facades\Route;
|
*/
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
//Route::post('login', 'API\UserController@login');
//Route::post('register', 'API\UserController@register');
//Route::post('login', 'Api\APIController@login');
//Route::get('/payment/status', 'Api\PayoneController@paymentStatus')->name('api.payment_status');
//Route::post('/payment/status', 'Api\PayoneController@paymentStatus')->name('api.payment_status');
//Route::post('login', 'Api\AuthController@login');
Route::group([
'prefix' => 'auth'
], function () {
Route::post('login', 'Api\AuthController@login');
//Route::post('signup', 'Api\AuthController@signup');
Route::group([
'middleware' => 'auth:api'
], function() {
Route::post('logout', 'Api\AuthController@logout');
Route::post('checked', 'Api\AuthController@checked');
});
});
Route::group([
'prefix' => 'wp'
], function () {
Route::group([
'middleware' => 'auth:api'
], function() {
Route::post('show', 'Api\ShoppingUserController@show');
Route::post('store', 'Api\ShoppingUserController@store');
Route::post('update', 'Api\ShoppingUserController@update');
Route::post('order', 'Api\ShoppingUserController@order');
Route::post('status', 'Api\ShoppingUserController@status');
Route::post('delete', 'Api\ShoppingUserController@delete');
Route::post('cancel', 'Api\ShoppingUserController@cancel');
Route::post('open', 'Api\ShoppingUserController@open');
});
});

View file

@ -181,10 +181,15 @@ Route::group(['middleware' => ['auth:user']], function() {
Route::get('/user/payment/paycredit', 'User\PaymentController@paycredit')->name('user_payment_paycredit');
//Route::post('/user/payment/paycredit', 'User\PaymentController@index')->name('user_payment_paycredit');
Route::get('/user/payment/paycredit/datatable', 'User\PaymentController@paycredit_datatable')->name('user_payment_paycredit_datatable');
Route::get('/user/payment/credit', 'User\PaymentController@credit')->name('user_payment_credit');
//Route::post('/user/payment/paycredit', 'User\PaymentController@index')->name('user_payment_paycredit');
Route::get('/user/payment/credit/datatable', 'User\PaymentController@credit_datatable')->name('user_payment_credit_datatable');
Route::get('/user/payment/revenue', 'User\PaymentController@revenue')->name('user_payment_revenue');
Route::post('/user/payment/revenue', 'User\PaymentController@revenue')->name('user_payment_revenue');
//Route::get('/user/payment/credit/datatable', 'User\PaymentController@credit_datatable')->name('user_payment_credit_datatable');
Route::get('/user/checkout/{identifier?}', 'User\CheckoutController@checkout')->name('user_checkout');
Route::post('/user/checkout_store/{identifier?}', 'User\CheckoutController@store')->name('user_checkout_store');

51
storage/oauth-private.key Normal file
View file

@ -0,0 +1,51 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

14
storage/oauth-public.key Normal file
View file

@ -0,0 +1,14 @@
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnz56fXNAkVpe47wSxxWT
SOmUynQ4J+uzBfv1CMVcilRFKVxOzLLZBQ8Z6QgyTBS1sp0X9awwJOYeEBzXcQhI
B6NnvWYisiSjMivpHuycpWfsZywOMj0He7NHFmmt8QuxKVb+njXXRUNExkw45VBi
BM0mPHYmSYoIDB7zr+z2zFdCiZwkihb1Qk7LkIfeAAhnqPwFM2QMM4+oLugFS+0r
6DGNx+4o4MzJV+7RVvMWC658tDKTpWeb+Xm8c7JvGedLmh1HGZj9rLbEhQ0s5dBH
VHroFRcpdt2aIrS3gxtQgeAXYkBipXvyDSILaE+bIaXVkIG1YPnQfb//55xrG1Ic
c0+YafPldMlPhn1brzJHQkcNjVHmC4uLIsc9U4o88WRl2z4J3lW8zp81T9jxUDN4
W9jm6AkNpqxheldEcYT+j2NzVgc2H889Ylq6QrMh+ucbL7RiH9s1qeD1WEkM+g2v
rqtId+I4c299NcjE3sRLuLWgqS1vdS3x6S9qGOhEXDQB22ENeeB+JLqXvdVvxWg5
k3F3HFLa+vYf0tRWDpYG3nx7N5hBuJR1mk04ehe6pPDMDCUSTewlOSBRFiBV23GA
z9btwRMn6oF6DzFnkdmjeaS4OKkroDr2YaC9rvPWdna6s4PO+79L2Akb/BXI0+Bh
vIaQVzHSLbW8v0KfSTY5JiMCAwEAAQ==
-----END PUBLIC KEY-----