Updates to 03-2025

This commit is contained in:
Kevin Adametz 2025-04-01 10:39:21 +02:00
parent 6167273a48
commit 9b54eb0512
348 changed files with 34535 additions and 5774 deletions

View file

@ -40,14 +40,56 @@
@include('user.user_form')
@endif
<div class="text-left mt-3">
<div class="text-left mt-3 mb-4">
<button type="submit" class="btn btn-submit btn-primary">{{ __('save') }}</button>&nbsp;
<a href="{{ route('admin_leads') }}" class="btn btn-default">{{ __('back') }}</a>
</div>
{!! Form::close() !!}
@if($user->id)
@include('admin.lead.m_white_label')
@endif
<!-- Modal template -->
<div class="modal fade" id="modal-user-vat-validation">
<div class="modal-dialog">
{!! Form::open(['url' => route('admin_lead_store'), '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>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col-12">
<p>{{ __('account.reverse_charge_copy_1') }}</p>
<p>{{ __('account.reverse_charge_note_1') }}</p>
</div>
<div class="form-group col-sm-12 {{ $errors->has('reverse_charge') ? 'has-error' : '' }}">
<label class="form-label" for="tax_identification_number">{{ __('account.VAT_ID_number') }} *</label>
{{ Form::text('tax_identification_number', $user->account-> tax_identification_number, array('placeholder'=>__('account.VAT_ID_number'), 'class'=>'form-control', 'id'=>'tax_identification_number', 'required'=>true)) }}
@if ($errors->has('reverse_charge'))
<span class="help-block">
<strong>{{ $errors->first('reverse_charge') }}</strong>
</span>
@endif
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary" name="action" value="reverse_charge_validate">{{ __('account.btn_vat_validate') }}n</button>
</div>
{!! Form::close() !!}
</div>
</div>
<!-- Modal template -->
<div class="modal fade" id="modals-edit-m-data">
<div class="modal-dialog">
@ -61,7 +103,7 @@
<div class="form-row">
<div class="form-group col">
<label for="name" class="form-label">{{__('Passwort eingeben')}}</label>
<input type="text" class="form-control" name="edit_m_data_key" placeholder="gseele">
<input type="text" class="form-control" name="edit_m_data_key" placeholder="gseele" value="gseele">
</div>
</div>
</div>

View file

@ -1,77 +1,106 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-2 mb-2">
{{ __('Vertriebspartner') }}
</h4>
<div class="card">
<div class="card-datatable table-responsive">
{{-- <div class="ml-4">
<a href="{{ route('admin_lead_edit', ['new']) }}" class="btn btn-sm btn-primary">{{__('Neuen Vertriebspartner erstellen')}}</a>
</div>--}}
<table class="datatables-leads table table-striped table-bordered">
<div class="card-header">
{!! Form::open(['url' => route('admin_lead_download'), 'class' => '']) !!}
<div class="form-row align-items-center">
<div class="col-sm-5 col-md-5">
<label class="form-label" for="filter_user_shop_id">Art Vertriebspartner</label>
<select class="custom-select on_change_select_filter" name="filter_lead_type_id">
<option value="all">Alle Vertriebspartner</option>
{!! HTMLHelper::getLeadTypeOptions(session('filter_lead_type_id'), false) !!}
</select>
</div>
<div class="col-sm-4 col-md-4">
</div>
<div class="col-sm-3 col-md-3 text-right">
<button type="submit" name="action" value="export" class="btn btn-sm btn-primary mt-2"><i
class="ion ion-md-download"></i> &nbsp;Export als xls</button>
</div>
</div>
{!! Form::close() !!}
</div>
<div class="card-datatable table-responsive">
<table class="table table-striped table-bordered" id="datatables-leads">
<thead>
<tr>
<th>#</th>
<th>{{__('E-Mail')}}</th>
<th>{{__('Firma')}}</th>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname')}}</th>
<th>{{__('Level')}}</th>
<th>{{__('Mitglied')}}</th>
<th>{{__('bis')}}</th>
<th>{{__('Umsatz')}}</th>
<th>{{__('Sales')}}</th>
<th>{{__('verifiziert')}}</th>
<th>{{__('freigegeben')}}</th>
<th>{{__('Einv.')}}</th>
</tr>
<tr>
<th>#</th>
<th>{{ __('E-Mail') }}</th>
<th>{{ __('Firma') }}</th>
<th>{{ __('Vorname') }}</th>
<th>{{ __('Nachname') }}</th>
<th>{{ __('Level') }}</th>
<th>{{ __('Art') }}</th>
<th>{{ __('Mitglied') }}</th>
<th>{{ __('bis') }}</th>
<th>{{ __('Umsatz') }}</th>
<th>{{ __('Sales') }}</th>
<th>{{ __('verifiziert') }}</th>
<th>{{ __('freigegeben') }}</th>
<th>{{ __('Einv.') }}</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
{{-- <div class="mt-4 ml-4">
<a href="{{ route('admin_lead_edit', ['new']) }}" class="btn btn-sm btn-primary">{{__('Neuen Vertriebspartner erstellen')}}</a>
</div> --}}
</div>
</div>
</div>
</div>
<script>
$( document ).ready(function() {
<script>
$(document).ready(function() {
$('.datatables-leads').dataTable({
"processing": true,
"serverSide": true,
"ajax": '{!! route('admin_leads_datatable') !!}',
"order": [[0, "desc" ]],
"columns": [
{data: 'id', searchable: false},
{ data: 'email', name: 'email' },
{ data: 'company', name: 'account.company' },
{ data: 'first_name', name: 'account.first_name' },
{ data: 'last_name', name: 'account.last_name' },
{ data: 'user_level', name: 'user_level' },
{ data: 'payment_account', name: 'payment_account' },
{ data: 'payment_account_date', name: 'payment_account_date' },
{ data: 'turnover', name: 'turnover' },
{ data: 'sales_total', name: 'sales_total' },
{ data: 'confirmed', name: 'confirmed' },
{ data: 'active', name: 'active' },
{ data: 'agreement', name: 'agreement' },
],
"bLengthChange": false,
"iDisplayLength": 50,
"language": {
"url": "/js/German.json"
}
});
});
</script>
var oTable = $('#datatables-leads').DataTable({
"processing": true,
"serverSide": true,
"stateSave": true,
ajax: {
url: '{!! route('admin_leads_datatable') !!}',
data: function(d) {
d.filter_lead_type_id = $('select[name=filter_lead_type_id]').val();
}
},
"order": [
[0, "desc"]
],
"columns": [{ data: 'id', searchable: false
},
{ data: 'email', name: 'email' },
{ data: 'company', name: 'account.company' },
{ data: 'first_name', name: 'account.first_name' },
{ data: 'last_name', name: 'account.last_name' },
{ data: 'user_level', name: 'user_level' },
{ data: 'lead_type', name: 'lead_type' },
{ data: 'payment_account', name: 'payment_account' },
{ data: 'payment_account_date', name: 'payment_account_date' },
{ data: 'turnover', name: 'turnover' },
{ data: 'sales_total', name: 'sales_total' },
{ data: 'confirmed', name: 'confirmed' },
{ data: 'active', name: 'active' },
{ data: 'agreement', name: 'agreement' },
],
"bLengthChange": false,
"iDisplayLength": 50,
"language": {
"url": "/js/German.json"
}
});
$('select.on_change_select_filter').on('change', function(){
oTable.draw();
});
$('input.on_keyup_input_filter').on('keyup', function(){
oTable.draw();
});
});
</script>
@endsection

View file

@ -9,29 +9,37 @@
</div>
</div>
@endif
<div class="card-body">
<div class="float-right">
<button type="button" class="btn btn-sm btn-secondary" data-toggle="modal" data-target="#modals-edit-m-data">
<span class="far fa-edit"></span> Vertriebspartner Daten bearbeiten
</button>
</div>
<div class="card-body m-0 p-0">
<div class="table-responsive">
<table class="table card-table m-0">
<tbody>
<tr>
<th>{{ __('Name') }}</th>
<th>{{ __('Account ID') }}</th>
<th>{{ __('Rolle') }}</th>
<th>{{ __('Sponsor') }}</th>
<th style="width: 33%">{{ __('Name') }}</th>
<th style="width: 66%">{{ __('Account ID') }}</th>
</tr>
<tr>
<td>{{ \App\Services\HTMLHelper::getSalutationLang($user->account->m_salutation) }} {{ $user->account->m_first_name }} {{ $user->account->m_last_name }}</td>
<td>{{ $user->account->m_account }}</td>
</tr>
</tbody>
</table>
<table class="table card-table m-0">
<tbody>
<tr>
<th style="width: 33%">{{ __('Art Vertriebspartner') }}</th>
<th style="width: 33%">{{ __('Rolle') }}</th>
<th style="width: 33%">{{ __('Sponsor') }}</th>
</tr>
<tr>
<td>@if($user->lead_type) {{ $user->lead_type->name }} @else Standard @endif</td>
<td>@if($user->user_level){{ $user->user_level->name }}@endif</td>
<td>@if($user->m_sponsor){{ $user->getMUserSponsor() }}@endif</td>
</tr>
</tbody>
</table>
@if($user->account->m_notes)
<table class="table card-table m-0">
<tbody>
<tr>
@ -42,6 +50,7 @@
</tr>
</tbody>
</table>
@endif
</div>
</div>

View file

@ -1,26 +1,13 @@
<input type="hidden" name="m_data_edit" value="TSOK">
<div class="card-body">
<div class="form-row">
<div class="form-group col-md-4">
<label for="m_account" class="form-label">{{ __('Account ID') }} (unique)</label>
<span class="badge badge-secondary float-right">Nächste freie ID: {{$next_account_id}}</span>
<div class="form-group col-md-2">
<label for="m_account" class="form-label mb-1">ID <span class="badge badge-secondary">Nächste freie: {{$next_account_id}}</span></label>
{{ Form::text('m_account', $user->account->m_account, array('placeholder'=>__('Account ID'), 'class'=>'form-control', 'id'=>'m_account')) }}
</div>
<div class="form-group col-md-4">
<label class="form-label">{{ __('Rolle') }}</label>
<select class="selectpicker" data-style="btn-light" name="m_level" id="m_level">
{!! HTMLHelper::getUserLevelOptions($user->m_level, false) !!}
</select>
</div>
<div class="form-group col-md-4">
<label class="form-label">{{ __('Sponsor') }}</label>
<select class="selectpicker" data-style="btn-light" name="m_sponsor" id="m_sponsor" data-live-search="true">
{!! HTMLHelper::getMembersOptions($user->m_sponsor, true) !!}
</select>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-2">
<label class="form-label">{{ __('Salutation') }}</label>
<select class="selectpicker" data-style="btn-light" name="m_salutation" id="m_salutation">
@ -28,15 +15,37 @@
</select>
</div>
<div class="form-group col-md-5">
<div class="form-group col-md-4">
<label class="form-label" for="first_name">{{ __('First name') }}</label>
{{ Form::text('m_first_name', $user->account->m_first_name, array('placeholder'=>__('First name'), 'class'=>'form-control', 'id'=>'m_first_name')) }}
</div>
<div class="form-group col-md-5">
<div class="form-group col-md-4">
<label class="form-label" for="last_name">{{ __('Last name') }}</label>
{{ Form::text('m_last_name', $user->account->m_last_name, array('placeholder'=>__('Last name'), 'class'=>'form-control', 'id'=>'m_last_name')) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-md-4">
<label class="form-label" for="lead_type_id">{{ __('Art Vertriebspartner') }}</label>
<select class="selectpicker" data-style="btn-light" name="lead_type_id" id="lead_type_id">
{!! HTMLHelper::getLeadTypeOptions($user->lead_type_id, false) !!}
</select>
</div>
<div class="form-group col-md-4">
<label class="form-label" for="m_level">{{ __('Rolle') }}</label>
<select class="selectpicker" data-style="btn-light" name="m_level" id="m_level">
{!! HTMLHelper::getUserLevelOptions($user->m_level, false) !!}
</select>
</div>
<div class="form-group col-md-4">
<label class="form-label" for="m_sponsor">{{ __('Sponsor') }}</label>
<select class="selectpicker" data-style="btn-light" name="m_sponsor" id="m_sponsor" data-live-search="true">
{!! HTMLHelper::getMembersOptions($user->m_sponsor, true) !!}
</select>
</div>
</div>
<div class="form-group">
<label class="form-label" for="m_notes">{{ __('weitere Daten') }}</label>
{{ Form::textarea('m_notes', $user->account->m_notes , array('placeholder'=>__('weitere Daten'), 'class'=>'form-control', 'id'=>'m_notes', 'rows'=>4)) }}

View file

@ -1,221 +1,240 @@
<div class="card mb-4">
<h5 class="card-header">
<a href="#" class="@if($show !== 'check_lead' || !$m_data_load) collapsed @endif" data-toggle="collapse" data-target="#collapseMRegister" aria-expanded="@if($show !== 'check_lead' || !$m_data_load) false @else true @endif" aria-controls="collapseMRegister">
<i class="fa fa-caret-expand"></i> {{__('Vertriebspartner Status') }}
</a>
</h5>
<div class="collapse @if($show === 'check_lead' || $m_data_load) show @endif" id="collapseMRegister">
@if($m_data_load)
@include('admin.lead.m_data_form_edit')
@endif
@if(!$m_data_load)
@include('admin.lead.m_data_form')
@endif
<div class="card-body mb-2 pb-1">
<div class="row">
<div class="col-sm-6">
@if($user->payment_account )
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Vertriebspartner-Account aktiv')}}</strong> {{__('bis zum:')}} {{ $user->getPaymentAccountDateFormat() }}</p>
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<strong>{{__('Vertriebspartner-Account inaktiv')}}</strong></p>
@endif
@if($user->active == 1)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Daten vollständig, freigeschaltet')}}</strong>: {{ $user->getActiveDateFormat() }}</p>
{{--
@if($user->files->count())
@foreach($user->files()->whereIdentifier('contract')->get() as $file)
<a class="btn btn-secondary" href="{{ route('storage_file', [$file->id, 'user']) }}" target="_blank">Vertriebspartnervertrag.pdf</a>
@endforeach
@endif
--}}
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<strong>{{__('Daten nicht vollständigt, inaktiv')}}</strong></p>
@endif
</div>
<div class="col-sm-6">
@if($user->account_id)
@if($user->agreement)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Einverständniserklärung')}}</strong>: {{ $user->getAgreementFormat() }}
</p>
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<strong>{{__('Einverständniserklärung')}}</strong> {{ __('nicht akzeptiert') }}</p>
@endif
@if($user->account->data_protection)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Privacy policy approved')}}</strong>: {{ $user->account->getDataProtectionFormat() }}
</p>
@endif
@endif
@if($user->confirmed == 1)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('E-Mail verified')}}</strong>: {{ $user->getConfirmationDateFormat() }}</p>
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<strong>{{__('E-Mail not verified')}}</strong></p>
<a class="btn btn-warning btn-sm" href="{{route('admin_lead_new_mail_verified', $user->id)}}">Neue E-Mail für die Registrierung zusenden</a>
@endif
</div>
<div class="col-sm-12">
@if(!$user->active)
<hr>
@if($user->release_account)
<strong>Registrierung abgeschlossen {{ $user->getReleaseAccountFormat() }}</strong>
<a href="{{route('admin_lead_released', ['completed', $user->id])}}" class="btn btn-success" onclick="return confirm('Alle Daten vollständig und Vertriebspartner freischalten?');">Die Daten sind vollständigt => Vertriebspartner freischalten</a>
<button type="button" class="btn btn-sm btn-danger float-right" data-toggle="modal" data-target="#modals-register-m-data">
Vertriebspartner eine E-Mail senden => Daten nicht vollständigt
<h5 class="card-header">
<div class="row">
<div class="col-12">
Vertriebspartner
@if(!$m_data_load)
<div class="float-right">
<button type="button" class="btn btn-sm btn-secondary" data-toggle="modal" data-target="#modals-edit-m-data">
<span class="far fa-edit"></span> Vertriebspartner Daten bearbeiten
</button>
@else
<strong><span class="text-danger">Vertriebspartner muss Registrierung noch abschließen</span></strong>
</div>
@endif
@endif
@if($user->wizard !== 100)
<hr>
<div class="row">
<div class="col-sm-6">
<h5>Registrierungsprozess</h5>
@if($user->wizard === 0)
<strong>Vertrag zustimmen</strong>
@endif
@if($user->wizard === 1)
<strong>Daten anpassen</strong>
@endif
@if($user->wizard === 2)
<strong>Ausweis hochladen</strong>
@endif
@if($user->wizard === 3)
<strong>Gewerbeschein hochladen</strong>
@endif
@if($user->wizard === 4)
<strong>Paket Auswählen</strong>
@endif
@if($user->wizard === 5)
<strong>Wartet auf Überprüfung</strong><br>
<a href="{{route('admin_lead_released', ['reset_switch', $user->id])}}" class="btn btn-danger btn-sm" onclick="return confirm('Wirklich zurücksetzen?');">Vertriebspartner zurücksetzen / Paket auswählen</a>
@endif
@if($user->wizard === 20)
<strong>Registrierung abschließen / Paket Zahlung</strong><br>
<a href="{{route('admin_lead_released', ['reset_switch', $user->id])}}" class="btn btn-danger btn-sm" onclick="return confirm('Wirklich zurücksetzen?');">Vertriebspartner zurücksetzen / Paket auswählen</a>
@endif
</div>
<div class="col-sm-6">
@if($user->active && $user->wizard < 20)
<h5>Account ist aktiv</h5>
<a href="{{route('admin_lead_released', ['unlock', $user->id])}}" class="btn btn-warning btn-sm" onclick="return confirm('Alle Daten vollständig und Vertriebspartner freischalten?');">Vertriebspartner erneut freischalten</a>
@endif
</div>
</div>
@endif
</div>
</div>
<hr>
</div>
@if($user->files->count())
<div class="card-body mb-4 pb-1">
<div class="table-responsive">
<table class="table card-table m-0">
<tbody>
<tr>
<th>Ausweisdaten</th>
<th>Name</th>
<th>Größe</th>
<th class="text-right">löschen</th>
</tr>
@foreach($user->files()->whereIdentifier('id_card')->get() as $file)
<tr>
<td><a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">
@if(strtolower($file->ext ) === 'pdf')
<object data="{{ route('storage_file', [$file->id, 'user']) }}" type="application/pdf" width="160"></object>
@else
<img src="{{ route('storage_file', [$file->id, 'user']) }}" alt="" width="160">
@endif
</a>
</td>
<td><a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">{{ $file->original_name }}</a></td>
<td>{{ $file->formatBytes() }}</td>
<td class="text-right">
<a href="{{ route('admin_lead_delete_file', [$user->id, $file->id, 'upload']) }}" class="btn btn-sm" onclick="return confirm('Datei wirklich löschen?');">
<span class="ion ion-md-trash text-danger"></span>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<hr>
@if($user->account_id)
</h5>
@if($m_data_load)
@include('admin.lead.m_data_form_edit')
@endif
@if(!$m_data_load)
@include('admin.lead.m_data_form')
@endif
<div class="card mb-4" style="border: none;">
<h5 class="card-header">
{{-- <a href="#" class="@if($show !== 'check_lead' || !$m_data_load) collapsed @endif" data-toggle="collapse" data-target="#collapseMRegister" aria-expanded="@if($show !== 'check_lead' || !$m_data_load) false @else true @endif" aria-controls="collapseMRegister"> --}}
<a href="#" class="collapsed" data-toggle="collapse" data-target="#collapseMRegister" aria-expanded="false" aria-controls="collapseMRegister">
<i class="fa fa-caret-expand"></i> {{__('Vertriebspartner Infos') }}
</a>
</h5>
{{-- <div class="collapse @if($show === 'check_lead' || $m_data_load) show @endif" id="collapseMRegister"> --}}
<div class="collapse" id="collapseMRegister">
<div class="card-body mb-2 pb-1 no-border">
<div class="row">
<div class="col-sm-6">
@if($user->account->getNotice('business_license') === 'later')
<div class="row">
<div class="col-12">
<div class="bg-warning rounded py-2 px-3">
{{__('register.business_license_later')}}
@if($user->payment_account )
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Vertriebspartner-Account aktiv')}}</strong> {{__('bis zum:')}} {{ $user->getPaymentAccountDateFormat() }}</p>
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<strong>{{__('Vertriebspartner-Account inaktiv')}}</strong></p>
@endif
@if($user->active == 1)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Daten vollständig, freigeschaltet')}}</strong>: {{ $user->getActiveDateFormat() }}</p>
{{--
@if($user->files->count())
@foreach($user->files()->whereIdentifier('contract')->get() as $file)
<a class="btn btn-secondary" href="{{ route('storage_file', [$file->id, 'user']) }}" target="_blank">Vertriebspartnervertrag.pdf</a>
@endforeach
@endif
--}}
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<strong>{{__('Daten nicht vollständigt, inaktiv')}}</strong></p>
@endif
</div>
<div class="col-sm-6">
@if($user->account_id)
@if($user->agreement)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Einverständniserklärung')}}</strong>: {{ $user->getAgreementFormat() }}
</p>
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<strong>{{__('Einverständniserklärung')}}</strong> {{ __('nicht akzeptiert') }}</p>
@endif
@if($user->account->data_protection)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Privacy policy approved')}}</strong>: {{ $user->account->getDataProtectionFormat() }}
</p>
@endif
@endif
@if($user->confirmed == 1)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('E-Mail verified')}}</strong>: {{ $user->getConfirmationDateFormat() }}</p>
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<strong>{{__('E-Mail not verified')}}</strong></p>
<a class="btn btn-warning btn-sm" href="{{route('admin_lead_new_mail_verified', $user->id)}}">Neue E-Mail für die Registrierung zusenden</a>
@endif
</div>
<div class="col-sm-12">
@if(!$user->active)
<hr>
@if($user->release_account)
<strong>Registrierung abgeschlossen {{ $user->getReleaseAccountFormat() }}</strong>
<a href="{{route('admin_lead_released', ['completed', $user->id])}}" class="btn btn-success" onclick="return confirm('Alle Daten vollständig und Vertriebspartner freischalten?');">Die Daten sind vollständigt => Vertriebspartner freischalten</a>
<button type="button" class="btn btn-sm btn-danger float-right" data-toggle="modal" data-target="#modals-register-m-data">
Vertriebspartner eine E-Mail senden => Daten nicht vollständigt
</button>
@else
<strong><span class="text-danger">Vertriebspartner muss Registrierung noch abschließen</span></strong>
@endif
@endif
@if($user->wizard !== 100)
<hr>
<div class="row">
<div class="col-sm-6">
<h5>Registrierungsprozess</h5>
@if($user->wizard === 0)
<strong>Vertrag zustimmen</strong>
@endif
@if($user->wizard === 1)
<strong>Daten anpassen</strong>
@endif
@if($user->wizard === 2)
<strong>Ausweis hochladen</strong>
@endif
@if($user->wizard === 3)
<strong>Gewerbeschein hochladen</strong>
@endif
@if($user->wizard === 4)
<strong>Paket Auswählen</strong>
@endif
@if($user->wizard === 5)
<strong>Wartet auf Überprüfung</strong><br>
<a href="{{route('admin_lead_released', ['reset_switch', $user->id])}}" class="btn btn-danger btn-sm" onclick="return confirm('Wirklich zurücksetzen?');">Vertriebspartner zurücksetzen / Paket auswählen</a>
@endif
@if($user->wizard === 20)
<strong>Registrierung abschließen / Paket Zahlung</strong><br>
<a href="{{route('admin_lead_released', ['reset_switch', $user->id])}}" class="btn btn-danger btn-sm" onclick="return confirm('Wirklich zurücksetzen?');">Vertriebspartner zurücksetzen / Paket auswählen</a>
@endif
</div>
<div class="col-sm-6">
@if($user->active && $user->wizard < 20)
<h5>Account ist aktiv</h5>
<a href="{{route('admin_lead_released', ['unlock', $user->id])}}" class="btn btn-warning btn-sm" onclick="return confirm('Alle Daten vollständig und Vertriebspartner freischalten?');">Vertriebspartner erneut freischalten</a>
@endif
</div>
</div>
@endif
</div>
</div>
<hr>
</div>
@if($user->files->count())
<div class="card-body mb-4 pb-1">
<div class="table-responsive">
<table class="table card-table m-0">
<tbody>
<tr>
<th>Ausweisdaten</th>
<th>Name</th>
<th>Größe</th>
<th class="text-right">löschen</th>
</tr>
@foreach($user->files()->whereIdentifier('id_card')->get() as $file)
<tr>
<td><a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">
@if(strtolower($file->ext ) === 'pdf')
<object data="{{ route('storage_file', [$file->id, 'user']) }}" type="application/pdf" width="160"></object>
@else
<img src="{{ route('storage_file', [$file->id, 'user']) }}" alt="" width="160">
@endif
</a>
</td>
<td><a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">{{ $file->original_name }}</a></td>
<td>{{ $file->formatBytes() }}</td>
<td class="text-right">
<a href="{{ route('admin_lead_delete_file', [$user->id, $file->id, 'upload']) }}" class="btn btn-sm" onclick="return confirm('Datei wirklich löschen?');">
<span class="ion ion-md-trash text-danger"></span>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<hr>
@if($user->account_id)
@if($user->account->getNotice('business_license') === 'later')
<div class="row">
<div class="col-12">
<div class="bg-warning rounded py-2 px-3">
{{__('register.business_license_later')}}
</div>
</div>
</div>
@endif
@if($user->account->getNotice('business_license') === 'non')
<div class="row">
<div class="col-12">
<div class="bg-warning rounded py-2 px-3">
<div class="font-weight-semibold mb-1">{{__('register.business_license_non')}}</div>
<em>{{$user->account->getNotice('business_license_reason')}}</em>
</div>
</div>
</div>
@endif
@endif
<div class="table-responsive">
<table class="table card-table m-0">
<tbody>
<tr>
<th>Gewerbenachweis</th>
<th>Name</th>
<th>Größe</th>
<th class="text-right">löschen</th>
</tr>
@foreach($user->files()->whereIdentifier('business_license')->get() as $file)
<tr>
<td>
<a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">
@if(strtolower($file->ext ) == 'pdf')
<object data="{{ route('storage_file', [$file->id, 'user']) }}" type="application/pdf" width="160"></object>
@else
<img src="{{ route('storage_file', [$file->id, 'user']) }}" alt="" width="160">
@endif
</a>
</td>
<td><a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">{{ $file->original_name }}</a></td>
<td>{{ $file->formatBytes() }}</td>
<td class="text-right">
<a href="{{ route('admin_lead_delete_file', [$user->id, $file->id, 'upload']) }}" class="btn btn-sm" onclick="return confirm('Datei wirklich löschen?');">
<span class="ion ion-md-trash text-danger"></span>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endif
@if($user->account->getNotice('business_license') === 'non')
<div class="row">
<div class="col-12">
<div class="bg-warning rounded py-2 px-3">
<div class="font-weight-semibold mb-1">{{__('register.business_license_non')}}</div>
<em>{{$user->account->getNotice('business_license_reason')}}</em>
</div>
</div>
</div>
@endif
@endif
<div class="table-responsive">
<table class="table card-table m-0">
<tbody>
<tr>
<th>Gewerbenachweis</th>
<th>Name</th>
<th>Größe</th>
<th class="text-right">löschen</th>
</tr>
@foreach($user->files()->whereIdentifier('business_license')->get() as $file)
<tr>
<td>
<a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">
@if(strtolower($file->ext ) == 'pdf')
<object data="{{ route('storage_file', [$file->id, 'user']) }}" type="application/pdf" width="160"></object>
@else
<img src="{{ route('storage_file', [$file->id, 'user']) }}" alt="" width="160">
@endif
</a>
</td>
<td><a target="_blank" href="{{ route('storage_file', [$file->id, 'user']) }}">{{ $file->original_name }}</a></td>
<td>{{ $file->formatBytes() }}</td>
<td class="text-right">
<a href="{{ route('admin_lead_delete_file', [$user->id, $file->id, 'upload']) }}" class="btn btn-sm" onclick="return confirm('Datei wirklich löschen?');">
<span class="ion ion-md-trash text-danger"></span>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
@endif
</div>
</div>
@endif
</div>
</div>
</div>

View file

@ -0,0 +1,165 @@
@if($m_data_error)
<div class="row">
<div class="col-sm-12">
<div class="alert alert-danger">
<ul>
<li>{{ $m_data_error }}</li>
</ul>
</div>
</div>
</div>
@endif
<div class="card mb-4">
<h5 class="card-header">
<div class="row">
<div class="col-md-12">
{{ __('White-Label') }}
</div>
</div>
</h5>
<div class="card-body">
{!! Form::open(['url' => route('admin_lead_update')."?show=".$show, 'class' => 'form-horizontal', 'id'=>'white-label-form']) !!}
<input type="hidden" name="user_id" value="{{$user->id}}">
<div class="form-row">
<div class="form-group col-md-12">
<label class="form-label" for="whitelabel_products">Produkte für White-Label hinzufügen</label>
<select class="selectpicker" name="whitelabel_products[]" id="whitelabel_products" data-style="btn-light" data-live-search="true" multiple>
{!! HTMLHelper::getProductsWhiteLabelOptions([], $user->whitelabel_products()->pluck('product_id')->toArray(), 1) !!}
</select>
<p class="badge">Hier werden alle Produkte angzeigt, die unter Produkte als White-Label markiert sind.</p>
<div>
<button type="submit" name="action" value="add_whitelabel_products" class="btn btn-sm btn-submit">Produkte hinzufügen</button>&nbsp;
</div>
</div>
</div>
@foreach($user->whitelabel_products as $wlp)
@if($wlp->product)
<div class="card shadow-none bg-transparent mb-2 p-4" style="border-color:rgba(24, 28, 33, 0.2) !important">
<div class="form-row">
<div class="col-md-12">
<div class="float-right">
<a href="{{ route('admin_lead_remove', ['remove_whitelabel_product', $user->id, $wlp->id]) }}?show={{ $show }}" class="btn btn-sm btn-danger mt-2 mb-2" onclick="return confirm('Produkt wirklich entfernen?');">Produkt entfernen</a>
</div>
<h4>{{ $wlp->product->getWhiteLableName() }}</h4>
</div>
@foreach($wlp->whitelabel_images as $wlp_image)
<div class="col-md-12">
<hr>
</div>
<div class="col-md-3 col-lg-2">
<img class="img-fluid" alt="" style="max-height: 200px" src="{{ route('product_image', [$wlp_image->slug]) }}">
</div>
<div class="col-md-9 col-lg-10">
<label class="form-label" for="image_wl_attributes_{{ $wlp_image->id }}">für {{ __('Varianten') }}</label>
<select class="selectpicker" name="image_wl_attributes[{{ $wlp_image->id }}][]" id="image_wl_attributes_{{ $wlp_image->id }}" data-style="btn-light" data-live-search="true" multiple>
{!! HTMLHelper::getProductAttributesOptions($wlp->product->attribute_variants, $wlp_image->attributes, false, 1) !!}
</select>
<a href="{{ route('admin_lead_remove', ['remove_whitelabel_label', $user->id, $wlp->id, $wlp_image->id]) }}?show={{ $show }}" class="btn btn-sm btn-danger mt-2 mb-2" onclick="return confirm('Etikett wirklich löschen?');">Etikett löschen</a>
</div>
@endforeach
<div class="form-group col-md-12">
<hr>
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-upload-white-label"
data-id="{{ $wlp->id }}">{{__('White Label VP Etikett hochladen')}}</button>
</div>
</div>
</div>
@endif
@endforeach
<div class="form-group">
<button type="submit" name="action" value="update_whitelabel_products" class=" float-right btn btn-sm btn-submit">{{ __('save') }}</button>&nbsp;
</div>
{!! Form::close() !!}
</div>
</div>
<!-- Modal template -->
<div class="modal fade" id="modals-upload-white-label">
<div class="modal-dialog">
<div class="modal-content">
@csrf
<input type="hidden" name="id">
<input type="hidden" name="action" value="upload-white-label">
<style>
/* Dropzone */
.dropzone {
min-height: 230px;
border: 2px dashed rgba(0, 0, 0, 0.3);
background: white;
border-radius: 6px;
}
.dropzone .dz-message {
font-size: 28px;
}
</style>
<div class="modal-header">
<h5 class="modal-title">Upload Etikett White-Label Produkt</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="card-body">
<form method="POST" action="{{ route('admin_lead_update') }}?show={{ $show }}" accept-charset="UTF-8" class="avatar" enctype="multipart/form-data">
@csrf
<input type="hidden" name="id" value="">
<input type="hidden" name="user_id" value="{{$user->id}}">
<input type="hidden" name="upload_type" value="uwllogo">
<input type="hidden" name="action" value="upload_white_label_image">
<div class="slim_holder text-center">
<div class="slim" style="margin:20px auto;"
data-label='<span class="text-green">Foto-Upload</span><br>(Datei suchen oder Drag & Drop)'
data-fetcher="fetch.php"
data-size="600,600"
data-min-size="200,200"
data-max-file-size="10"
data-status-image-too-small="Bild zu klein<br>min. $0 Pixel"
data-status-file-type="Ungültige Datei<br>bitte nur: $0"
data-status-file-size="Die Datei ist zu groß<br>max. $0 MB"
data-button-confirm-label="bestätigen"
data-button-cancel-label="abbrechen"
data-button-confirm-title="bestätigen"
data-button-cancel-title="abbrechen"
data-button-rotate-title="drehen"
data-ratio="1:1">
<input type="file" name="images[]" required />
</div>
<br>
<button class="btn btn-primary" type="submit">Bild speichern</button>
</div>
</form>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
</div>
</div>
</div>
</div>
<script>
$( document ).ready(function() {
$('#modals-upload-white-label').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
});
});
</script>

