commit 08-2025

This commit is contained in:
Kevin Adametz 2025-08-12 18:01:59 +02:00
parent 9ae662f63e
commit 480fdc65ed
404 changed files with 65310 additions and 2600431 deletions

View file

@ -30,7 +30,7 @@
@include('admin.customer._customer_detail', ['shopping_user' => $customer_detail])
</div>
{!! Form::open(['url' => route('user_abos_update', [$view, $user_abo->id]), 'class' => 'form-horizontal', 'id'=>'cart-order-form']) !!}
{!! Form::open(['action' => route('user_abos_update', [$view, $user_abo->id]), 'class' => 'form-horizontal', 'id'=>'cart-order-form']) !!}
<input type="hidden" name="is_for" value="{{ $user_abo->is_for }}">
<div class="card mt-3">
@include('admin.abo._order_abo')

View file

@ -5,7 +5,7 @@
<div class="card mb-4">
<div class="card-body">
{!! Form::open(['url' => route('user_shop_store'), 'class' => 'form-horizontal', 'id'=>'']) !!}
{!! Form::open(['action' => route('user_shop_store'), 'class' => 'form-horizontal', 'id'=>'']) !!}
<div class="form-group">
<label class="custom-control custom-checkbox float-right">
{!! Form::checkbox('active', 1, $user->shop->active, ['class'=>'custom-control-input']) !!}

View file

@ -1,7 +1,7 @@
<div class="card-body" style="background: #fff; border: 1px solid rgba(24, 28, 33, 0.06);">
<h4>{{ __('shop.open_your_shop') }}</h4>
{!! Form::open(['url' => route('user_shop_register_form'), 'class' => 'form-horizontal' , 'id'=>'data-shop-form-validations']) !!}
{!! Form::open(['action' => route('user_shop_register_form'), 'class' => 'form-horizontal' , 'id'=>'data-shop-form-validations']) !!}
@php
$shop_name_btn_color = 'btn-secondary';
$shop_name_fa = '';

View file

