160 lines
No EOL
8.8 KiB
PHP
160 lines
No EOL
8.8 KiB
PHP
@extends('layouts.layout-2')
|
|
|
|
@section('content')
|
|
<div class="card">
|
|
<h5 class="card-header">
|
|
{{__('Business')}} {{__('Übersicht')}}
|
|
<span class="badge badge-default ml-2">v2</span>
|
|
</h5>
|
|
|
|
<div class="card-body p-0">
|
|
{!! Form::open(['action' => route('admin_business_optimized'), 'class' => 'form-horizontal', 'id'=>'form_filter_business_user']) !!}
|
|
|
|
<div class="form-row align-items-center px-4 pb-2 pt-3">
|
|
<div class="col-6 col-sm-6 col-md-3 col-lg-3 mb-1">
|
|
<select class="custom-select on_change_invoice" name="business_user_filter_month">
|
|
@foreach($filter_months as $key=>$value)
|
|
<option value="{{$key}}" @if(session('business_user_filter_month') == $key) selected @endif>{{$value}}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
<div class="col-6 col-sm-6 col-md-3 col-lg-3 mb-1">
|
|
<select class="custom-select on_change_invoice" name="business_user_filter_year">
|
|
@foreach($filter_years as $key=>$value)
|
|
<option value="{{$value}}" @if(session('business_user_filter_year') == $value) selected @endif>{{$value}}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
<div class="col-6 col-sm-6 col-md-3 col-lg-3 mb-1">
|
|
<select class="custom-select on_change_invoice" name="business_user_filter_active">
|
|
@foreach($filter_active as $key=>$value)
|
|
<option value="{{$key}}" @if(session('business_user_filter_active') == $key) selected @endif>{{$value}}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
<div class="col-6 col-sm-6 col-md-3 col-lg-3 mb-1">
|
|
<select class="custom-select on_change_invoice" name="business_user_filter_level">
|
|
@foreach($filter_levels as $key=>$value)
|
|
<option value="{{$key}}" @if(session('business_user_filter_level') == $key) selected @endif>{{$value}}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Zweite Filterzeile für erweiterte Filter -->
|
|
<div class="form-row align-items-center px-4 pb-3">
|
|
<div class="col-6 col-sm-6 col-md-3 col-lg-3 mb-1">
|
|
<select class="custom-select on_change_invoice" name="business_user_filter_next_level">
|
|
@foreach($filter_next_level as $key=>$value)
|
|
<option value="{{$key}}" @if(session('business_user_filter_next_level') == $key) selected @endif>{{$value}}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
<div class="col-6 col-sm-6 col-md-3 col-lg-3 mb-1">
|
|
<!-- Platz für weitere Filter falls nötig -->
|
|
</div>
|
|
<div class="col-6 col-sm-6 col-md-3 col-lg-3 mb-1">
|
|
<!-- Platz für weitere Filter falls nötig -->
|
|
</div>
|
|
<div class="col-6 col-sm-6 col-md-3 col-lg-3 mb-1">
|
|
<!-- Platz für weitere Filter falls nötig -->
|
|
</div>
|
|
</div>
|
|
{!! Form::close() !!}
|
|
|
|
<!-- Performance Info Banner -->
|
|
@if(config('app.debug'))
|
|
<div class="alert alert-info mx-4 mb-3">
|
|
<div class="d-flex align-items-center">
|
|
<i class="fa fa-rocket mr-2"></i>
|
|
<div>
|
|
<strong>Optimierte Version aktiv:</strong>
|
|
Diese Version nutzt optimierte Datenbankabfragen und Memory-effiziente Verarbeitung für bessere Performance bei großen Datenmengen.
|
|
<br>
|
|
<small><strong>Hinweis:</strong> Der "Nächster Level" Filter funktioniert optimal mit gespeicherten Monatsdaten. Bei Live-Berechnungen wird er aus Performance-Gründen ignoriert.</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
<div class="card-datatable table-responsive pt-0">
|
|
<table class="datatables-style table table-striped table-bordered" id="datatable-users">
|
|
<thead>
|
|
<tr>
|
|
<th>{{__('ID') }}</th>
|
|
<th>{{__('Berater-ID') }}</th>
|
|
<th>{{ __('Level') }}</th>
|
|
<th>{{ __('KD') }}</th>
|
|
<th>{{__('Gesamte Points')}}</th>
|
|
<th>{{__('Umsatz netto')}}</th>
|
|
<th>{{__('E-Mail')}}</th>
|
|
<th>{{__('First name')}}</th>
|
|
<th>{{__('Last name')}}</th>
|
|
<th>{{__('Nächster Level')}}</th>
|
|
<th>{{__('Sponsor')}}</th>
|
|
<th>{{__('tables.account')}}</th>
|
|
<th>{{__('bis')}}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
$( document ).ready(function() {
|
|
var oTable = $('#datatable-users').DataTable({
|
|
"processing": true,
|
|
"serverSide": true,
|
|
"stateSave": false,
|
|
"searching": true,
|
|
ajax: {
|
|
url: '{!! route('admin_business_optimized_user_datatable') !!}?v={{ time() }}',
|
|
data: function(d) {
|
|
d.business_user_filter_name = $('input[name=business_user_filter_name]').val();
|
|
d.business_user_filter_month = $('select[name=business_user_filter_month]').val();
|
|
d.business_user_filter_year = $('select[name=business_user_filter_year]').val();
|
|
d.business_user_filter_active = $('select[name=business_user_filter_active]').val();
|
|
d.business_user_filter_level = $('select[name=business_user_filter_level]').val();
|
|
d.business_user_filter_next_level = $('select[name=business_user_filter_next_level]').val();
|
|
},
|
|
error: function(xhr, error, code) {
|
|
console.error('DataTable Error:', error, code);
|
|
if(xhr.responseJSON && xhr.responseJSON.error) {
|
|
alert('Fehler beim Laden der Daten: ' + xhr.responseJSON.error);
|
|
}
|
|
}
|
|
},
|
|
"order": [[1, "asc" ]],
|
|
"columns": [
|
|
{ data: 'id', name: 'id', searchable: false, orderable: true },
|
|
{ data: 'm_account', name: 'm_account', orderable: true, searchable: true },
|
|
{ data: 'user_level', name: 'user_level', orderable: false, searchable: false },
|
|
{ data: 'is_qual_kp', name: 'is_qual_kp', orderable: false, searchable: false },
|
|
{ data: 'sales_volume_KP_points', name: 'sales_volume_KP_points', orderable: false, searchable: false },
|
|
{ data: 'sales_volume_total', name: 'sales_volume_total', orderable: false, searchable: false },
|
|
{ data: 'email', name: 'email', orderable: true, searchable: true},
|
|
{ data: 'first_name', name: 'first_name', orderable: true, searchable: true },
|
|
{ data: 'last_name', name: 'last_name', orderable: true, searchable: true },
|
|
{ data: 'next_level_qualified', name: 'next_level_qualified', orderable: false, searchable: false },
|
|
{ data: 'sponsor', name: 'sponsor', orderable: false, searchable: false },
|
|
{ data: 'active_account', name: 'active_account', orderable: false, searchable: false },
|
|
{ data: 'payment_account_date', name: 'payment_account_date', orderable: false, searchable: false },
|
|
|
|
],
|
|
"bLengthChange": false,
|
|
"iDisplayLength": 100,
|
|
"language": {
|
|
"url": "/js/datatables-{{ \App::getLocale() }}.json"
|
|
}
|
|
});
|
|
$('select.on_change_invoice').on('change', function(){
|
|
oTable.draw();
|
|
});
|
|
|
|
$('input.on_keyup_invoice').on('keyup', function(){
|
|
oTable.draw();
|
|
});
|
|
});
|
|
</script>
|
|
@endsection |