View file

@ -0,0 +1,58 @@
@if($m_data_error)
<div class="row">
<div class="col-sm-12">
<div class="alert alert-danger">
<ul>
<li>{{ $m_data_error }}</li>
</ul>
</div>
</div>
</div>
@endif
<div class="card-body m-0 p-0">
<div class="table-responsive">
<table class="table card-table m-0">
<tbody>
<tr>
<th style="width: 33%">{{ __('Name') }}</th>
<th style="width: 66%">{{ __('Account ID') }}</th>
</tr>
<tr>
<td>{{ \App\Services\HTMLHelper::getSalutationLang($user->account->m_salutation) }} {{ $user->account->m_first_name }} {{ $user->account->m_last_name }}</td>
<td>{{ $user->account->m_account }}</td>
</tr>
</tbody>
</table>
<table class="table card-table m-0">
<tbody>
<tr>
<th style="width: 33%">{{ __('Art Vertriebspartner') }}</th>
<th style="width: 33%">{{ __('Rolle') }}</th>
<th style="width: 33%">{{ __('Sponsor') }}</th>
</tr>
<tr>
<td>@if($user->lead_type) {{ $user->lead_type->name }} @else Standard @endif</td>
<td>@if($user->user_level){{ $user->user_level->name }}@endif</td>
<td>@if($user->m_sponsor){{ $user->getMUserSponsor() }}@endif</td>
</tr>
</tbody>
</table>
@if($user->account->m_notes)
<table class="table card-table m-0">
<tbody>
<tr>
<th>{{ __('weitere Daten') }}</th>
</tr>
<tr>
<td>{{$user->account->m_notes}}</td>
</tr>
</tbody>
</table>
@endif
</div>
</div>