@ -45,7 +45,7 @@
<div class="mb-3">
<div id="smartwizard-3-step-1" class="card animated fadeIn">
<div class="card-body">
{!! Form::open(['url' => route('user_customer_edit', ['new']), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('user_customer_edit', ['new']), 'class' => 'form-horizontal']) !!}
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('email') ? 'has-error' : '' }}">
<label class="form-label" for="email">{{ __('E-Mail Address') }}*</label>
@ -64,7 +64,7 @@
<hr>
{!! Form::close() !!}
{!! Form::open(['url' => route('user_customer_edit', ['new']), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('user_customer_edit', ['new']), 'class' => 'form-horizontal']) !!}
<div class="form-row">
<div class="form-group col-md-12 mt-2">
<label class="switcher switcher-secondary">
@ -88,7 +88,7 @@
<div id="smartwizard-3-step-2" class="card animated fadeIn">
<div class="card-body">
@if($step == 1)
{!! Form::open(['url' => route('user_customer_edit', ['new']), 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
{!! Form::open(['action' => route('user_customer_edit', ['new']), 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
@include('admin.customer._edit')
<div class="text-left mt-3">
<button type="submit" class="btn btn-secondary" name="action" value="shopping-user-store-new">{{ __('save changes') }}</button>&nbsp;
@ -101,8 +101,8 @@
</div>
</div>
<link rel="stylesheet" href="{{ mix('/vendor/libs/smartwizard/smartwizard.css') }}">
<script src="{{ mix('/vendor/libs/smartwizard/smartwizard.js') }}"></script>
<link rel="stylesheet" href="{{ asset('/vendor/libs/smartwizard/smartwizard.css') }}">
<script src="{{ asset('/vendor/libs/smartwizard/smartwizard.js') }}"></script>
<script type="text/javascript">
$(document).ready(function() {

View file

@ -6,7 +6,7 @@
<a href="{{route('user_customer_detail', [$shopping_user->id])}}" class="btn btn-sm btn-default float-right">{{ __('back') }}</a>
{{ __('customer.customer_details') }} {{ __('customer.edit') }}
</h4>
{!! Form::open(['url' => route('user_customer_edit', [$shopping_user->id]), 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
{!! Form::open(['action' => route('user_customer_edit', [$shopping_user->id]), 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
@include('admin.customer._edit')
<div class="text-left mt-3">
<button type="submit" class="btn btn-secondary" name="action" value="shopping-user-store">{{ __('save changes') }}</button>&nbsp;

View file

@ -8,7 +8,7 @@
<div class="card-body">
<p>{{__('register.confirm_your_identity')}}</p>
{!! Form::open(['url' => route('user_delete_account')]) !!}
{!! Form::open(['action' => route('user_delete_account')]) !!}
<div class="form-group row">
<label class="col-form-label col-sm-2 text-sm-right">{{__('Password')}}*</label>
<div class="col-sm-10">

View file

@ -64,7 +64,7 @@
@if(!$business_license_choose || $business_license_choose == 'later' || $business_license_choose === 'non')
<div class="col-sm-6">
<div class="mt-4">
{!! Form::open([ 'url' => route('user_documents_store', ['business_license']), 'method' => 'post', 'files' => true, 'enctype' => 'multipart/form-data', 'class' => 'dropzone', 'id' => 'businesslDropzone' ]) !!}
{!! Form::open(['action' => route('user_documents_store', ['business_license']), 'method' => 'post', 'files' => true, 'enctype' => 'multipart/form-data', 'class' => 'dropzone', 'id' => 'businesslDropzone' ]) !!}
<input type="hidden" name="redirect" value="{{ route('user_documents') }}">
<div class="fallback">
<input name="file" type="file" multiple>
@ -105,7 +105,7 @@
</div>
@if($business_license_choose !== 'now')
{!! Form::open(['url' => route('user_documents_store', ['business_license'])]) !!}
{!! Form::open(['action' => route('user_documents_store', ['business_license'])]) !!}
<div class="card-body pt-0">
<div class="row">
<div class="col-12">
@ -133,7 +133,7 @@
<span class="custom-control-label">{{__('register.business_license_non')}}</span>
</label>
<p>{{__('register.business_license_non_text')}}</p>
{{ Form::textarea('non_business_license_reason', $user->account->getNotice('business_license_reason'), array('placeholder'=>__('Begründung'), 'class'=>'form-control', 'rows'=>' 2')) }}
{{ Form::textarea('non_business_license_reason', (string) $user->account->getNotice('business_license_reason'), array('placeholder'=>__('Begründung'), 'class'=>'form-control', 'rows'=>' 2')) }}
</div>
<div class="col-12 mt-2">
@ -160,7 +160,7 @@
<div class="row">
{{-- <div class="col-sm-6">
<div class="mt-4">
{!! Form::open([ 'url' => route('wizard_store_register', ['verification']), 'method' => 'post', 'files' => true, 'enctype' => 'multipart/form-data', 'class' => 'dropzone', 'id' => 'idcardDropzone' ]) !!}
{!! Form::open([ 'action' => route('wizard_store_register', ['verification']), 'method' => 'post', 'files' => true, 'enctype' => 'multipart/form-data', 'class' => 'dropzone', 'id' => 'idcardDropzone' ]) !!}
<div class="fallback">
<input name="file" type="file" multiple>
</div>

View file

@ -7,7 +7,7 @@
<div class="card mb-4">
<div class="card-body">
{!! Form::open(['url' => route('user_downloadcenter_search'), 'class' => 'form-horizontal', 'id'=>'dcformfilter']) !!}
{!! Form::open(['action' => route('user_downloadcenter_search'), 'class' => 'form-horizontal', 'id'=>'dcformfilter']) !!}
<div class="form-row pb-1 pt-1">
<div class="col-md-6 col-lg-4 mb-1">
<div class="form-group">

View file

@ -18,7 +18,7 @@
<h4 class="font-weight-bold py-2 mb-2">
{{ __('navigation.my_data') }}
</h4>
{!! Form::open(['url' => route('user_edit'), 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
{!! Form::open(['action' => route('user_edit'), 'method' => 'POST', 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
<input type="hidden" name="user_id" id="user_id" value="@if($user->id>0){{$user->id}}@else new @endif">
@include('user.user_form')
<div class="text-left mt-3">
@ -32,7 +32,7 @@
<!-- Modal template -->
<div class="modal fade" id="modal-user-vat-validation">
<div class="modal-dialog">
{!! Form::open(['url' => route('user_edit'), 'class' => 'modal-content']) !!}
{!! Form::open(['action' => route('user_edit'), 'class' => 'modal-content']) !!}
<input type="hidden" name="user_id" id="user_id" value="@if($user->id>0){{$user->id}}@else new @endif">
<div class="modal-header">
<h5 class="modal-title">{{ __('account.new_vat_validate') }}</span></h5>

View file

@ -35,7 +35,7 @@
<div class="tab-content">
<div class="tab-pane fade @if(!$step || $step == 1 || $step == 10) active show @endif" id="navs-top-homeparty">
{!! Form::open(['url' => route('user_homeparty_detail', [$homeparty->id, 10]), 'class' => 'form-horizontal', 'id'=>'homeparty-party-form-validation']) !!}
{!! Form::open(['action' => route('user_homeparty_detail', [$homeparty->id, 10]), 'class' => 'form-horizontal', 'id'=>'homeparty-party-form-validation']) !!}
<h5 class="card-header">
<div class="row">
@if($homeparty->step < 10)
@ -138,7 +138,7 @@
@if($homeparty->id)
<div class="tab-pane fade @if($step == 2 || $step == 12) active show @endif" id="navs-top-address">
{!! Form::open(['url' => route('user_homeparty_detail', [$homeparty->id, 12]), 'class' => 'form-horizontal', 'id'=>'']) !!}
{!! Form::open(['action' => route('user_homeparty_detail', [$homeparty->id, 12]), 'class' => 'form-horizontal', 'id'=>'']) !!}
<h5 class="card-header">
<div class="row">
@if($homeparty->step < 10)
@ -278,7 +278,7 @@
<div class="tab-pane fade @if($step == 3 || $step == 13) active show @endif" id="navs-top-host">
{!! Form::open(['url' => route('user_homeparty_detail', [$homeparty->id, 13]), 'class' => 'form-horizontal', 'id'=>'']) !!}
{!! Form::open(['action' => route('user_homeparty_detail', [$homeparty->id, 13]), 'class' => 'form-horizontal', 'id'=>'']) !!}
<h5 class="card-header">
<div class="row">
@if($homeparty->step < 10)

View file

@ -21,7 +21,7 @@
</div>
</div>
@endif
{!! Form::open(['url' => route('user_homeparty_guest_detail', [$homeparty->id, $homeparty_user->id]), 'class' => 'form-horizontal', 'id'=>'homeparty-user-form-validation']) !!}
{!! Form::open(['action' => route('user_homeparty_guest_detail', [$homeparty->id, $homeparty_user->id]), 'class' => 'form-horizontal', 'id'=>'homeparty-user-form-validation']) !!}
<div class="card mb-4">
<h5 class="card-header">
<div class="row">

View file

@ -123,7 +123,7 @@
</div>
</div>
{!! Form::open(['url' => route('user_homeparty_order', [$homeparty->id]), 'class' => 'form-horizontal', 'id'=>'homeparty-order-form']) !!}
{!! Form::open(['action' => route('user_homeparty_order', [$homeparty->id]), 'class' => 'form-horizontal', 'id'=>'homeparty-order-form']) !!}
<div class="card mb-4">
<h5 class="card-header">
<div class="row">

View file

@ -155,7 +155,7 @@
<a href="{{route('homeparty', [$homeparty->token])}}" class="btn btn-sm btn-default float-right">{{ __('back') }}</a>
</h4>
{!! Form::open(['url' => route('homeparty', [$homeparty->token, $homeparty_user->id]), 'class' => 'form-horizontal', 'id'=>'homeparty-user-form-validation']) !!}
{!! Form::open(['action' => route('homeparty', [$homeparty->token, $homeparty_user->id]), 'class' => 'form-horizontal', 'id'=>'homeparty-user-form-validation']) !!}
@if(Session::has('alert-save'))
<div class="alert alert-dark-secondary alert-dismissible fade show">
<div class="font-weight-bold">

View file

@ -4,7 +4,7 @@
<!-- Description -->
<div class="card mb-4">
<div class="card-body">
{!! Form::open(['url' => route('user_membership_store', ['change_order']), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('user_membership_store', ['change_order']), 'class' => 'form-horizontal']) !!}
<div class="table-responsive">
<table class="table table- m-0">
<tbody class="switchers-stacked">

View file

@ -5,7 +5,7 @@
<div class="card mb-4">
<div class="card-body">
{!! Form::open(['url' => route('user_membership_store', ['payment']), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('user_membership_store', ['payment']), 'class' => 'form-horizontal']) !!}
<div class="table-responsive">
<table class="table table- m-0">
<tbody class="switchers-stacked">

View file

@ -5,7 +5,7 @@
<div class="card mb-4">
<div class="card-body">
<h5>{{ __('membership.your_booked_package') }}</h5>
{!! Form::open(['url' => route('user_membership_store', ['payment_order']), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('user_membership_store', ['payment_order']), 'class' => 'form-horizontal']) !!}
<div class="row">
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('payment.ordering_country') }}</div>

View file

@ -1,10 +1,10 @@
{!! Form::open(['url' => route('user_membership_store', ['upgrade_order']), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('user_membership_store', ['upgrade_order']), 'class' => 'form-horizontal']) !!}
<div class="card mb-4">
<div class="card-body">
{!! Form::open(['url' => route('user_membership_store', ['change_order']), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('user_membership_store', ['change_order']), 'class' => 'form-horizontal']) !!}
<div class="row">
<div class="col-md-3 mb-3">

View file

@ -174,7 +174,7 @@
Abo Option deaktiviert
@if($user->payment_account && $user->is())
<div class="card w-100 mb-4">
{!! Form::open(['url' => route('user_membership_store', ['remove_abo']), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('user_membership_store', ['remove_abo']), 'class' => 'form-horizontal']) !!}
<h5 class="card-header">{{__('payment.auto_renewal_hl')}} {{__('membership.deactivate')}}</h5>
<div class="card-body">
@ -195,7 +195,7 @@
@if($user->payment_account)
<div class="card w-100 mb-4">
{!! Form::open(['url' => route('user_membership_store', ['delete_membership']), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('user_membership_store', ['delete_membership']), 'class' => 'form-horizontal']) !!}
<h5 class="card-header">{{__('membership.membership')}} {{__('membership.end')}}</h5>
<div class="card-body">

View file

@ -4,7 +4,7 @@
<h4 class="font-weight-bold py-2 mb-2">
{{ __('navigation.my_orders') }}
</h4>
{!! Form::open(['url' => route('user_order_my_delivery', [$for, $delivery_id]), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('user_order_my_delivery', [$for, $delivery_id]), 'class' => 'form-horizontal']) !!}
<div class="card">

View file

@ -23,7 +23,7 @@
</div>
</div>
{!! Form::open(['url' => route('user_order_my_payment', [$for, $delivery_id]), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('user_order_my_payment', [$for, $delivery_id]), 'class' => 'form-horizontal']) !!}
<input type="hidden" name="shipping_is_for" value="{{$for}}">
<input type="hidden" name="is_abo" value="{{$is_abo}}">

View file

@ -23,7 +23,7 @@
</div>
</div>
{!! Form::open(['url' => route('user_order_my_payment', [$for, $delivery_id]), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('user_order_my_payment', [$for, $delivery_id]), 'class' => 'form-horizontal']) !!}
<input type="hidden" name="shipping_is_for" value="{{$for}}">
<input type="hidden" name="is_abo" value="{{$is_abo}}">

View file

@ -23,7 +23,7 @@
</div>
</div>
{!! Form::open(['url' => route('user_order_my_payment', [$for, $delivery_id]), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('user_order_my_payment', [$for, $delivery_id]), 'class' => 'form-horizontal']) !!}
<input type="hidden" name="shipping_is_for" value="{{$for}}">
<input type="hidden" name="is_abo" value="{{$is_abo}}">
@include('user.order.shipping_ot')

View file

@ -163,7 +163,7 @@
@endif
<hr>
{!! Form::open(['url' => route('user_shop_api_orders_checkout'), 'class' => 'form-horizontal', 'id'=>'api-order-list-form']) !!}
{!! Form::open(['action' => route('user_shop_api_orders_checkout'), 'class' => 'form-horizontal', 'id'=>'api-order-list-form']) !!}
@foreach($shopApiOrderCart->orders as $order)
{{ Form::hidden('api_action_list[]', $order->order_id) }}

View file

@ -2,7 +2,7 @@
@section('content')
{!! Form::open(['url' => route('user_shop_api_orders_action'), 'class' => 'form-horizontal', 'id'=>'user_shop_api_orders-form']) !!}
{!! Form::open(['action' => route('user_shop_api_orders_action'), 'class' => 'form-horizontal', 'id'=>'user_shop_api_orders-form']) !!}
<div class="card">
<h5 class="card-header">
{{ __('order.external_orders') }}

View file

@ -27,7 +27,7 @@
</div>
<div class="card mb-4">
<div class="card-body">
{!! Form::open(['url' => route('user_shop_tanslate_store'), 'class' => 'form-horizontal', 'id'=>'']) !!}
{!! Form::open(['action' => route('user_shop_tanslate_store'), 'class' => 'form-horizontal', 'id'=>'']) !!}
@foreach($localizations as $lang)
<div class="form-group">
<label class="form-label" for="contact">{{ __('shop.shop_contact') }} | <strong style="text-transform: uppercase">{{ __('website.language') }} {{$lang}}</strong></label>

View file

@ -23,7 +23,7 @@
{{__('team.export')}}
</h5>
<div class="card-body">
{!! Form::open(['url' => route('user_team_export_download'), 'class' => '']) !!}
{!! Form::open(['action' => route('user_team_export_download'), 'class' => '']) !!}
{!! Form::hidden('key', 'value') !!}
<button type="submit" name="action" value="export" class="btn btn-md btn-primary mb-2"><i class="ion ion-md-download"></i> &nbsp;{{ __('team.export_as_xls') }}</button>
{!! Form::close() !!}

View file

@ -0,0 +1,308 @@
@extends('layouts.layout-2')
@section('content')
<div class="container-fluid">
@if(isset($error))
<div class="alert alert-danger">
<i class="fas fa-exclamation-triangle"></i> {{ $error }}
</div>
@endif
<!-- Header Section -->
<div class="row mb-4">
<div class="col-12">
<div class="card bg-primary text-white">
<div class="card-body text-center py-3">
<h1 class="card-title mb-3">
<i class="fas fa-chart-line mr-3"></i>
{{ __('marketingplan.title') }}
</h1>
<p class="card-text lead mb-0">
{{ __('marketingplan.subtitle') }}
</p>
@if($currentUser && $currentLevel)
<div class="mt-3">
<span class="badge badge-light badge-lg">
<i class="fas fa-user mr-2"></i>
{{ __('marketingplan.current_level') }} {{ $currentLevel->name }}
</span>
</div>
@endif
</div>
</div>
</div>
</div>
@if($userLevels->count() > 0)
<!-- Marketing Plan Levels -->
<div class="row">
@foreach($userLevels as $index => $level)
<div class="col-lg-6 col-xl-4 mb-4">
<div class="card h-100 shadow-sm
@if($currentUser && $currentLevel && $currentLevel->id == $level->id)
border-secondary current-level
@elseif($currentUser && $currentLevel && $currentLevel->pos < $level->pos)
border-primary next-level
@else
border-light
@endif">
<!-- Level Header -->
<div class="card-header
@if($currentUser && $currentLevel && $currentLevel->id == $level->id)
bg-secondary
@elseif($currentUser && $currentLevel && $currentLevel->pos < $level->pos)
bg-primary text-white
@else
bg-light
@endif">
<div class="d-flex justify-content-between align-items-center">
<h5 class="mb-0">
<span class="badge
@if($currentUser && $currentLevel && $currentLevel->id == $level->id)
badge-primary text-white
@elseif($currentUser && $currentLevel && $currentLevel->pos < $level->pos)
badge-secondary
@else
badge-secondary
@endif mr-2">{{ $level->pos }}</span>
{{ $level->name }}
</h5>
@if($currentUser && $currentLevel && $currentLevel->id == $level->id)
<i class="fas fa-star text-warning-dark"></i>
@elseif($currentUser && $currentLevel && $level->pos == $currentLevel->pos + 1)
<i class="fas fa-arrow-up text-warning-dark"></i>
@endif
</div>
</div>
<!-- Level Details -->
<div class="card-body">
<!-- Qualifikation Section -->
<div class="mb-3">
<h6 class="text-muted mb-2">
<i class="fas fa-certificate mr-2"></i>{{ __('marketingplan.qualification') }}
</h6>
<div class="row">
<div class="col-6">
<div class="text-center p-2 bg-light rounded">
<div class="font-weight-bold text-primary">{{ formatNumber($level->qual_kp, 0) }}</div>
<small class="text-muted">{{ __('marketingplan.kp_points') }}</small>
</div>
</div>
<div class="col-6">
<div class="text-center p-2 bg-light rounded">
<div class="font-weight-bold text-info">{{ formatNumber($level->qual_pp, 0) }}</div>
<small class="text-muted">{{ __('marketingplan.tp_points') }}</small>
</div>
</div>
</div>
</div>
<!-- Provision Section -->
<div class="mb-3">
<h6 class="text-muted mb-2">
<i class="fas fa-percentage mr-2"></i>{{ __('marketingplan.provisions') }}
</h6>
<div class="row">
<div class="col-6">
<div class="text-center p-2 bg-light rounded">
<div class="font-weight-bold text-success">{{ $level->margin }}%</div>
<small class="text-muted">{{ __('marketingplan.standard') }}</small>
</div>
</div>
<div class="col-6">
<div class="text-center p-2 bg-light rounded">
<div class="font-weight-bold text-success">{{ $level->margin_shop }}%</div>
<small class="text-muted">{{ __('marketingplan.shop') }}</small>
</div>
</div>
</div>
</div>
<!-- Paylines Section -->
@if($level->paylines > 0)
<div class="mb-3">
<h6 class="text-muted mb-2">
<i class="fas fa-sitemap mr-2"></i>{{ __('marketingplan.team_provisions') }}
</h6>
<div class="row">
@for($i = 1; $i <= min($level->paylines, 4); $i++)
@php $lineValue = $level->{'pr_line_' . $i}; @endphp
@if($lineValue > 0)
<div class="col-3">
<div class="text-center p-1 bg-light rounded">
<div class="font-weight-bold text-warning-dark">{{ $lineValue }}%</div>
<small class="text-muted">L{{ $i }}</small>
</div>
</div>
@endif
@endfor
</div>
@if($level->paylines > 4)
<div class="row mt-2">
@for($i = 5; $i <= min($level->paylines, 8); $i++)
@php $lineValue = $level->{'pr_line_' . $i}; @endphp
@if($lineValue > 0)
<div class="col-3">
<div class="text-center p-1 bg-light rounded">
<div class="font-weight-bold text-warning-dark">{{ $lineValue }}%</div>
<small class="text-muted">L{{ $i }}</small>
</div>
</div>
@endif
@endfor
</div>
@endif
</div>
@endif
<!-- Wachstumsbonus -->
@if($level->getFormattedGrowthBonus())
<div class="mb-3">
<h6 class="text-muted mb-2">
<i class="fas fa-trophy mr-2"></i>{{ __('marketingplan.growth_bonus') }}
</h6>
<div class="text-center p-2 bg-light rounded">
<div class="font-weight-bold text-warning-dark">{{ $level->getFormattedGrowthBonus() }}</div>
</div>
</div>
@endif
<!-- Next Level Info -->
@if($level->next_user_level)
<div class="border-top pt-3 mt-3">
<small class="text-muted">
<i class="fas fa-arrow-right mr-1"></i>
{{ __('marketingplan.next_level') }}
<strong>{{ $level->next_user_level->name }}</strong>
</small>
</div>
@endif
</div>
<!-- Card Footer for Current Level -->
@if($currentUser && $currentLevel && $currentLevel->id == $level->id)
<div class="card-footer bg-secondary text-center">
<small>
<i class="fas fa-check-circle mr-1"></i>
{{ __('marketingplan.your_current_level') }}
</small>
</div>
@elseif($currentUser && $currentLevel && $level->pos == $currentLevel->pos + 1)
<div class="card-footer bg-primary text-white">
<small>
<i class="fas fa-arrow-right mr-1"></i>
{{ __('marketingplan.your_next_goal') }}
</small>
</div>
@endif
</div>
</div>
@endforeach
</div>
<!-- Info Section -->
<div class="row mt-4">
<div class="col-12">
<div class="card border-info">
<div class="card-header bg-info text-white">
<h5 class="mb-0">
<i class="fas fa-info-circle mr-2"></i>
{{ __('marketingplan.legend') }}
</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<ul class="list-unstyled">
<li class="mb-2">
<span class="badge badge-primary mr-2">KU</span>
{{ __('marketingplan.customer_points_full') }}
</li>
<li class="mb-2">
<span class="badge badge-info mr-2">TP</span>
{{ __('marketingplan.team_points_full') }}
</li>
</ul>
</div>
<div class="col-md-6">
<ul class="list-unstyled">
<li class="mb-2">
<span class="badge badge-warning mr-2">L1-L8</span>
{{ __('marketingplan.team_provisions_by_lines') }}
</li>
<li class="mb-2">
<span class="badge badge-success mr-2">%</span>
{{ __('marketingplan.provision_rates') }}
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
@else
<!-- No Levels Available -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body text-center py-5">
<i class="fas fa-exclamation-circle fa-3x text-muted mb-3"></i>
<h4 class="text-muted">{{ __('marketingplan.no_levels_available') }}</h4>
<p class="text-muted">{{ __('marketingplan.no_levels_configured') }}</p>
</div>
</div>
</div>
</div>
@endif
@if(isset($performance))
<!-- Performance Info (nur im Debug-Modus anzeigen) -->
@if(config('app.debug'))
<div class="row mt-3">
<div class="col-12">
<div class="alert alert-info">
<small>
<i class="fas fa-clock mr-1"></i>
{{ __('marketingplan.loading_time') }} {{ $performance['execution_time'] }}ms
</small>
</div>
</div>
</div>
@endif
@endif
</div>
<style>
.current-level {
box-shadow: 0 4px 8px rgba(0, 123, 255, 0.3) !important;
}
.next-level {
box-shadow: 0 4px 8px rgba(40, 167, 69, 0.3) !important;
}
.card {
transition: transform 0.2s;
}
.card:hover {
transform: translateY(-2px);
}
.bg-gradient-primary {
background: linear-gradient(45deg, #007bff, #0056b3);
}
.badge-lg {
font-size: 1rem;
padding: 0.5rem 1rem;
}
.text-warning-dark {
color: #bf9500 !important;
}
</style>
@endsection

View file

@ -15,11 +15,43 @@
</div>
</div>
@endif
<!-- Error Message Display -->
@if(isset($error))
<div class="alert alert-warning">
<i class="fa fa-exclamation-triangle mr-2"></i>
{{ $error }}
</div>
@endif
<h4 class="font-weight-bold py-2 mb-2">
{{ __('navigation.my_team') }}
</h4>
<div class="card">
<h5 class="card-header">{{ __('team.register_new_consultant') }}</h5>
<h5 class="card-header">
{{ __('team.register_new_consultant') }}
@if(isset($optimized) && $optimized)
<span class="badge badge-success ml-2">{{ __('team.optimized') }}</span>
@endif
</h5>
<!-- Performance Metrics Display -->
@if(isset($performance))
<div class="card-body border-bottom">
<div class="alert alert-info mb-0">
<div class="row">
<div class="col-md-6">
<i class="fa fa-clock mr-1"></i>
<strong>{{ __('team.loading_time') }}</strong> {{ $performance['execution_time'] }}ms
</div>
<div class="col-md-6">
<i class="fa fa-user mr-1"></i>
<strong>{{ __('team.user_id') }}</strong> {{ $performance['user_id'] }}
</div>
</div>
</div>
</div>
@endif
<div class="row no-gutters row-bordered">
<div class="col-md-12 p-4">
<h6 class="mb-4">{{ __('team.link_for_consultant_registration') }}</h6>
@ -32,9 +64,61 @@
</div>
</div>
<p>{{ __('team.new_consultant_copy1') }}</p>
<!-- Zusätzliche Optimierungs-Info -->
@if(isset($optimized) && $optimized)
<div class="mt-3">
<small class="text-muted">
<i class="fa fa-info-circle mr-1"></i>
{{ __('team.optimized_performance_features') }}
@if(isset($performance))
<a href="#" onclick="showPerformanceDetails()" class="ml-2">{{ __('team.show_details') }}</a>
@endif
</small>
</div>
@endif
</div>
</div>
</div><!-- Target -->
<!-- Performance Details Modal -->
@if(isset($performance))
<div class="modal fade" id="performanceModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">{{ __('team.performance_metrics_team_overview') }}</h5>
<button type="button" class="close" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body">
<table class="table table-sm">
<tr>
<td><strong>{{ __('team.execution_time') }}</strong></td>
<td>{{ $performance['execution_time'] }}ms</td>
</tr>
<tr>
<td><strong>User ID:</strong></td>
<td>{{ $performance['user_id'] }}</td>
</tr>
<tr>
<td><strong>Optimierungen:</strong></td>
<td>
<span class="badge badge-success">{{ __('team.performance_monitoring') }}</span>
<span class="badge badge-success">Error Handling</span>
<span class="badge badge-success">{{ __('team.fallback_support') }}</span>
</td>
</tr>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">{{ __('team.close') }}</button>
</div>
</div>
</div>
</div>
@endif
<script>
$( document ).ready(function() {
var clipboardDemos = new ClipboardJS('[data-clipboard-demo]');
@ -51,5 +135,11 @@
$(this).tooltip('disable');
})
});
@if(isset($performance))
function showPerformanceDetails() {
$('#performanceModal').modal('show');
}
@endif
</script>
@endsection

View file

@ -23,7 +23,7 @@
{{ __('team.points') }}
</h5>
<div class="card-body">
{!! Form::open(['url' => route('user_team_points'), 'class' => 'form-horizontal', 'id'=>'form_filter_user_points']) !!}
{!! Form::open(['action' => route('user_team_points'), 'class' => 'form-horizontal', 'id'=>'form_filter_user_points']) !!}
<div class="form-row align-items-center px-0 pb-2 pt-0">
<div class="col-6 col-sm-4 col-md-4 col-lg-4 mb-1">

View file

@ -0,0 +1,416 @@
@extends('layouts.layout-2')
@section('content')
@if ($errors->any())
<div class="row">
<div class="col-sm-12">
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
</div>
@endif
<!-- Error Message Display -->
@if(isset($error))
<div class="alert alert-warning">
<i class="fa fa-exclamation-triangle mr-2"></i>
{{ $error }}
</div>
@endif
<h4 class="font-weight-bold py-2 mb-2">
{{ __('navigation.my_team') }}
</h4>
<div class="card">
<h5 class="card-header">
{{__('team.business')}} {{__('navigation.overview')}}
@if(isset($performance) && isset($performance['version']))
@if($performance['version'] === 'Optimized')
<span class="badge badge-success ml-2">{{ __('team.optimized') }}</span>
@elseif($performance['version'] === 'Standard')
<span class="badge badge-info ml-2">{{ __('team.standard_monitoring') }}</span>
@elseif($performance['version'] === 'Fallback')
<span class="badge badge-warning ml-2">{{ __('team.fallback') }}</span>
@endif
@endif
</h5>
<!-- Performance Metrics Display -->
@if(isset($performance) && config('app.debug'))
<div class="card-body border-bottom">
<div class="alert alert-info mb-0">
<div class="row">
<div class="col-md-3">
<i class="fa fa-clock mr-1"></i>
<strong>{{ __('team.loading_time') }}</strong> {{ $performance['execution_time'] }}ms
</div>
@if(isset($performance['memory_used']))
<div class="col-md-3">
<i class="fa fa-memory mr-1"></i>
<strong>{{ __('team.memory') }}</strong> {{ $performance['memory_used'] }}
</div>
@endif
@if(isset($performance['user_count']))
<div class="col-md-3">
<i class="fa fa-users mr-1"></i>
<strong>{{ __('team.team_size') }}</strong> {{ $performance['user_count'] }}
</div>
@endif
<div class="col-md-3">
<i class="fa fa-cog mr-1"></i>
<strong>{{ $performance['version'] }}</strong>
@if(isset($performance['calculation_type']))
<span class="badge badge-sm {{ $performance['calculation_type'] === 'Live' ? 'badge-warning' : 'badge-success' }}">
{{ $performance['calculation_type'] }}
</span>
@endif
</div>
</div>
</div>
</div>
@endif
<div class="card-body p-0">
{!! Form::open(['action' => route('user_team_members_show'), 'class' => 'form-horizontal', 'id'=>'form_filter_team_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_team" name="team_user_filter_month">
@foreach($filter_months as $key=>$value)
<option value="{{$key}}" @if(session('team_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_team" name="team_user_filter_year">
@foreach($filter_years as $key=>$value)
<option value="{{$value}}" @if(session('team_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_team" name="team_user_filter_active">
@foreach($filter_active as $key=>$value)
<option value="{{$key}}" @if(session('team_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_team" name="team_user_filter_level">
@foreach($filter_levels as $key=>$value)
<option value="{{$key}}" @if(session('team_user_filter_level') == $key) selected @endif>{{$value}}</option>
@endforeach
</select>
</div>
</div>
<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_team" name="team_user_filter_next_level">
@foreach($filter_next_level as $key=>$value)
<option value="{{$key}}" @if(session('team_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() !!}
<!-- Zusätzliche Controls -->
@if(isset($performance) && config('app.debug'))
<div class="px-4 pb-2">
<div class="row">
<div class="col-md-8">
<div class="btn-group" role="group">
<button type="button" class="btn btn-info btn-sm" onclick="showPerformanceDetails()">
<i class="fa fa-chart-line"></i> {{ __('team.performance_details') }}
</button>
<a href="{{ route('user_team_structure') }}" class="btn btn-outline-secondary btn-sm">
<i class="fa fa-sitemap"></i> {{ __('team.team_structure') }}
</a>
<a href="{{ route('user_team_add_member') }}" class="btn btn-outline-primary btn-sm">
<i class="fa fa-user-plus"></i> {{ __('team.new_member') }}
</a>
</div>
</div>
<div class="col-md-4 text-right">
<div class="btn-group" role="group">
@if(isset($optimized) && $optimized)
<button type="button" class="btn btn-sm btn-success" onclick="toggleDataTableMode('optimized')" id="btn-optimized">
<i class="fa fa-rocket"></i> {{ __('team.optimized_action') }}
</button>
@endif
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="toggleDataTableMode('standard')" id="btn-standard">
<i class="fa fa-table"></i> {{ __('team.standard_action') }}
</button>
@if(isset($forceLiveCalculation) && !$forceLiveCalculation)
<button type="button" class="btn btn-sm btn-outline-warning" onclick="enableLiveCalculation()" id="btn-live">
<i class="fa fa-sync"></i> Live
</button>
@else
<button type="button" class="btn btn-sm btn-warning" onclick="disableLiveCalculation()" id="btn-live">
<i class="fa fa-sync fa-spin"></i> Live
</button>
@endif
</div>
</div>
</div>
</div>
@endif
<div class="card-datatable table-responsive pt-0">
<table class="datatables-style table table-striped table-bordered" id="datatable-team-users">
<thead>
<tr>
<th>{{__('team.ID') }}</th>
<th>{{__('team.Ebene') }}</th>
<th>{{ __('team.Level') }}</th>
<th>{{ __('team.KD') }}</th>
<th>{{__('team.KU')}}</th>
<th>{{__('team.TP')}}</th>
<th>{{__('E-Mail')}}</th>
<th>{{__('First name')}}</th>
<th>{{__('Last name')}}</th>
<th>{{__('team.next_level')}}</th>
<th>{{__('tables.account')}}</th>
<th>{{__('team.bis')}}</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
<!-- Performance Details Modal -->
@if(isset($performance) && config('app.debug'))
<div class="modal fade" id="performanceModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">{{ __('team.performance_metrics_team_overview') }}</h5>
<button type="button" class="close" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body">
<table class="table table-sm">
<tr>
<td><strong>{{ __('team.execution_time') }}</strong></td>
<td>{{ $performance['execution_time'] }}ms</td>
</tr>
@if(isset($performance['memory_used']))
<tr>
<td><strong>{{ __('team.memory_usage') }}</strong></td>
<td>{{ $performance['memory_used'] }}</td>
</tr>
@endif
@if(isset($performance['user_count']))
<tr>
<td><strong>{{ __('team.team_size') }}</strong></td>
<td>{{ $performance['user_count'] }} User</td>
</tr>
@endif
<tr>
<td><strong>User ID:</strong></td>
<td>{{ $performance['user_id'] }}</td>
</tr>
<tr>
<td><strong>Version:</strong></td>
<td>{{ $performance['version'] ?? 'Standard' }}</td>
</tr>
@if(isset($performance['calculation_type']))
<tr>
<td><strong>Berechnungstyp:</strong></td>
<td>
<span class="badge {{ $performance['calculation_type'] === 'Live' ? 'badge-warning' : 'badge-success' }}">
{{ $performance['calculation_type'] }}
</span>
@if($performance['calculation_type'] === 'Live')
<small class="text-muted ml-2">Echtzeitberechnung ohne Cache</small>
@else
<small class="text-muted ml-2">{{ __('team.optimized_with_cache') }}</small>
@endif
</td>
</tr>
@endif
<tr>
<td><strong>Features:</strong></td>
<td>
<span class="badge badge-success">TreeCalcBotOptimized</span>
<span class="badge badge-success">{{ __('team.performance_monitoring') }}</span>
<span class="badge badge-success">Live Calculation</span>
<span class="badge badge-success">Memory Optimization</span>
<span class="badge badge-success">Error Handling</span>
</td>
</tr>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">{{ __('team.close') }}</button>
</div>
</div>
</div>
</div>
@endif
<script>
// Global Variables
var oTable;
$( document ).ready(function() {
oTable = $('#datatable-team-users').DataTable({
"processing": true,
"serverSide": true,
"stateSave": true,
"searching": true,
ajax: {
url: getDataTableUrl(),
data: function(d) {
d.team_user_filter_name = $('input[name=team_user_filter_name]').val();
d.team_user_filter_month = $('select[name=team_user_filter_month]').val();
d.team_user_filter_year = $('select[name=team_user_filter_year]').val();
d.team_user_filter_active = $('select[name=team_user_filter_active]').val();
d.team_user_filter_level = $('select[name=team_user_filter_level]').val();
d.team_user_filter_next_level = $('select[name=team_user_filter_next_level]').val();
d.force_live_calculation = window.liveModeEnabled || false;
}
},
"columns": [
{ data: 'id', name: 'id', searchable: false, orderable: false },
{ data: 'deep', name: 'deep', orderable: false, searchable: false },
{ 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: false, searchable: false},
{ data: 'first_name', name: 'first_name', orderable: false, searchable: true },
{ data: 'last_name', name: 'last_name', orderable: false, searchable: true },
{ data: 'next_level_qualified', name: 'next_level_qualified', 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": 50,
"language": {
"url": "/js/datatables-{{ \App::getLocale() }}.json"
}
});
$('select.on_change_team').on('change', function(){
oTable.draw();
});
$('input.on_keyup_team').on('keyup', function(){
oTable.draw();
});
// Filter für neue Felder hinzufügen
$('select[name=team_user_filter_level]').on('change', function(){
oTable.draw();
});
$('select[name=team_user_filter_next_level]').on('change', function(){
oTable.draw();
});
});
// Global Variables für DataTable-Mode
window.dataTableMode = '{{ isset($optimized) && $optimized ? "optimized" : "standard" }}';
window.liveModeEnabled = {{ isset($forceLiveCalculation) && $forceLiveCalculation ? 'true' : 'false' }};
// DataTable URL basierend auf Modus
function getDataTableUrl() {
if (window.dataTableMode === 'optimized') {
return '{!! route('user_team_members_datatable_optimized') !!}';
}
return '{!! route('user_team_members_datatable') !!}';
}
// Toggle zwischen Standard und Optimized DataTable
function toggleDataTableMode(mode) {
if (mode === window.dataTableMode) return; // Bereits aktiver Modus
window.dataTableMode = mode;
// Button-Status aktualisieren
$('.btn-group button[id^="btn-"]').removeClass('btn-success btn-outline-secondary').addClass('btn-outline-secondary');
if (mode === 'optimized') {
$('#btn-optimized').removeClass('btn-outline-secondary').addClass('btn-success');
} else {
$('#btn-standard').removeClass('btn-outline-secondary').addClass('btn-success');
}
// DataTable neu laden mit neuer URL
oTable.ajax.url(getDataTableUrl()).load();
// Status-Message anzeigen
showMessage('{{ __('team.datatable_mode_switched', ['mode' => '']) }}'.replace(':mode', mode === 'optimized' ? '{{ __('team.optimized_action') }}' : '{{ __('team.standard_action') }}'), 'info');
}
// Live-Calculation aktivieren
function enableLiveCalculation() {
window.liveModeEnabled = true;
$('#btn-live').removeClass('btn-outline-warning').addClass('btn-warning')
.html('<i class="fa fa-sync fa-spin"></i> Live');
// DataTable neu laden mit Live-Parameter
oTable.ajax.reload();
showMessage('Live-Berechnung aktiviert - Daten werden in Echtzeit berechnet', 'warning');
}
// Live-Calculation deaktivieren
function disableLiveCalculation() {
window.liveModeEnabled = false;
$('#btn-live').removeClass('btn-warning').addClass('btn-outline-warning')
.html('<i class="fa fa-sync"></i> Live');
// DataTable neu laden ohne Live-Parameter
oTable.ajax.reload();
showMessage('Live-Berechnung deaktiviert - Cache-Daten werden verwendet', 'success');
}
// Hilfsfunktion für Status-Messages
function showMessage(message, type) {
var alertClass = 'alert-info';
if (type === 'success') alertClass = 'alert-success';
if (type === 'warning') alertClass = 'alert-warning';
if (type === 'error') alertClass = 'alert-danger';
var messageHtml = '<div class="alert ' + alertClass + ' alert-dismissible fade show" role="alert">' +
message +
'<button type="button" class="close" data-dismiss="alert"><span>&times;</span></button>' +
'</div>';
// Message am Anfang der Card einfügen
$('.card-body').first().prepend(messageHtml);
// Nach 5 Sekunden automatisch ausblenden
setTimeout(function() {
$('.alert-dismissible').alert('close');
}, 5000);
}
@if(isset($performance))
function showPerformanceDetails() {
$('#performanceModal').modal('show');
}
@endif
</script>
@endsection

View file

@ -15,15 +15,33 @@
</div>
</div>
@endif
<!-- Error Message Display -->
@if(isset($error))
<div class="alert alert-warning">
<i class="fa fa-exclamation-triangle mr-2"></i>
{{ $error }}
</div>
@endif
<h4 class="font-weight-bold py-2 mb-2">
{{ __('navigation.my_team') }}
</h4>
<div class="card">
<h5 class="card-header">
{{__('team.business')}} {{__('team.structure')}}
@if(isset($performance) && isset($performance['version']))
@if($performance['version'] === 'Optimized')
<span class="badge badge-success ml-2">{{ __('team.optimized') }}</span>
@elseif($performance['version'] === 'Standard')
<span class="badge badge-info ml-2">{{ __('team.standard_monitoring') }}</span>
@elseif($performance['version'] === 'Fallback')
<span class="badge badge-warning ml-2">{{ __('team.fallback') }}</span>
@endif
@endif
</h5>
<div class="card-body">
{!! Form::open(['url' => route('user_team_structure'), 'class' => 'form-horizontal', 'id'=>'form_filter_business_user']) !!}
{!! Form::open(['action' => route('user_team_structure'), 'class' => 'form-horizontal', 'id'=>'form_filter_business_user']) !!}
<div class="form-row align-items-center px-0 pb-2 pt-0">
<div class="col-6 col-sm-4 col-md-4 col-lg-4 mb-1">
@ -43,11 +61,60 @@
</div>
{!! Form::close() !!}
<!-- Performance Metrics Display -->
@if(isset($performance) && config('app.debug'))
<div class="alert alert-info">
<div class="row">
<div class="col-md-4">
<i class="fa fa-clock mr-1"></i>
<strong>{{ __('team.loading_time') }}</strong> {{ $performance['execution_time'] }}ms
</div>
<div class="col-md-4">
<i class="fa fa-memory mr-1"></i>
<strong>{{ __('team.memory') }}</strong> {{ $performance['memory_used'] }}
</div>
<div class="col-md-4">
<i class="fa fa-users mr-1"></i>
<strong>{{ __('team.team_members') }}</strong> {{ $performance['user_count'] }}
</div>
</div>
</div>
@endif
<hr class="container-m-nx border-light mt-0">
<div>
<div id="nestable-menu" class="mb-4">
<button type="button" class="btn btn-default btn-sm" data-action="expand-all">{{ __('team.expand_all') }}</button>
<button type="button" class="btn btn-default btn-sm" data-action="collapse-all">{{ __('team.collapse_all') }}</button>
<!-- Zusätzliche User-Controls -->
@if(isset($performance) && config('app.debug'))
<div class="btn-group ml-3" role="group">
<button type="button" class="btn btn-info btn-sm" onclick="showPerformanceDetails()">
<i class="fa fa-chart-line"></i> {{ __('team.performance_details') }}
</button>
@if(config('app.debug'))
@if(isset($performance['version']) && $performance['version'] === 'Standard')
<a href="{{ route('user_team_structure') }}?use_optimized=1" class="btn btn-outline-success btn-sm" title="Optimierte Version testen">
<i class="fa fa-rocket"></i> {{ __('team.test_optimized') }}
</a>
@else
<a href="{{ route('user_team_structure') }}" class="btn btn-outline-info btn-sm" title="Standard-Version">
<i class="fa fa-undo"></i> {{ __('team.standard_version') }}
</a>
@if(isset($performance['calculation_type']) && $performance['calculation_type'] === 'Live')
<a href="{{ route('user_team_structure') }}?use_optimized=1" class="btn btn-outline-warning btn-sm" title="Live-Berechnung aus">
<i class="fa fa-refresh"></i> Live berechnen aus
</a>
@else
<a href="{{ route('user_team_structure') }}?use_optimized=1&force_live_calculation=1" class="btn btn-outline-success btn-sm" title="Live-Berechnung erzwingen">
<i class="fa fa-refresh"></i> Live berechnen
</a>
@endif
@endif
@endif
</div>
@endif
</div>
<div class="row">
@ -75,6 +142,58 @@
</div>
</div>
</div>
<!-- Performance Details Modal -->
@if(isset($performance))
<div class="modal fade" id="performanceModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">{{ __('team.performance_metrics_my_team') }}</h5>
<button type="button" class="close" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body">
<table class="table table-sm">
<tr>
<td><strong>{{ __('team.execution_time') }}</strong></td>
<td>{{ $performance['execution_time'] }}ms</td>
</tr>
<tr>
<td><strong>Memory-Verbrauch:</strong></td>
<td>{{ $performance['memory_used'] }}</td>
</tr>
<tr>
<td><strong>{{ __('team.team_members') }}</strong></td>
<td>{{ $performance['user_count'] }}</td>
</tr>
<tr>
<td><strong>Version:</strong></td>
<td>{{ $performance['version'] ?? 'Standard' }}</td>
</tr>
<tr>
<td><strong>Features:</strong></td>
<td>
@if(isset($performance['version']) && $performance['version'] === 'Optimized')
<span class="badge badge-success">TreeCalcBotOptimized</span>
@else
<span class="badge badge-info">TreeCalcBot Standard</span>
@endif
<span class="badge badge-success">{{ __('team.performance_monitoring') }}</span>
<span class="badge badge-success">Error Handling</span>
</td>
</tr>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">{{ __('team.close') }}</button>
</div>
</div>
</div>
</div>
@endif
<link rel="stylesheet" href="/vendor/libs/nestable/nestable.css">
<script src="/vendor/libs/nestable/jquery-nestable.js?v=1"></script>
<script>
@ -104,5 +223,11 @@
$('.on_change_select_filter').on('change', function(){
$('#form_filter_business_user').submit();
});
@if(isset($performance))
function showPerformanceDetails() {
$('#performanceModal').modal('show');
}
@endif
</script>
@endsection

View file

@ -0,0 +1,108 @@
@extends('layouts.layout-2')
@section('content')
@if ($errors->any())
<div class="row">
<div class="col-sm-12">
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
</div>
@endif
<h4 class="font-weight-bold py-2 mb-2">
{{ __('navigation.my_team') }}
</h4>
<div class="card">
<h5 class="card-header">
{{__('team.business')}} {{__('team.structure')}}
</h5>
<div class="card-body">
{!! Form::open(['action' => route('user_team_structure_old'), 'class' => 'form-horizontal', 'id'=>'form_filter_business_user']) !!}
<div class="form-row align-items-center px-0 pb-2 pt-0">
<div class="col-6 col-sm-4 col-md-4 col-lg-4 mb-1">
<select class="custom-select on_change_select_filter" name="team_user_filter_month">
@foreach($filter_months as $key=>$value)
<option value="{{$key}}" @if(session('team_user_filter_month') == $key) selected @endif>{{$value}}</option>
@endforeach
</select>
</div>
<div class="col-6 col-sm-4 col-md-4 col-lg-4 mb-1">
<select class="custom-select on_change_select_filter" name="team_user_filter_year">
@foreach($filter_years as $key=>$value)
<option value="{{$value}}" @if(session('team_user_filter_year') == $value) selected @endif>{{$value}}</option>
@endforeach
</select>
</div>
</div>
{!! Form::close() !!}
<hr class="container-m-nx border-light mt-0">
<div>
<div id="nestable-menu" class="mb-4">
<button type="button" class="btn btn-default btn-sm" data-action="expand-all">{{ __('team.expand_all') }}</button>
<button type="button" class="btn btn-default btn-sm" data-action="collapse-all">{{ __('team.collapse_all') }}</button>
</div>
<div class="row">
<div class="col-md-12">
<h6 class="">
{{ __('team.your_sponsor') }}
</h6>
<div class="dd" id="">
{!! $TreeCalcBot->makeSponsorHtml() !!}
</div>
<hr>
</div>
</div>
<div class="row">
<div class="col-md-12">
<h6 class="">
{{ __('team.your_team') }}
</h6>
<div class="dd" id="nestable2">
{!! $TreeCalcBot->makeHtmlTree() !!}
</div>
</div>
</div>
</div>
</div>
</div>
<link rel="stylesheet" href="/vendor/libs/nestable/nestable.css">
<script src="/vendor/libs/nestable/jquery-nestable.js?v=1"></script>
<script>
$( document ).ready(function() {
function updateOutput(e) {
//var list = e.length ? e : $(e.target);
//var output = list.data('output');
};
$('#nestable2').nestable().on('change', updateOutput);
// output initial serialised data
//updateOutput($('#nestable2').data('output', $('#nestable2-output')));
$('#nestable-menu').on('click', function(e) {
var target = $(e.target);
var action = target.data('action');
if (action === 'expand-all') {
$('.dd').nestable('expandAll');
}
if (action === 'collapse-all') {
$('.dd').nestable('collapseAll');
}
});
});
$('.on_change_select_filter').on('change', function(){
$('#form_filter_business_user').submit();
});
</script>
@endsection

View file

@ -13,7 +13,7 @@
</div>
</div>
{!! Form::open(['url' => route('user_update_email')]) !!}
{!! Form::open(['action' => route('user_update_email')]) !!}
<div class="form-group row">
<label class="col-form-label col-sm-2 text-sm-right">{{__('New E-Mail Address')}}*</label>

View file

@ -6,7 +6,7 @@
{{__('Change password')}}
</h5>
<div class="card-body">
{!! Form::open(['url' => route('user_update_password')]) !!}
{!! Form::open(['action' => route('user_update_password')]) !!}
<div class="form-group row">
<label class="col-form-label col-sm-2 text-sm-right">{{__('Old Password')}}*</label>
<div class="col-sm-10">

View file

@ -6,7 +6,7 @@
{{__('Create Password')}}
</h5>
<div class="card-body">
{!! Form::open(['url' => route('user_update_password_first')]) !!}
{!! Form::open(['action' => route('user_update_password_first')]) !!}
<div class="form-group row">
<label class="col-form-label col-sm-2 text-sm-right">{{__('New Password')}}*</label>
<div class="col-sm-10">

View file

@ -18,7 +18,7 @@
{{ App\Services\UserService::getOrderInfo('user_reverse_charge') }}
</div>
</div>
{!! Form::open(['url' => route('wizard_store_payment', [20]), 'class' => 'form-horizontal']) !!}
{!! Form::open(['action' => route('wizard_store_payment', [20]), 'class' => 'form-horizontal']) !!}
<div class="table-responsive">
<table class="table table- m-0" id="membership_package_payment">
<tbody class="switchers-stacked">

View file

@ -63,7 +63,7 @@
<div class="mb-3">
<div id="smartwizard-3-step-1" class="card animated fadeIn">
<div class="card-body">
{!! Form::open(['url' => route('wizard_store_create', [10]), 'class' => 'form-horizontal', 'id'=>'lead-form-validation-confirm']) !!}
{!! Form::open(['action' => route('wizard_store_create', [10]), 'class' => 'form-horizontal', 'id'=>'lead-form-validation-confirm']) !!}
@include('user.data_confirm')
<div class="text-left mt-3">
<button type="submit" class="btn btn-secondary">{{ __('register.agree_and_continue') }}</button>&nbsp;
@ -74,14 +74,14 @@
<div id="smartwizard-3-step-2" class="card animated fadeIn">
<div class="card-body">
@if(!$user->isPasswort())
{!! Form::open(['url' => route('wizard_store_create', [11])]) !!}
{!! Form::open(['action' => route('wizard_store_create', [11])]) !!}
@include('user.update_password_first_form')
<div class="text-left mt-3">
<button type="submit" class="btn btn-secondary">{{ __('register.create_and_next') }}</button>&nbsp;
</div>
{!! Form::close() !!}
@else
{!! Form::open(['url' => route('wizard_store_create', [11])]) !!}
{!! Form::open(['action' => route('wizard_store_create', [11])]) !!}
<p>{{ __('register.password_has_already_been_created') }}</p>
<button type="submit" class="btn btn-secondary">{{ __('register.next') }}</button>&nbsp;
{!! Form::close() !!}
@ -90,7 +90,7 @@
</div>
<div id="smartwizard-3-step-3" class="card animated fadeIn">
<div class="card-body">
{!! Form::open(['url' => route('wizard_store_create', [12]), 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
{!! Form::open(['action' => route('wizard_store_create', [12]), 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
@include('user.user_form')
<div class="text-left mt-3">
<button type="submit" class="btn btn-secondary">{{ __('register.save_and_continue') }}</button>&nbsp;
@ -123,7 +123,7 @@
<!-- Modal template -->
<div class="modal fade" id="modal-user-vat-validation">
<div class="modal-dialog">
{!! Form::open(['url' => route('wizard_store_create', [12]), 'class' => 'modal-content']) !!}
{!! Form::open(['action' => route('wizard_store_create', [12]), 'class' => 'modal-content']) !!}
<div class="modal-header">
<h5 class="modal-title">{{ __('account.new_vat_validate') }}</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
@ -155,8 +155,8 @@
</div>
</div>
<link rel="stylesheet" href="{{ mix('/vendor/libs/smartwizard/smartwizard.css') }}">
<script src="{{ mix('/vendor/libs/smartwizard/smartwizard.js') }}"></script>
<link rel="stylesheet" href="{{ asset('/vendor/libs/smartwizard/smartwizard.css') }}">
<script src="{{ asset('/vendor/libs/smartwizard/smartwizard.js') }}"></script>
<script type="text/javascript">
$(document).ready(function() {

View file

@ -17,7 +17,7 @@
@endif
<h4 class="font-weight-bold py-2 mb-2">
{{__('register.registration_completed')}
{{__('register.registration_completed')}}
</h4>
<div id="smartwizard-3" class="smartwizard-register">

View file

@ -71,7 +71,7 @@
<div id="smartwizard-3-step-1" class="card animated fadeIn">
<div class="card-body">
{!! Form::open(['url' => route('wizard_store_register', [0]), 'class' => 'form-horizontal', 'id'=>'lead-form-validation-confirm']) !!}
{!! Form::open(['action' => route('wizard_store_register', [0]), 'class' => 'form-horizontal', 'id'=>'lead-form-validation-confirm']) !!}
@include('user.data_confirm')
<div class="text-left mt-3">
<button type="submit" class="btn btn-secondary">{{__('register.agree_and_continue')}}</button>&nbsp;
@ -81,7 +81,7 @@
</div>
<div id="smartwizard-3-step-2" class="card animated fadeIn">
<div class="card-body">
{!! Form::open(['url' => route('wizard_store_register', [1]), 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
{!! Form::open(['action' => route('wizard_store_register', [1]), 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
@include('user.user_form')
<div class="text-left mt-3">
<button type="submit" class="btn btn-secondary">{{ __('register.save_and_continue') }}</button>&nbsp;
@ -99,7 +99,7 @@
<div class="row">
<div class="col-sm-6">
<div class="mt-4">
{!! Form::open([ 'url' => route('wizard_store_register', [2]), 'method' => 'post', 'files' => true, 'enctype' => 'multipart/form-data', 'class' => 'dropzone', 'id' => 'idcardDropzone' ]) !!}
{!! Form::open([ 'action' => route('wizard_store_register', [2]), 'method' => 'post', 'files' => true, 'enctype' => 'multipart/form-data', 'class' => 'dropzone', 'id' => 'idcardDropzone' ]) !!}
<input type="hidden" name="redirect" value="{{ route('wizard_register') }}">
<div class="fallback">
<input name="file" type="file" multiple>
@ -139,7 +139,7 @@
</div>
</div>
<div class="text-left mt-3">
{!! Form::open(['url' => route('wizard_store_register', [2])]) !!}
{!! Form::open(['action' => route('wizard_store_register', [2])]) !!}
<button type="submit" name="submit" value="do" class="btn btn-secondary">{{ __('register.save_and_continue') }}</button>&nbsp;
{!! Form::close() !!}
</div>
@ -155,7 +155,7 @@
<div class="row">
<div class="col-sm-6">
<div class="mt-4">
{!! Form::open([ 'url' => route('wizard_store_register', [3]), 'method' => 'post', 'files' => true, 'enctype' => 'multipart/form-data', 'class' => 'dropzone', 'id' => 'businesslDropzone' ]) !!}
{!! Form::open([ 'action' => route('wizard_store_register', [3]), 'method' => 'post', 'files' => true, 'enctype' => 'multipart/form-data', 'class' => 'dropzone', 'id' => 'businesslDropzone' ]) !!}
<input type="hidden" name="redirect" value="{{ route('wizard_register') }}">
<div class="fallback">
<input name="file" type="file" multiple>
@ -193,7 +193,7 @@
</div>
</div>
</div>
{!! Form::open(['url' => route('wizard_store_register', [3])]) !!}
{!! Form::open(['action' => route('wizard_store_register', [3])]) !!}
@php($business_license_choose = $user->account->getNotice('business_license'))
<div class="card-body pt-0">
<div class="row">
@ -220,7 +220,7 @@
<span class="custom-control-label">{{__('register.business_license_non')}}</span>
</label>
<p>{{__('register.business_license_non_text')}}</p>
{{ Form::textarea('non_business_license_reason', $user->account->getNotice('business_license_reason'), array('placeholder'=>__('Begründung'), 'class'=>'form-control', 'rows'=>' 2')) }}
{{ Form::textarea('non_business_license_reason', (string) $user->account->getNotice('business_license_reason'), array('placeholder'=>__('Begründung'), 'class'=>'form-control', 'rows'=>' 2')) }}
</div>
<div class="col-12 mt-2">
@ -237,7 +237,7 @@
<div class="card-body">
<h4>{{ __('register.wizard_finish_hl') }}</h4>
<p>{{ __('register.wizard_finish_line_1') }}.</p>
{!! Form::open(['url' => route('wizard_store_register', [4])]) !!}
{!! Form::open(['action' => route('wizard_store_register', [4])]) !!}
<button type="submit" name="submit" value="do" class="btn btn-secondary">{{ __('register.complete_registration') }}</button>&nbsp;
{!! Form::close() !!}
</div>
@ -249,7 +249,7 @@
<!-- Modal template -->
<div class="modal fade" id="modal-user-vat-validation">
<div class="modal-dialog">
{!! Form::open(['url' => route('wizard_store_register', [1]), 'class' => 'modal-content']) !!}
{!! Form::open(['action' => route('wizard_store_register', [1]), 'class' => 'modal-content']) !!}
<div class="modal-header">
<h5 class="modal-title">{{ __('account.new_vat_validate') }}</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
@ -282,15 +282,15 @@
</div>
<div class="hidden">
{!! Form::open(['url' => route('wizard_store_register', [7]), 'id' => 'user-change-country']) !!}
{!! Form::open(['action' => route('wizard_store_register', [7]), 'id' => 'user-change-country']) !!}
<input type="hidden" name="user_country_id" id="user_country_id" value="">
{!! Form::close() !!}
</div>
@endsection
@section('scripts')
<link rel="stylesheet" href="{{ mix('/vendor/libs/smartwizard/smartwizard.css') }}">
<script src="{{ mix('/vendor/libs/smartwizard/smartwizard.js') }}"></script>
<link rel="stylesheet" href="{{ asset('/vendor/libs/smartwizard/smartwizard.css') }}">
<script src="{{ asset('/vendor/libs/smartwizard/smartwizard.js') }}"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.smartwizard-register').smartWizard({

View file

@ -53,8 +53,8 @@
</div>
</div>
<link rel="stylesheet" href="{{ mix('/vendor/libs/smartwizard/smartwizard.css') }}">
<script src="{{ mix('/vendor/libs/smartwizard/smartwizard.js') }}"></script>
<link rel="stylesheet" href="{{ asset('/vendor/libs/smartwizard/smartwizard.css') }}">
<script src="{{ asset('/vendor/libs/smartwizard/smartwizard.js') }}"></script>
<script type="text/javascript">
$(document).ready(function() {