View file

@ -0,0 +1,108 @@
@extends('layouts.layout-2')
@section('content')
<div class="card">
<h6 class="card-header">
{{__('Arten Vertriebspartner')}}
</h6>
<div class="card-datatable table-responsive">
<table class="datatables-style table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('Name')}}</th>
<th>{{__('Status')}}</th>
</tr>
</thead>
<tbody>
@foreach($values as $value)
<tr>
<td>
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-default"
data-id="{{ $value->id }}"
data-name="{{ $value->name }}"
data-active="{{ $value->active }}">
<span class="far fa-edit"></span>
</button>
</td>
<td>{{ $value->name }}</td>
<td data-sort="{{ $value->active }}">{!! get_active_badge($value->active) !!}</td>
</tr>
@endforeach
</tbody>
</table>
<div class="mt-4 ml-4">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-default"
data-id="new"
data-pos=""
data-name=""
data-short=""
data-max_price=""
data-show_on="[]"
data-default="1"
data-active="1"
>{{__('Neue Art Vertriebspartner hinzufügen')}}</button>
</div>
</div>
</div>
<!-- Modal template -->
<div class="modal fade" id="modals-default">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('admin_lead_types_store') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<div class="modal-header">
<h5 class="modal-title">Art Vertriebspartner</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="name" class="form-label">{{__('Name')}}</label>
<input type="text" class="form-control" name="name" placeholder="{{__('Bezeichnung')}}">
</div>
</div>
<div class="form-row">
<div class="form-group col-6">
<label class="custom-control custom-checkbox m-2">
<input type="checkbox" class="custom-control-input" name="active" checked>
<span class="custom-control-label">{{__('active')}}</span>
</label>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary">{{__('save')}}</button>
</div>
</form>
</div>
</div>
<script>
$( document ).ready(function() {
$('#modals-default').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='name']").val(button.data('name'));
$(this).find(".modal-body input[name='active']").prop( "checked", button.data('active'));
$('.selectpicker').selectpicker('refresh');
});
$('.datatables-style').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"language": {
"url": "/js/German.json"
}
});
});
</script>
@endsection