#51 2 Business Points edit / add, user dashboard

This commit is contained in:
Kevin Adametz 2022-07-22 13:43:24 +02:00
parent 263cf93a1e
commit dfd049aaa9
25 changed files with 1291 additions and 381 deletions

View file

@ -7,6 +7,8 @@ use Request;
use App\Services\Payment;
use App\Models\UserInvoice;
use App\Services\HTMLHelper;
use App\Models\UserSalesVolume;
use App\Services\BusinessPlan\SalesPointsVolume;
class BusinessPointsController extends Controller
{
@ -24,45 +26,108 @@ class BusinessPointsController extends Controller
public function index()
{
$filter_members = UserSalesVolume::join('users', 'user_id', '=', 'users.id')
->groupBy('user_id')->join('user_accounts', 'account_id', '=', 'user_accounts.id')
->select('users.id', 'users.email', 'user_accounts.first_name', 'user_accounts.last_name')->get();
$this->setFilterVars();
$data = [
'filter_months' => HTMLHelper::$months,
'filter_years' => HTMLHelper::getYearRange(),
'filter_members' => $filter_members,
];
return view('admin.payment.invoice', $data);
return view('admin.business.points', $data);
}
public function store(){
$data = Request::all();
if(!isset($data['action'])){
return back();
}
if(!isset($data['change_member_key']) || $data['change_member_key'] !== config('mivita.edit_data_pass')){
\Session()->flash('alert-error', 'Das Passwort ist falsch.');
return back();
}
if(!isset($data['is_checked_action'])){
\Session()->flash('alert-error', 'Änderung nicht bestätigt');
return back();
}
if($data['action'] === 'add_user_sales_volume'){
SalesPointsVolume::addSalesPointsVolume($data);
return back(); }
if($data['action'] === 'edit_user_sales_volume'){
SalesPointsVolume::editSalesPointsVolume($data);
return back();
}
dd($data);
return redirect(route('admin_business_points'));
//
//
/*
$add_credit_error = false;
if(!isset($data['member_id']) || !$user = User::find($data['member_id'])){
$add_credit_error = 'Vertriebspartner nicht gefunden';
}
if(!isset($data['credit'])){
$add_credit_error = 'Bitte Betrag eingeben';
}
if(!isset($data['message'])){
$add_credit_error = 'Bitte Mitteilung eingeben';
}
if($add_credit_error){
$data = $this->makeData();
$data['add_credit_error'] = $add_credit_error;
return view('admin.payment.credit.index', $data);
}
// $credit = Util::reFormatNumber($data['credit']);
//$credit = number_format($credit, 2, '.', '');
//Payment::addUserCreditMargin($user, $credit, 3, $data['message']);
\Session()->flash('alert-success', "Guthaben hinzugefügt");
}*/
}
private function setFilterVars(){
if(!session('invoice_filter_month')){
session(['invoice_filter_month' => intval(date('m'))]);
if(!session('points_filter_month')){
session(['points_filter_month' => intval(date('m'))]);
}
if(!session('invoice_filter_year')){
session(['invoice_filter_year' => intval(date('Y'))]);
if(!session('points_filter_year')){
session(['points_filter_year' => intval(date('Y'))]);
}
if(Request::get('invoice_filter_name')){
session(['invoice_filter_name' => Request::get('invoice_filter_name')]);
if(Request::get('points_filter_member_id')){
session(['points_filter_member_id' => Request::get('points_filter_member_id')]);
}
if(Request::get('invoice_filter_month')){
session(['invoice_filter_month' => Request::get('invoice_filter_month')]);
if(Request::get('points_filter_month')){
session(['points_filter_month' => Request::get('points_filter_month')]);
}
if(Request::get('invoice_filter_year')){
session(['invoice_filter_year' => Request::get('invoice_filter_year')]);
if(Request::get('points_filter_year')){
session(['points_filter_year' => Request::get('points_filter_year')]);
}
}
private function initSearch($archive = false, $request = true)
{
$this->setFilterVars();
$query = UserInvoice::with('shopping_order')->with('shopping_order.shopping_user')->select('user_invoices.*')
->where('user_invoices.month', '=', Request::get('invoice_filter_month'))
->where('user_invoices.year', '=', Request::get('invoice_filter_year'));
if(Request::get('invoice_filter_name')){
$query->where('shopping_order.shopping_user.billing_firstname', 'LIKE', '%'.Request::get('invoice_filter_name').'%');
$query->where('shopping_order.shopping_user.billing_lastname', 'LIKE', '%'.Request::get('invoice_filter_name').'%');
$query->where('shopping_order.shopping_user.billing_email', 'LIKE', '%'.Request::get('invoice_filter_name').'%');
$query = UserSalesVolume::with('user', 'user.account')->with('shopping_order')->select('user_sales_volumes.*')
->where('user_sales_volumes.month', '=', Request::get('points_filter_month'))
->where('user_sales_volumes.year', '=', Request::get('points_filter_year'));
if(Request::get('points_filter_member_id')){
$query->where('user_sales_volumes.user_id', '=', Request::get('points_filter_member_id'));
}
//->orderBy('created_at', 'DESC');
@ -77,54 +142,51 @@ class BusinessPointsController extends Controller
$query = $this->initSearch();
return \DataTables::eloquent($query)
->addColumn('id', function (UserInvoice $UserInvoice) {
if($UserInvoice->shopping_order->auth_user_id){
return '<a href="' . route('admin_sales_users_detail', [$UserInvoice->shopping_order->id]) . '" class="btn icon-btn btn-sm btn-primary"><span class="fa fa-edit"></span></a>';
->addColumn('id', function (UserSalesVolume $UserSalesVolume) {
return '<button type="button" class="btn btn-xs btn-secondary" data-toggle="modal" data-target="#modals-load-content"
data-id="'.$UserSalesVolume->id.'"
data-action="edit_user_sales_volume"
data-back=""
data-modal="modal-xl"
data-init_from="user"
data-route="'.route('modal_load').'"><span class="far fa-eye"></span></button>';
})
->addColumn('order', function (UserSalesVolume $UserSalesVolume) {
if($UserSalesVolume->shopping_order){
if($UserSalesVolume->status === 1){
return '<a href="' . route('admin_sales_users_detail', [$UserSalesVolume->shopping_order->id]) . '" class="btn btn-xs btn-primary">'.$UserSalesVolume->shopping_order->id.'</a>';
}
if($UserSalesVolume->status === 2 || $UserSalesVolume->status === 3){
return '<a href="' . route('admin_sales_customers_detail', [$UserSalesVolume->shopping_order->id]) . '" class="btn btn-xs btn-secondary">'.$UserSalesVolume->shopping_order->id.'</a>';
}
}
return '<a href="' . route('admin_sales_customers_detail', [$UserInvoice->shopping_order->id]) . '" class="btn icon-btn btn-sm btn-primary"><span class="fa fa-edit"></span></a>';
return '';
})
->addColumn('total_shipping', function (UserInvoice $UserInvoice) {
return '<span class="no-line-break">'.$UserInvoice->shopping_order->getFormattedTotalShipping()." €</span>";
->addColumn('total_net', function (UserSalesVolume $UserSalesVolume) {
return formatNumber($UserSalesVolume->total_net).' &euro;';
})
->addColumn('created_at', function (UserInvoice $UserInvoice) {
return $UserInvoice->created_at->format("d.m.Y");
->addColumn('first_name', function (UserSalesVolume $UserSalesVolume) {
return isset($UserSalesVolume->user) ? $UserSalesVolume->user->account->first_name : '';
})
/*
->addColumn('shipping_order', function (UserInvoice $UserInvoice) {
$ret = "";
foreach($UserInvoice->shopping_order_items as $shopping_order_item){
$ret .= $shopping_order_item->product->name."<br>";
}
return $ret;
->addColumn('last_name', function (UserSalesVolume $UserSalesVolume) {
return isset($UserSalesVolume->user) ? $UserSalesVolume->user->account->last_name : '';
})
*/
->addColumn('txaction', function (UserInvoice $UserInvoice) {
if($UserInvoice->shopping_order){
return Payment::getShoppingOrderBadge($UserInvoice->shopping_order);
}
return "-";
->addColumn('email', function (UserSalesVolume $UserSalesVolume) {
return isset($UserSalesVolume->user) ? $UserSalesVolume->user->email : '';
})
->addColumn('status', function (UserInvoice $UserInvoice) {
return '<a href="#" data-toggle="modal" data-target="#modals-load-content" data-modal="modal-lg"
data-id="'.$UserInvoice->id.'" data-route="'.route('modal_load').'" data-action="user-credit-status" data-view="">
<span class="badge badge-pill badge-'.$UserInvoice->getStatusColor().'">'.$UserInvoice->getStatusType().'</span>
</a>';
->addColumn('status', function (UserSalesVolume $UserSalesVolume) {
return '<span class="badge badge-pill badge-'.$UserSalesVolume->getStatusColor().'">'.$UserSalesVolume->getStatusType().'</span>';
})
->addColumn('invoice', function (UserInvoice $UserInvoice) {
$ret = "";
$ret .= '<a href="'.route('storage_file', [$UserInvoice->shopping_order->id, 'invoice', 'download']).'" class="btn btn-primary btn-xs"><i class="fa fa-download"></i></a> ';
$ret .= '<a href="'.route('storage_file', [$UserInvoice->shopping_order->id, 'invoice', 'stream']).'" target="_blank" class="btn btn-warning btn-xs"><i class="fa fa-eye"></i></a>';
return $ret;
->addColumn('message', function (UserSalesVolume $UserSalesVolume) {
return '<span class="no-line-break">'.$UserSalesVolume->message.'</span>';
})
->orderColumn('id', 'id $1')
->orderColumn('invoice_number', 'invoice_number $1')
->orderColumn('txaction', 'txaction $1')
->orderColumn('shipped', 'shipped $1')
->orderColumn('total_shipping', 'total_shipping $1')
->rawColumns(['id', 'shipping_order', 'txaction', 'total_shipping', 'status', 'txaction', 'invoice'])
->orderColumn('order', 'order $1')
->orderColumn('status', 'status $1')
->orderColumn('status', 'message $1')
->rawColumns(['id', 'order', 'status', 'message', 'total_net'])
->make(true);
}
}

View file

@ -12,6 +12,7 @@ use App\Models\ShoppingUser;
use App\Services\HTMLHelper;
use App\Models\HomepartyUser;
use App\Models\ShoppingOrder;
use App\Models\UserSalesVolume;
use App\Services\BusinessPlan\TreeCalcBot;
class ModalController extends Controller
@ -83,7 +84,6 @@ class ModalController extends Controller
$ret = view("user.shop.sales.modal_api_order_shipping_detail", compact('shopping_order', 'isAdmin', 'data'))->render();
}
if($data['action'] === 'user-order-my-delivery-show'){
$user = \Auth::user();
$ret = view("admin.modal.show_user_customers", compact('user', 'data'))->render();
@ -120,6 +120,17 @@ class ModalController extends Controller
$route = "";
$ret = view("admin.modal.business_user_detail", compact('TreeCalcBot', 'user', 'data'))->render();
}
if($data['action'] === 'edit_user_sales_volume'){
$userSalesVolume = UserSalesVolume::findOrFail($data['id']);
$route = route('admin_business_points_store', );
$ret = view("admin.business.modal_edit_points", compact('userSalesVolume', 'data', 'route'))->render();
}
if($data['action'] === 'add_user_sales_volume'){
$userSalesVolume = new UserSalesVolume();
$route = route('admin_business_points_store', );
$ret = view("admin.business.modal_add_points", compact('userSalesVolume', 'data', 'route'))->render();
}
}
return response()->json(['response' => $data, 'html'=>$ret, 'status'=>$status]);
}

View file

@ -133,7 +133,8 @@ class SalesController extends Controller
return redirect(route('admin_sales_customers'));
}
$filter_user_shops = ShoppingOrder::join('user_shops', 'user_shop_id', '=', 'user_shops.id')->orderBy('slug')->get()->pluck('slug', 'id')->unique()->toArray();
$filter_members = ShoppingOrder::join('users', 'member_id', '=', 'users.id')->groupBy('member_id')->join('user_accounts', 'account_id', '=', 'user_accounts.id')->select('users.id', 'users.email', 'user_accounts.first_name', 'user_accounts.last_name')->get(); //->pluck('email', 'id')->unique()->toArray();
$filter_members = ShoppingOrder::join('users', 'member_id', '=', 'users.id')->groupBy('member_id')->join('user_accounts', 'account_id', '=', 'user_accounts.id')->select('users.id', 'users.email', 'user_accounts.first_name', 'user_accounts.last_name')->get();
//->pluck('email', 'id')->unique()->toArray();
$data = [
'filter_user_shops' => $filter_user_shops,
'filter_members' => $filter_members,

View file

@ -38,6 +38,7 @@ class ShopSalesController extends Controller
'shopping_order' => $shopping_order,
'isAdmin' => false,
];
return view('user.shop.sales.order_detail', $data);
}

View file

@ -102,12 +102,22 @@ class UserSalesVolume extends Model
public static $statusTypes = [
0 => 'nicht zugewiesen',
1 => 'hinzugefügt aus Beraterbestellung',
2 => 'hinzugefügt aus Shopbestellung',
3 => 'hinzugefügt aus Shopbestellung / pending',
1 => 'Beraterbestellung', //hinzugefügt aus
2 => 'Shopbestellung', //hinzugefügt aus
3 => 'Shopbestellung / pending', //hinzugefügt aus
4 => 'Gutschrift', //hinzugefügt aus
10 => ''
];
public static $statusColors = [
0 => 'warning',
1 => 'success',
2 => 'secondary',
3 => 'warning',
4 => 'info',
10 => 'danger',
];
public function shopping_order()
{
return $this->belongsTo(ShoppingOrder::class);
@ -133,10 +143,21 @@ class UserSalesVolume extends Model
return isset($this->attributes['date']) ? $this->attributes['date'] : NULL;
}
public function getPointsSum(){
return $this->month_points + $this->month_shop_points;
}
public function getTotalNetSum(){
return $this->month_total_net + $this->month_shop_total_net;
}
public function getStatusType(){
return isset(self::$statusTypes[$this->status]) ? self::$statusTypes[$this->status] : "";
}
public function getStatusColor(){
return isset(self::$statusColors[$this->status]) ? self::$statusColors[$this->status] : "default";
}
public function getFormatedMonthYear(){
return str_pad($this->month, 2, "0", STR_PAD_LEFT)."/".$this->year;
}

View file

@ -2,6 +2,7 @@
namespace App\Services\BusinessPlan;
use App\User;
use App\Services\Util;
use App\Models\ShoppingOrder;
use App\Models\UserSalesVolume;
@ -29,7 +30,7 @@ class SalesPointsVolume
$form_user = User::find($form_user_id);
$shoppingOrder->user_sales_volume->user_id = $to_user_id;
$shoppingOrder->user_sales_volume->message = 'Punkte zugewiesen am: '.date('d.m.Y');
$shoppingOrder->user_sales_volume->message = 'zugewiesen: '.date('d.m.Y');
$syslog = $shoppingOrder->user_sales_volume->syslog;
$syslog[date('d.m.Y-h:i:s')] = 'change form: #'.$form_user_id.' '.$form_user->email.' to: #'.$to_user_id.' '.$to_user->email;
@ -57,7 +58,7 @@ class SalesPointsVolume
foreach($userSalesVolumes as $userSalesVolume){
switch ($userSalesVolume->status) {
case 1: //Bestellung
case 1: //Bestellung Berater
$month_points += $userSalesVolume->points;
$month_total_net += $userSalesVolume->total_net;
break;
@ -65,6 +66,10 @@ class SalesPointsVolume
$month_shop_points += $userSalesVolume->points;
$month_shop_total_net += $userSalesVolume->total_net;
break;
case 4: //add Berater
$month_points += $userSalesVolume->points;
$month_total_net += $userSalesVolume->total_net;
break;
}
$userSalesVolume->month_shop_points = $month_shop_points;
$userSalesVolume->month_shop_total_net = $month_shop_total_net;
@ -163,4 +168,71 @@ class SalesPointsVolume
}
public static function editSalesPointsVolume($data){
$user_sales_volume = UserSalesVolume::findOrFail($data['id']);
if(!$user_sales_volume->isCurrentMonthYear()){
\Session()->flash('alert-error', 'Änderung muss im selben Monat sein');
return;
}
$old_points = $user_sales_volume->points;
$old_total_net = $user_sales_volume->total_net;
$user_sales_volume->total_net = Util::reFormatNumber($data['total_net']);
$user_sales_volume->points = intval($data['points']);
$user_sales_volume->message = 'geändert: '.date('d.m.Y');
$syslog = $user_sales_volume->syslog;
$syslog[date('d.m.Y-h:i:s')] = 'edit points: #'.$old_points.' '.$user_sales_volume->points .' total: #'.$old_total_net.' '.$user_sales_volume->total_ne;
$user_sales_volume->syslog = $syslog;
$user_sales_volume->save();
self::reCalculateSalesPointsVolume($user_sales_volume->user_id, $user_sales_volume->month, $user_sales_volume->year);
\Session()->flash('alert-success', "Points geändert");
return;
}
public static function addSalesPointsVolume($data){
if(!isset($data['user_id'])){
\Session()->flash('alert-error', 'Kein Berater ausgewählt');
return;
}
$user = User::findOrFail($data['user_id']);
$month = date('m');
$year = date('Y');
$date = date('d.m.Y');
$total_net = isset($data['total_net']) ? Util::reFormatNumber($data['total_net']) : 0;
$points = isset($data['points']) ? intval($data['points']) : 0;
$syslog[date('d.m.Y-h:i:s')] = 'add points: #'.$points.' total: #'.$total_net;
$user_sales_volume = UserSalesVolume::create([
'user_id' => $user->id,
'shopping_order_id' => null,
'month' => $month,
'year' => $year,
'date' => $date,
'points' => $points,
'total_net' => $total_net,
'message' => 'hinzugefügt: '.date('d.m.Y'),
'syslog' => $syslog,
'status' => 4,
]);
self::reCalculateSalesPointsVolume($user_sales_volume->user_id, $user_sales_volume->month, $user_sales_volume->year);
\Session()->flash('alert-success', "Points hinzugefügt");
}
}

View file

@ -25,6 +25,18 @@ class Payment
'NULL' => 'keine Zahlung',
];
public static $txaction_filter_text = [
'paid' => "Zahlung bezahlt",
'appointed' => "Zahlung offen",
'failed' => "Zahlung abbruch",
'extern' => "Extern offen", //offen
'extern_paid' => "Extern bezahlt",
'invoice_open' => "Rechnung offen",
'invoice_paid' => "Rechnung bezahlt",
'invoice_non' => "Rechnung keine Zahlung",
'NULL' => 'keine Zahlung',
];
public static $txaction_invoice = [
'invoice_open' => "Rechnung offen",
'invoice_paid' => "Rechnung bezahlt",

View file

@ -52,7 +52,7 @@ class Util
}
public static function _format_number($value){
return preg_replace("/[^0-9,]/", "", $value);
return preg_replace("/[^0-9,-]/", "", $value);
}

View file

@ -476,8 +476,9 @@ class User extends Authenticatable
public function getUserSalesVolumeBy($month, $year, $key)
{
//NOTE check ist, cant change month year !
if($this->userSalesVolume === false){
$this->userSalesVolume = UserSalesVolume::where('user_id', $this->id)->where('month', $month)->where('year', $year)->get()->last();
$this->userSalesVolume = $this->getUserSalesVolume($month, $year, 'first');
}
if($this->userSalesVolume){
switch ($key) {
@ -507,7 +508,18 @@ class User extends Authenticatable
}
}
return 0;
}
public function getUserSalesVolume($month, $year, $record = 'get')
{
$query = UserSalesVolume::where('user_id', $this->id)->where('month', $month)->where('year', $year)->orderBy('id', 'DESC');
switch ($record) {
case 'get':
return $query->get();
break;
case 'first':
return $query->first();
break;
}
}
}

View file

@ -0,0 +1,65 @@
{!! Form::open(['url' => $route, 'class' => 'modal-content', 'enctype' => 'multipart/form-data']) !!}
<div class="modal-header">
<h5 class="modal-title">
Business Points
<span class="font-weight-light">hinzufügen</span>
</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<input type="hidden" name="action" value="{{$data['action']}}">
<input type="hidden" name="id" value="{{$data['id']}}">
<div class="form-row">
<div class="form-group col">
<label for="change_member_key" class="form-label">{{ __('Passwort eingeben') }}*</label>
<input type="text" class="form-control" name="change_member_key" id="change_member_key"
placeholder="mivita" required>
</div>
</div>
<hr>
<div class="form-row">
<div class="form-group col-12">
<label for="user_id" class="form-label">{{ __('Vertriebspartner auswählen') }}*</label>
<select class="selectpicker" name="user_id" data-style="btn-light" data-live-search="true" required>
{!! HTMLHelper::getMembersOptions(0, true) !!}
</select>
</div>
</div>
<div class="form-row">
<div class="form-group col-sm-4">
<label for="points" class="form-label">{{__('Points')}}</label>
{{ Form::text('points', '', array('placeholder'=>__('Points'), 'class'=>'form-control', 'id'=>'points', 'required'=>true)) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-sm-4">
<label for="total_net" class="form-label">{{__('Umsatz netto%')}}</label>
{{ Form::text('total_net', '', array('placeholder'=>__('in Euro'), 'class'=>'form-control', 'id'=>'total_net', 'required'=>true)) }}
</div>
</div>
<label class="custom-control custom-checkbox">
{!! Form::checkbox('is_checked_action', 1, 0, ['class' => 'custom-control-input', 'id' => 'is_checked_action', 'required'=>true]) !!}
<span class="custom-control-label">Points / Umsatz hinzufügen</span>
</label>
<hr>
<i>Points werden mit für den akutellen Datum hinzugefügt, da die monatliche Auswertung für die Monate davor schon berechnet sind.</i><br>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">schließen</button>
<button type="submit" class="btn btn-primary">{{__('speichern')}}</button>
</div>
{!! Form::close() !!}
<script type="text/javascript">
$( document ).ready(function() {
});
</script>

View file

@ -0,0 +1,99 @@
{!! Form::open(['url' => $route, 'class' => 'modal-content', 'enctype' => 'multipart/form-data']) !!}
<div class="modal-header">
<h5 class="modal-title">
Business Points
<span class="font-weight-light">bearbeiten</span>
</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<input type="hidden" name="action" value="{{$data['action']}}">
<input type="hidden" name="id" value="{{$data['id']}}">
<div class="form-row">
<div class="form-group col">
<label for="change_member_key" class="form-label">{{ __('Passwort eingeben') }}*</label>
<input type="text" class="form-control" name="change_member_key" id="change_member_key"
placeholder="mivita" required>
</div>
</div>
<div class="table-responsive">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Datum</th>
<th>Points</th>
<th>Umsatz netto</th>
<th>Status</th>
<th>Berater</th>
</tr>
</thead>
<tbody>
@if($userSalesVolume)
<tr>
<td>{{ $userSalesVolume->date }}</td>
<td>{{ $userSalesVolume->points }}</td>
<td>{{ formatNumber($userSalesVolume->total_net) }} &euro;</td>
<td>{{ $userSalesVolume->getStatusType() }}</td>
<td>@if($userSalesVolume->user)
{{ $userSalesVolume->user->getFullName() }}
@else
nicht zugewiesen
@endif
</td>
</tr>
@if($userSalesVolume->message)
<tr>
<td colspan="5">{{ $userSalesVolume->message }}</td>
</tr>
@endif
@endif
</tbody>
</table>
</div>
<hr>
@if($userSalesVolume->isCurrentMonthYear())
<div class="form-row">
<div class="form-group col-sm-4">
<label for="points" class="form-label">{{__('Points')}}</label>
{{ Form::text('points', $userSalesVolume->points, array('class'=>'form-control', 'id'=>'points')) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-sm-4">
<label for="total_net" class="form-label">{{__('Umsatz netto')}}</label>
{{ Form::text('total_net', formatNumber($userSalesVolume->total_net), array('class'=>'form-control', 'id'=>'total_net')) }}
</div>
</div>
<label class="custom-control custom-checkbox">
{!! Form::checkbox('is_checked_action', 1, 0, ['class' => 'custom-control-input', 'id' => 'is_checked_action', 'required'=>true]) !!}
<span class="custom-control-label">Points / Umsatz ändern</span>
</label>
@else
Points können nicht mehr geändet werden werden.
@endif
<hr>
<i>Points können nur innerhalb des akutellen Monats geändert werden, da sonst die monatliche Auswertung schon berechnet ist.
Danach können Points für den akutellen Monat manuell gutgeschrieben werden.</i><br>
<a class="btn btn-sm btn-default mt-2" href="{{ route('admin_business_points') }}">Business -> Points gutschreiben</a>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">schließen</button>
<button type="submit" class="btn btn-primary">{{__('übernehmen')}}</button>
</div>
{!! Form::close() !!}
<script type="text/javascript">
$( document ).ready(function() {
});
</script>

View file

@ -0,0 +1,123 @@
@extends('layouts.layout-2')
@section('content')
<div class="card">
<h5 class="card-header">
Business Points
<div class="float-right">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="new"
data-action="add_user_sales_volume"
data-back="{{url()->current()}}"
data-route="{{ route('modal_load') }}"><span class="far fa-plus-circle"></span> Points hinzufügen
</button>
</div>
</h5>
@if(isset($add_points_error) && $add_points_error)
<div class="col-sm-12">
<div class="alert alert-danger p-2 mt-2">
<ul>
<li>{{ $add_points_error }}</li>
</ul>
</div>
</div>
@endif
<div class="card-body p-0">
{!! Form::open(['url' => route('admin_business_points'), 'class' => 'form-horizontal', 'id'=>'form_admin_business_points']) !!}
<div class="form-row align-items-center px-4 pb-2 pt-3">
<div class="col-12 col-sm-4 col-md-4 col-lg-4 mb-1">
<select class="selectpicker on_change_select" data-style="btn-default" name="points_filter_member_id" id="points_filter_member_id" data-live-search="true">
<option value="">Filter Berater aus</option>
@foreach($filter_members as $member)
<option value="{{$member->id}}" @if(session('points_filter_member_id') == $member->id) selected @endif>{{$member->first_name}} {{$member->last_name}} | {{$member->email}}</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" name="points_filter_month">
@foreach($filter_months as $key=>$value)
<option value="{{$key}}" @if(session('points_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" name="points_filter_year">
@foreach($filter_years as $key=>$value)
<option value="{{$value}}" @if(session('points_filter_year') == $value) selected @endif>{{$value}}</option>
@endforeach
</select>
</div>
</div>
{!! Form::close() !!}
<div class="card-datatable table-responsive pt-0">
<table class="datatables-style table table-striped table-bordered" id="datatable-invoice">
<thead>
<tr>
<th>#</th>
<th>{{__('Datum') }}</th>
<th>{{__('Points')}}</th>
<th>{{__('Umsatz netto')}}</th>
<th>{{__('Art')}}</th>
<th>{{__('Bestellung')}}</th>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname') }}</th>
<th>{{__('E-Mail') }}</th>
<th>{{__('Info') }}</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<script>
$( document ).ready(function() {
var oTable = $('#datatable-invoice').DataTable({
"processing": true,
"serverSide": true,
"stateSave": true,
"searching": false,
ajax: {
url: '{!! route('admin_business_points_datatable') !!}',
data: function(d) {
d.points_filter_member_id = $('select[name=points_filter_member_id]').val();
d.points_filter_month = $('select[name=points_filter_month]').val();
d.points_filter_year = $('select[name=points_filter_year]').val();
}
},
"order": [[0, "desc" ]],
"columns": [
{ data: 'id', searchable: false },
{ data: 'date', name: 'date' },
{ data: 'points', name: 'points' },
{ data: 'total_net', name: 'total_net' },
{ data: 'status', name: 'status', searchable: false },
{ data: 'order', name: 'order', orderable: false },
{ data: 'first_name', name: 'first_name', orderable: false },
{ data: 'last_name', name: 'last_name', orderable: false },
{ data: 'email', name: 'email', orderable: false },
{ data: 'message', name: 'message', searchable: false },
],
"bLengthChange": false,
"iDisplayLength": 100,
"language": {
"url": "/js/German.json"
}
});
$('select.on_change_select').on('change', function(){
oTable.draw();
});
$('input.on_keyup_input').on('keyup', function(){
oTable.draw();
});
});
</script>
@endsection

View file

@ -10,21 +10,12 @@
<div class="card">
<div class="card-header">
<div class="form-row align-items-center">
{{-- <div class="col-sm-5 mb-2">
<label class="form-label" for="filter_user_shop_id">Filter Kunden/Berater</label>
<select class="custom-select" name="filter_customer_member" id="filter_customer_member">
<option value="">Filter aus</option>
<option value="customers" @if(get_user_attr('filter_customer_member') === 'customers') selected @endif>Kunden</option>
<option value="members" @if(get_user_attr('filter_customer_member') === 'members') selected @endif>Berater</option>
</select>
</div>--}}
<div class="col-sm-10 mb-2">
<label class="form-label" for="filter_user_shop_id">Filter zugewiesener Berater</label>
<select class="custom-select" name="filter_member_id" id="filter_member_id">
<select class="selectpicker" data-style="btn-default" name="filter_member_id" id="filter_member_id" data-live-search="true">
<option value="">Filter aus</option>
@foreach($filter_members as $member)
<option value="{{$member->id}}" @if(get_user_attr('filter_member_id') == $member->id) selected @endif>{{$member->first_name}} {{$member->last_name}} |{{$member->email}}</option>
<option value="{{$member->id}}" @if(get_user_attr('filter_member_id') == $member->id) selected @endif>{{$member->first_name}} {{$member->last_name}} | {{$member->email}}</option>
@endforeach
</select>
</div>

View file

@ -36,6 +36,8 @@
<th>Points</th>
<th>Umsatz netto</th>
<th>Status</th>
<th>Berater</th>
</tr>
</thead>
<tbody>
@ -45,10 +47,16 @@
<td>{{ $value->user_sales_volume->points }}</td>
<td>{{ formatNumber($value->user_sales_volume->total_net) }} &euro;</td>
<td>{{ $value->user_sales_volume->getStatusType() }}</td>
<td>@if($value->user_sales_volume->user)
{{ $value->user_sales_volume->user->getFullName() }}
@else
nicht zugewiesen
@endif
</td>
</tr>
@if($value->user_sales_volume->message)
<tr>
<td colspan="4">{{ $value->user_sales_volume->message }}</td>
<td colspan="5">{{ $value->user_sales_volume->message }}</td>
</tr>
@endif
@endif

View file

@ -0,0 +1,304 @@
@extends('layouts.layout-2')
@section('content')
<style>
.td-entry-table-margin {
padding-bottom: 6px;
border-bottom: 1px solid rgb(221, 221, 221);
margin-bottom: 6px;
}
</style>
<div class="card">
<h6 class="card-header">
Zahlungen / offene Gutschriften
<div class="float-right">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="new"
data-action="add-user-credit"
data-back="{{url()->current()}}"
data-route="{{ route('modal_load') }}"><span class="far fa-plus-circle"></span> Gutschrift hinzufügen
</button>
</div>
</h6>
@if(isset($add_credit_error) && $add_credit_error)
<div class="col-sm-12">
<div class="alert alert-danger p-2 mt-2">
<ul>
<li>{{ $add_credit_error }}</li>
</ul>
</div>
</div>
@endif
<div class="card-datatable table-responsive pt-0">
<table class="datatables-style table table-striped table-bordered">
<thead>
<tr>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname') }}</th>
<th>{{__('E-Mail') }}</th>
<th>{{__('Betrag') }}</th>
<th>{{__('aus Bestellung / Gutschrift')}}</th>
<th>{{__('#')}}</th>
</tr>
</thead>
<tbody>
@foreach ($ShoppingOrderMargins as $ShoppingOrderMargin)
<tr>
<td>{{ $ShoppingOrderMargin->first_name }}</td>
<td>{{ $ShoppingOrderMargin->last_name }}</td>
<td>{{ $ShoppingOrderMargin->email }}</td>
<td>{!! \App\Services\UserMarign::getMontlyPartnerCommissionOpenByID($ShoppingOrderMargin->user_id, null, true, true) !!} &euro;</td>
<td>
@foreach (\App\Services\UserMarign::getOrderFromPartnerCommissionByID($ShoppingOrderMargin->user_id) as $order)
@if($order->shopping_order)
<div class="td-entry-table-margin"><a href="{{ route('admin_sales_customers_detail', [$order->shopping_order->id]) }}">
{{$order->shopping_order->shopping_user->billing_firstname }}
{{$order->shopping_order->shopping_user->billing_lastname }}
/ {{ $order->shopping_order->getLastShoppingPayment('reference') }}
/ {{ $order->shopping_order->getFormattedTotalWithoutCredit()."" }}
/ {{ $order->shopping_order->created_at->format("d.m.Y") }}
</a>
</div>
@endif
@endforeach
@foreach (\App\Services\UserMarign::getUserCreditMarginByID($ShoppingOrderMargin->user_id) as $creditMaring)
<div class="td-entry-table-margin">
<i class="fa fa-plus-circle text-secondary"></i>
{!! nl2br($creditMaring->message) !!}
/ {{ $creditMaring->created_at->format("d.m.Y") }}
@if($deleteTime = $creditMaring->deleteTime())
/ <span class="no-line-break">
<a class="btn btn-danger btn-xs" href="{{ route('admin_payments_credit_delete', [$creditMaring->id, 'user_credit_margin']) }}" onclick="return confirm('Wirklich löschen?');">
<i class="ion ion-ios-trash"></i>
</a> noch {{ $deleteTime }} min.
</span>
@endif
</div>
@endforeach
</td>
<td>
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-credit"
data-userid="{{ $ShoppingOrderMargin->user_id }}"
data-email="{{ $ShoppingOrderMargin->email }}"
data-back="{{url()->current()}}"
data-action="create_credit">
<span class="far fa-file-invoice-dollar"></span> <strong>Gutschrift erstellen</strong>
</button>
</td>
</tr>
@endforeach
@foreach ($onlyUserCreditMargins as $user_id => $onlyUserCreditMargin)
<tr>
<td>{{ $onlyUserCreditMargin['first_name'] }}</td>
<td>{{ $onlyUserCreditMargin['last_name'] }}</td>
<td>{{ $onlyUserCreditMargin['email'] }}</td>
<td>{!! formatNumber($onlyUserCreditMargin['sum']) !!} &euro;</td>
<td>
@foreach ($onlyUserCreditMargin['entries'] as $key => $creditMaring)
<div class="td-entry-table-margin">
<i class="fa fa-plus-circle text-secondary"></i>
{!! nl2br($creditMaring->message) !!}
/ {{ $creditMaring->created_at->format("d.m.Y") }}
@if($deleteTime = $creditMaring->deleteTime())
/ <span class="no-line-break">
<a class="btn btn-danger btn-xs" href="{{ route('admin_payments_credit_delete', [$creditMaring->id, 'user_credit_margin']) }}" onclick="return confirm('Wirklich löschen?');">
<i class="ion ion-ios-trash"></i>
</a> noch {{ $deleteTime }} min.
</span>
@endif
</div>
@endforeach
</td>
<td>
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-credit"
data-userid="{{ $onlyUserCreditMargin['user_id'] }}"
data-email="{{ $onlyUserCreditMargin['email'] }}"
data-back="{{url()->current()}}"
data-action="create_credit">
<span class="far fa-file-invoice-dollar"></span> <strong>Gutschrift erstellen</strong>
</button>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<div class="card mt-3">
<h6 class="card-header">
Zahlungen / offene Gutschriften pending
</h6>
<div class="card-datatable table-responsive pt-0">
<table class="datatables-style table table-striped table-bordered">
<thead>
<tr>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname') }}</th>
<th>{{__('E-Mail') }}</th>
<th>{{__('Betrag') }}</th>
<th>{{__('aus Bestellung')}}</th>
</tr>
</thead>
<tbody>
@foreach ($ShoppingOrderMarginPendings as $ShoppingOrderMarginPending)
<tr>
<td>{{ $ShoppingOrderMarginPending->first_name }}</td>
<td>{{ $ShoppingOrderMarginPending->last_name }}</td>
<td>{{ $ShoppingOrderMarginPending->email }}</td>
<td>{!! \App\Services\UserMarign::getMontlyPartnerCommissionPendingByID($ShoppingOrderMarginPending->user_id, null, true) !!} &euro;</td>
<td>
@foreach (\App\Services\UserMarign::getOrderFromPartnerCommissionPendingByID($ShoppingOrderMarginPending->user_id) as $order)
@if($order->shopping_order)
<div class="td-entry-table-margin"><a href="{{ route('admin_sales_customers_detail', [$order->shopping_order->id]) }}">
<a href="{{ route('admin_sales_customers_detail', [$order->shopping_order->id]) }}">
{{$order->shopping_order->shopping_user->billing_firstname }}
{{$order->shopping_order->shopping_user->billing_lastname }}
/ {{ $order->shopping_order->getLastShoppingPayment('reference') }}
/ {{$order->shopping_order->getFormattedTotalWithoutCredit()."" }}
/ {{ $order->shopping_order->created_at->format("d.m.Y") }}
</a>
</div>
@endif
@endforeach
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<div class="card mt-3">
<h6 class="card-header">
Zahlungen / erstellte Gutschriften
</h6>
<div class="col-sm-6 mb-0 mt-2">
{!! Form::open(['url' => route('admin_payments_credit'), 'class' => 'form-horizontal', 'id'=>'form_filter_sales_year']) !!}
<label class="form-label" for="filter_sales_year">Filter Jahr</label>
<select class="custom-select" name="filter_sales_year" id="filter_sales_year">
@foreach($years as $year)
<option value="{{$year}}" @if($active_year == $year) selected @endif>{{$year}}</option>
@endforeach
</select>
{!! Form::close() !!}
</div>
<div class="card-datatable table-responsive pt-0">
<table class="datatables-style table table-striped table-bordered" id="datatable-credit">
<thead>
<tr>
<th>ID</th>
<th>{{__('G.Nr.')}}</th>
<th>{{__('Gutschrift')}}</th>
<th>{{__('Vorname')}}</th>
<th>{{__('Nachname') }}</th>
<th>{{__('E-Mail') }}</th>
<th>{{__('Betrag') }}</th>
<th>{{__('Datum') }}</th>
<th>{{__('Zahlung')}}</th>
<th>{{__('aus Bestellung / Gutschrift')}}</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<div class="modal fade" id="modals-credit">
<div class="modal-dialog">
<form class="modal-content form-prevent-multiple-submits" action="{{ route('admin_payments_credit_create') }}" method="post">
@csrf
<input type="hidden" name="userid" value="">
<input type="hidden" name="action" value="create_credit">
<input type="hidden" name="back" value="{{url()->current()}}">
<div class="modal-header">
<h5 class="modal-title">{{__('Gutschrift')}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-group col-sm-12">
{{ Form::select('credit_option', ['create'=>'Gutschrift erstellen'], false, array('data-live-search'=>'false', 'class'=>'selectpicker')) }}
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="credit_date">{{ __('Gutschriftsdatum') }}</label>
{!! Form::text('credit_date', \Carbon::now()->format("d.m.Y"), ['class'=>'form-control datepicker-base']) !!}
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="credit_number">{{ __('Gutschriftsnummer') }}</label>
{!! Form::text('credit_number', App\Services\Credit::getCreditNumber(), ['class'=>'form-control', 'disabled']) !!}
<em> nächste Gutschriftsnummer <a href="{{ route('admin_settings') }}"><i class="fa fa-edit"></i></a></em>
</div>
<div class="form-group col-sm-12">
<label class="custom-control custom-checkbox">
{!! Form::checkbox('credit_send_mail', 1, true, ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">Gutschrift an <span id="set_credit_send_mail">mail</span></span>
</label>
</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 button-prevent-multiple-submits"><i class="spinner fa fa-spinner fa-spin"></i> {{ __('save')}}</button>
</div>
</form>
</div>
</div>
<script>
$( document ).ready(function() {
var oTable = $('#datatable-credit').DataTable({
"processing": true,
"serverSide": true,
ajax: {
url: '{!! route( 'admin_payments_credit_datatable') !!}',
data: function(d) {
d.filter_sales_year = $('select[name=filter_sales_year]').val();
}
},
"order": [[0, "desc" ]],
"columns": [
{ data: 'id', searchable: false },
{ data: 'credit_number', name: 'credit_number' },
{ data: 'credit', name: 'credit', orderable: false, searchable: false },
{ data: 'user.account.first_name', name: 'user.account.first_name', orderable: false },
{ data: 'user.account.last_name', name: 'user.account.last_name', orderable: false },
{ data: 'user.email', name: 'user.email', orderable: false },
{ data: 'total', name: 'total' },
{ data: 'date', name: 'date' },
{ data: 'status', name: 'status', searchable: false },
{ data: 'user_margins', name: 'user_margins', orderable: false },
],
"bLengthChange": false,
"iDisplayLength": 100,
"language": {
"url": "/js/German.json"
}
});
$('#filter_sales_year').on('change', function(){
oTable.draw();
});
$( document ).ready(function() {
$('#modals-credit').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
if(event.relatedTarget){
$(this).find(".modal-content input[name='userid']").val(button.data('userid'));
$(this).find(".modal-body #set_credit_send_mail").html(button.data('email'));
}
});
});
});
</script>
@endsection

View file

@ -11,16 +11,17 @@
<div class="form-row align-items-center">
<div class="col-sm-4 mb-2">
<label class="form-label" for="filter_user_shop_id">Filter zugewiesener Berater</label>
<select class="custom-select" name="filter_member_id" id="filter_member_id">
<select class="selectpicker" data-style="btn-default" name="filter_member_id" id="filter_member_id" data-live-search="true">
<option value="">Filter aus</option>
@foreach($filter_members as $member)
<option value="{{$member->id}}" @if(get_user_attr('filter_member_id') == $member->id) selected @endif>{{$member->first_name}} {{$member->last_name}} |{{$member->email}}</option>
<option value="{{$member->id}}" @if(get_user_attr('filter_member_id') == $member->id) selected @endif>{{$member->first_name}} {{$member->last_name}} | {{$member->email}}</option>
@endforeach
</select>
</div>
<div class="col-sm-4 mb-2">
<label class="form-label" for="filter_user_shop_id">Filter Gekauft im Shop</label>
<select class="custom-select" name="filter_user_shop_id" id="filter_user_shop_id">
<select class="selectpicker" data-style="btn-default" name="filter_user_shop_id" id="filter_user_shop_id" data-live-search="true">
<option value="">Filter aus</option>
@foreach($filter_user_shops as $id=>$name)
<option value="{{$id}}" @if(get_user_attr('filter_user_shop_id') == $id) selected @endif>{{$name}}.{{config('app.domain').config('app.tld_care')}}</option>
@ -31,7 +32,7 @@
<label class="form-label" for="filter_txaction">Filter Status</label>
<select class="custom-select" name="filter_txaction" id="filter_txaction">
<option value="">Filter aus</option>
@foreach(\App\Services\Payment::$txaction_text as $id=>$name)
@foreach(\App\Services\Payment::$txaction_filter_text as $id=>$name)
<option value="{{$id}}" @if(get_user_attr('filter_txaction') == $id) selected @endif>{{$name}}</option>
@endforeach
</select>

View file

@ -0,0 +1,40 @@
<div class="col-xl-5">
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{__('Activities') }}</div>
</h5>
<div class="card-body">
@if($user->active == 1)
@if($user->files->count())
@foreach($user->files()->whereIdentifier('contract')->get() as $file)
<a class="btn btn-secondary btn-block mb-3" href="{{ route('storage_file', [$file->id, 'user']) }}" target="_blank"><i class="ion ion-ios-download text-default mr-1"></i> MIVITA_Beratervertrag.pdf</a>
<hr class="mb-3">
@endforeach
@endif
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Daten vollständig, freigeschaltet')}}</strong> {{__('at')}}: {{ $user->getActiveDateFormat() }}</p>
@endif
@if($user->account_id)
@if($user->active == 1)
@if($user->agreement)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Einverständniserklärung')}}</strong> {{__('at')}}: {{ $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
@endif
@if($user->account->data_protection)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Privacy policy approved')}}</strong> {{__('at')}}: {{ $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> {{__('at')}}: {{ $user->getConfirmationDateFormat() }}</p>
@endif
</div>
</div>
</div>

View file

@ -0,0 +1,54 @@
<div class="d-flex col-xl-6 align-items-stretch">
<div class="card w-100 mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{__('Mitgliedschaft') }}</div>
</h5>
<div class="card-body">
@if($user->isActiveAccount() )
<div class="badge btn-success p-2">
<i class="ion ion-md-checkmark-circle-outline text-white"></i>
<strong>{{__('Berater-Mitgliedschaft aktiv')}}</strong> {{__('bis zum:')}} <strong></strong>{{ $user->getPaymentAccountDateFormat() }}</div>
@else
<div class="badge badge-danger p-2">
<i class="ion ion-md-close-circle-outline text-white"></i>
<strong>{{__('Berater-Account inaktiv')}} </strong>
@if($user->payment_account)
{{__('abgelaufen am')}}: <strong></strong>{{ $user->getPaymentAccountDateFormat() }}
@endif
</div>
@endif
@if($user->isActiveAccount() )
<hr>
<h6><span class="ion ion-md-checkmark-circle-outline text-success"></span>
<strong>{{__('Aktive Rolle')}}:</strong>
@if($user->m_level && $user->user_level) {{ $user->user_level->name }} @endif </h6>
<table class="table table-striped table-bordered">
<tr>
<td class="text-left font-weight-semibold">{{__('Provision')}}:</td>
<td class="text-left font-weight-semibold">{{__('Shop Provision')}}:</td>
<td class="text-left font-weight-semibold">{{__('Qualifikation')}}:</td>
<td class="text-left font-weight-semibold">{{__('Team Qualifikation')}}:</td>
</tr>
<tr>
<td class="text-left font-weight-bold">
{{ $user->user_level->margin }} %
</td>
<td class="text-left font-weight-bold">
{{ $user->user_level->margin_shop }} %
</td>
<td class="text-left font-weight-bold">
{{ $user->user_level->qual_kp }} Points
</td>
<td class="text-left font-weight-bold">
{{ $user->user_level->qual_tp }} Points
</td>
</tr>
</table>
@endif
</div>
<div class="card-footer py-3">
<a href="{{route('user_membership')}}" class="btn btn-secondary"><i class="ion ion-ios-people text-default mr-1"></i> {{__('Mitgliedschaft verwalten')}}</a>
</div>
</div>
</div>

View file

@ -0,0 +1,73 @@
<div class="d-flex col-xl-12 align-items-stretch">
<div class="card w-100 mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{__('Aktuelle Punkte für') }} {{ HTMLHelper::getMonth(date('n')) }} {{ date('Y') }} </div>
</h5>
<div class="card-body">
@if($user->isActiveAccount())
<h6>
@php($userSalesVolume = $user->getUserSalesVolume(date('n'), date('Y'), 'first'))
@if($userSalesVolume)
<div class="mb-2">
<strong>Gesamte Points: {{ $userSalesVolume->getPointsSum() }}</strong> | Berater: {{ $userSalesVolume->month_points }} | Shop: {{ $userSalesVolume->month_shop_points }}<br>
</div>
<div>
<strong>Gesamter Umsatz: {{ formatNumber($userSalesVolume->getTotalNetSum()) }} &euro;</strong> | Berater: {{ formatNumber($userSalesVolume->month_total_net) }} &euro; | Shop: {{ formatNumber($userSalesVolume->month_shop_total_net) }} &euro;
</div>
@endif
</h6>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>{{__('Datum') }}</th>
<th>{{__('Points')}}</th>
<th>{{__('Umsatz netto')}}</th>
<th>{{__('Art')}}</th>
<th>{{__('Bestellung')}}</th>
<th>{{__('Info') }}</th>
</tr>
</thead>
<tbody>
@php($userSalesVolumes = $user->getUserSalesVolume(date('n'), date('Y')))
@if($userSalesVolumes)
@foreach ($userSalesVolumes as $userSalesVolume)
<tr>
<td class="text-left font-weight-semibold">
{{ $userSalesVolume->date }}
</td>
<td class="text-left font-weight-semibold">
{{ $userSalesVolume->points }}
</td>
<td class="text-left font-weight-semibold">
{{ formatNumber($userSalesVolume->total_net) }} &euro;
</td>
<td class="text-left font-weight-semibold">
<span class="badge badge-pill badge-{{ $userSalesVolume->getStatusColor() }}">{{ $userSalesVolume->getStatusType() }}</span>
</td>
<td class="text-left font-weight-semibold">
@if($userSalesVolume->shopping_order)
@if($userSalesVolume->status === 1 && $userSalesVolume->shopping_order->auth_user_id === $userSalesVolume->user_id)
<a href="{{ route('user_order_detail', [$userSalesVolume->shopping_order->id]) }}" class="btn btn-xs btn-primary">{{ $userSalesVolume->shopping_order->id }}</a>
@endif
@if(($userSalesVolume->status === 2 || $userSalesVolume->status === 3) && $userSalesVolume->shopping_order->member_id === $userSalesVolume->user_id)
<a href="{{ route('user_shop_order_detail', [$userSalesVolume->shopping_order->id]) }}" class="btn btn-xs btn-secondary">{{ $userSalesVolume->shopping_order->id }}</a>
@endif
@endif
</td>
<td class="text-left font-weight-semibold">
<span class="no-line-break"> {{ $userSalesVolume->message }}</span>
</td>
</tr>
@endforeach
@endif
</tbody>
</table>
@endif
</div>
@if($user->isActiveAccount())
<div class="card-footer py-3">
<a href="{{route('user_team_structure')}}" class="btn btn-secondary"><i class="ion ion-md-funnel rotate-180 text-default mr-1"></i> {{__('navigation.my_team')}} - {{__('navigation.structure')}}</a>
</div>
@endif
</div>
</div>

View file

@ -0,0 +1,60 @@
@if($user->active == 1)
@if($user->payment_account && $user->daysActiveAccount() <= config('mivita.remind_first_days'))
<div class="d-flex col-xl-12 align-items-stretch">
<div class="card w-100 mb-4">
<h5 class="card-header">
{{__('membership.home_hl') }}
</h5>
<div class="card-body">
@if($user->daysActiveAccount() <= 0)
@if($user->isActiveAccount())
<h5 class="alert badge-danger">{{__('membership.home_copy_alert_35')}}</h5>
<p>{{__('membership.home_copy_last_35', ['days'=>$user->daysActiveAccount(), 'datetime'=>$user->getPaymentAccountDateFormat()])}}</p>
@else
{{-- 35, 36 --}}
@if($user->daysActiveAccount() == 0)
<h5 class="alert badge-danger">{{__('membership.home_copy_alert_36_today', ['datetime'=>$user->getPaymentAccountDateFormat()])}}</h5>
@else
<h5 class="alert badge-danger">{{__('membership.home_copy_alert_36', ['days'=>$user->daysActiveAccount()*-1, 'datetime'=>$user->getPaymentAccountDateFormat()])}}</h5>
@endif
@if($user->payment_account && $user->isAboOption())
{{ __('membership.home_copy_SEPA_36', ['price'=> 'von '.$user->payment_order_product->getFormattedPrice().' EUR', 'pay_date'=>Carbon::parse($user->payment_account)->modify('- '.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) }}
<hr>
@endif
<p>{{__('membership.home_copy_last_36', ['days'=>$user->daysActiveAccount(), 'datetime'=>$user->getPaymentAccountDateFormat()])}}</p>
@endif
@elseif($user->daysActiveAccount() < config('mivita.remind_last_days') )
{{-- 33 --}}
<h5 class="alert badge-warning">{{ __('membership.home_copy_alert_31', ['datetime'=>$user->getPaymentAccountDateFormat()]) }}</h5>
<p>{{__('membership.home_copy_last_34', ['days'=>$user->daysActiveAccount(), 'datetime'=>$user->getPaymentAccountDateFormat()])}}</p>
@elseif($user->daysActiveAccount() < config('mivita.remind_sec_days'))
{{-- 33 --}}
<h5 class="alert badge-warning">{{ __('membership.home_copy_alert_31', ['datetime'=>$user->getPaymentAccountDateFormat()]) }}</h5>
@if($user->payment_account && $user->isAboOption())
@if($user->daysActiveAccount() < config('mivita.abo_booking_days') )
<p>{{ __('membership.home_copy_SEPA_33', ['price'=> 'von '.$user->payment_order_product->getFormattedPrice().' EUR', 'pay_date'=>Carbon::parse($user->payment_account)->modify('- '.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) }}</p>
@else
<p>{{ __('membership.home_copy_SEPA_32', ['price'=> 'von '.$user->payment_order_product->getFormattedPrice().' EUR', 'pay_date'=>Carbon::parse($user->payment_account)->modify('- '.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) }}</p>
@endif
<hr>
@endif
<p>{{__('membership.home_copy_last_33', ['days'=>$user->daysActiveAccount()])}}</p>
@else
{{-- 32 / 31 --}}
<h5 class="alert badge-default">{{ __('membership.home_copy_alert_31', ['datetime'=>$user->getPaymentAccountDateFormat()]) }}</h5>
@if($user->payment_account && $user->isAboOption())
{{ __('membership.home_copy_SEPA_32', ['price'=> 'von '.$user->payment_order_product->getFormattedPrice().' EUR', 'pay_date'=>Carbon::parse($user->payment_account)->modify('- '.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) }}
<hr>
@endif
<p>{{__('membership.home_copy_last_31', ['days'=>$user->daysActiveAccount()])}}</p>
@endif
</div>
<div class="card-footer py-3">
<a href="{{route('user_membership')}}" class="btn btn-info mb-3"><i class="ion ion-ios-refresh text-default mr-1"></i> Mitgliedschaft jetzt hier verwalten</a>
</div>
</div>
</div>
@endif
@endif

View file

@ -0,0 +1,70 @@
<div class="col-xl-7">
<div class="row">
<div class="col-md-6">
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{ __('Daten') }}</div>
</h5>
<div class="card-body">
@if ($user->active == 1)
<p>{{ __('Ändere Deine persönlichen Datan.') }}</p>
<a href="{{ route('user_edit') }}" class="btn btn-secondary"><i
class="ion ion-ios-contact text-default mr-1"></i> {{ __('Adjust data') }}</a>
@endif
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{ __('Sicherheit') }}</div>
</h5>
<div class="card-body">
@if ($user->active == 1)
@if (!$user->isPasswort())
<p>{{ __('Assign a password for your account.') }}</p>
<a href="{{ route('user_update_password_first') }}" class="btn btn-submit"><i
class="ion ion-ios-lock text-default mr-1"></i> {{ __('Create Password') }}</a>
@else
<p>{{ __('Ändere Dein persönliches Passwort.') }}</p>
<a href="{{ route('user_update_password') }}" class="btn btn-secondary"><i
class="ion ion-ios-lock text-default mr-1"></i> {{ __('Change password') }}</a>
@endif
@endif
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{ __('Anmeldung') }}</div>
</h5>
<div class="card-body">
@if ($user->active == 1)
<p>{{ __('Ändere Deine E-Mail Adresse.') }}</p>
<a href="{{ route('user_update_email') }}" class="btn btn-secondary"><i
class="ion ion-ios-mail text-default mr-1"></i> {{ __('Change E-Mail') }}</a>
@endif
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{ __('Logout') }}</div>
</h5>
<div class="card-body">
<p>Abmelden und bis bald.</p>
</o>
<a href="{{ route('logout') }}" class="btn btn-primary"><i
class="ion ion-ios-log-out text-default mr-1"></i> {{ __('Logout') }}</a>
</div>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,57 @@
<div class="d-flex col-xl-6 align-items-stretch">
<div class="card w-100 mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{__('Your Shop') }}</div>
</h5>
<div class="card-body">
@if($user->isActiveShop())
<div class="badge btn-success p-2">
<i class="ion ion-md-checkmark-circle-outline text-white"></i>
<strong>{{__('Berater-Online-Shop aktiv')}}</strong> {{__('bis zum')}}: <strong></strong>{{ $user->getPaymentShopDateFormat() }}</div>
@else
<div class="badge badge-danger p-2">
<i class="ion ion-md-close-circle-outline text-white"></i>
<strong>{{__('Berater-Shop inaktiv')}}</strong>
@if($user->payment_shop)
{{__('abgelaufen am')}}: <strong></strong>{{ $user->getPaymentShopDateFormat() }}
@endif
</div>
@endif
<hr>
@if($user->isActiveAccount())
@if($user->isActiveShop())
@if($user->shop)
<p><span class="ion ion-md-checkmark-circle-outline text-success"></span>
<strong>{{__('open since')}}</strong> {{__('at')}} {{ $user->shop->getActiveDateFormat() }}</p>
@if($user->shop->active)
<p><span class="ion ion-md-checkmark-circle-outline text-success"></span>
<strong>{{__('Status')}}</strong> {{ __('active') }}</p>
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<strong>{{__('Status')}}</strong> {{ __('inactive') }}</p>
@endif
<div class="mb-2">
<a class="btn btn-default btn-sm" href="{{ $user->shop->getSubdomain(false) }}" target="_blank"><i class="ion ion-md-globe text-default mr-1"></i> {{ $user->shop->getSubdomain(false) }}</a>
</div>
<div>
<a class="btn btn-default btn-sm" href="{{route('user_shop_orders')}}" target="_self"><i class="ion ion-ios-cart text-default mr-1"></i> {{__('navigation.orders')}}</a>
</div>
@else
<a href="{{route('user_shop')}}" class="btn btn-secondary">{{__('open your shop')}}</a>
@endif
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<strong>{{__('Shop nicht gebucht')}}</strong></p>
@endif
@endif
</div>
@if($user->isActiveShop())
<div class="card-footer py-3">
<a href="{{route('user_shop')}}" class="btn btn-secondary"><i class="ion ion-ios-basket text-default mr-1"></i> {{__('settings your shop')}}</a>
</div>
@endif
</div>
</div>

View file

@ -0,0 +1,62 @@
@if($user->active == 1)
@if($user->payment_account && $user->daysActiveAccount() <= config('mivita.remind_first_days'))
<div class="d-flex col-xl-12 align-items-stretch">
<!-- SHOP -->
<div class="card w-100 mb-4">
<h5 class="card-header">
{{__('membership.home_hl') }}
</h5>
<div class="card-body">
@if($user->daysActiveAccount() <= 0)
@if($user->isActiveAccount())
<h5 class="alert badge-danger">{{__('membership.home_copy_alert_35')}}</h5>
<p>{{__('membership.home_copy_last_35', ['days'=>$user->daysActiveAccount(), 'datetime'=>$user->getPaymentAccountDateFormat()])}}</p>
@else
{{-- 35, 36 --}}
@if($user->daysActiveAccount() == 0)
<h5 class="alert badge-danger">{{__('membership.home_copy_alert_36_today', ['datetime'=>$user->getPaymentAccountDateFormat()])}}</h5>
@else
<h5 class="alert badge-danger">{{__('membership.home_copy_alert_36', ['days'=>$user->daysActiveAccount()*-1, 'datetime'=>$user->getPaymentAccountDateFormat()])}}</h5>
@endif
@if($user->payment_account && $user->isAboOption())
{{ __('membership.home_copy_SEPA_36', ['price'=> 'von '.$user->payment_order_product->getFormattedPrice().' EUR', 'pay_date'=>Carbon::parse($user->payment_account)->modify('- '.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) }}
<hr>
@endif
<p>{{__('membership.home_copy_last_36', ['days'=>$user->daysActiveAccount(), 'datetime'=>$user->getPaymentAccountDateFormat()])}}</p>
@endif
@elseif($user->daysActiveAccount() < config('mivita.remind_last_days') )
{{-- 33 --}}
<h5 class="alert badge-warning">{{ __('membership.home_copy_alert_31', ['datetime'=>$user->getPaymentAccountDateFormat()]) }}</h5>
<p>{{__('membership.home_copy_last_34', ['days'=>$user->daysActiveAccount(), 'datetime'=>$user->getPaymentAccountDateFormat()])}}</p>
@elseif($user->daysActiveAccount() < config('mivita.remind_sec_days'))
{{-- 33 --}}
<h5 class="alert badge-warning">{{ __('membership.home_copy_alert_31', ['datetime'=>$user->getPaymentAccountDateFormat()]) }}</h5>
@if($user->payment_account && $user->isAboOption())
@if($user->daysActiveAccount() < config('mivita.abo_booking_days') )
<p>{{ __('membership.home_copy_SEPA_33', ['price'=> 'von '.$user->payment_order_product->getFormattedPrice().' EUR', 'pay_date'=>Carbon::parse($user->payment_account)->modify('- '.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) }}</p>
@else
<p>{{ __('membership.home_copy_SEPA_32', ['price'=> 'von '.$user->payment_order_product->getFormattedPrice().' EUR', 'pay_date'=>Carbon::parse($user->payment_account)->modify('- '.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) }}</p>
@endif
<hr>
@endif
<p>{{__('membership.home_copy_last_33', ['days'=>$user->daysActiveAccount()])}}</p>
@else
{{-- 32 / 31 --}}
<h5 class="alert badge-default">{{ __('membership.home_copy_alert_31', ['datetime'=>$user->getPaymentAccountDateFormat()]) }}</h5>
@if($user->payment_account && $user->isAboOption())
{{ __('membership.home_copy_SEPA_32', ['price'=> 'von '.$user->payment_order_product->getFormattedPrice().' EUR', 'pay_date'=>Carbon::parse($user->payment_account)->modify('- '.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) }}
<hr>
@endif
<p>{{__('membership.home_copy_last_31', ['days'=>$user->daysActiveAccount()])}}</p>
@endif
</div>
<div class="card-footer py-3">
<a href="{{route('user_membership')}}" class="btn btn-info mb-3"><i class="ion ion-ios-refresh text-default mr-1"></i> Mitgliedschaft jetzt hier verwalten</a>
</div>
</div>
<!-- / SHOP -->
</div>
@endif
@endif

View file

@ -28,310 +28,21 @@
<hr class="container-m-nx mt-0 mb-4">
<div class="row">
@if($user->active == 1)
@if($user->payment_account && $user->daysActiveAccount() <= config('mivita.remind_first_days'))
<div class="d-flex col-xl-12 align-items-stretch">
<!-- SHOP -->
<div class="card w-100 mb-4">
<h5 class="card-header">
{{__('membership.home_hl') }}
</h5>
<div class="card-body">
@if($user->daysActiveAccount() <= 0)
@if($user->isActiveAccount())
<h5 class="alert badge-danger">{{__('membership.home_copy_alert_35')}}</h5>
<p>{{__('membership.home_copy_last_35', ['days'=>$user->daysActiveAccount(), 'datetime'=>$user->getPaymentAccountDateFormat()])}}</p>
@else
{{-- 35, 36 --}}
@if($user->daysActiveAccount() == 0)
<h5 class="alert badge-danger">{{__('membership.home_copy_alert_36_today', ['datetime'=>$user->getPaymentAccountDateFormat()])}}</h5>
@else
<h5 class="alert badge-danger">{{__('membership.home_copy_alert_36', ['days'=>$user->daysActiveAccount()*-1, 'datetime'=>$user->getPaymentAccountDateFormat()])}}</h5>
@endif
@if($user->payment_account && $user->isAboOption())
{{ __('membership.home_copy_SEPA_36', ['price'=> 'von '.$user->payment_order_product->getFormattedPrice().' EUR', 'pay_date'=>Carbon::parse($user->payment_account)->modify('- '.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) }}
<hr>
@endif
<p>{{__('membership.home_copy_last_36', ['days'=>$user->daysActiveAccount(), 'datetime'=>$user->getPaymentAccountDateFormat()])}}</p>
@endif
@elseif($user->daysActiveAccount() < config('mivita.remind_last_days') )
{{-- 33 --}}
<h5 class="alert badge-warning">{{ __('membership.home_copy_alert_31', ['datetime'=>$user->getPaymentAccountDateFormat()]) }}</h5>
<p>{{__('membership.home_copy_last_34', ['days'=>$user->daysActiveAccount(), 'datetime'=>$user->getPaymentAccountDateFormat()])}}</p>
@elseif($user->daysActiveAccount() < config('mivita.remind_sec_days'))
{{-- 33 --}}
<h5 class="alert badge-warning">{{ __('membership.home_copy_alert_31', ['datetime'=>$user->getPaymentAccountDateFormat()]) }}</h5>
@if($user->payment_account && $user->isAboOption())
@if($user->daysActiveAccount() < config('mivita.abo_booking_days') )
<p>{{ __('membership.home_copy_SEPA_33', ['price'=> 'von '.$user->payment_order_product->getFormattedPrice().' EUR', 'pay_date'=>Carbon::parse($user->payment_account)->modify('- '.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) }}</p>
@else
<p>{{ __('membership.home_copy_SEPA_32', ['price'=> 'von '.$user->payment_order_product->getFormattedPrice().' EUR', 'pay_date'=>Carbon::parse($user->payment_account)->modify('- '.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) }}</p>
@endif
<hr>
@endif
<p>{{__('membership.home_copy_last_33', ['days'=>$user->daysActiveAccount()])}}</p>
@else
{{-- 32 / 31 --}}
<h5 class="alert badge-default">{{ __('membership.home_copy_alert_31', ['datetime'=>$user->getPaymentAccountDateFormat()]) }}</h5>
@if($user->payment_account && $user->isAboOption())
{{ __('membership.home_copy_SEPA_32', ['price'=> 'von '.$user->payment_order_product->getFormattedPrice().' EUR', 'pay_date'=>Carbon::parse($user->payment_account)->modify('- '.config('mivita.abo_booking_days').' days')->format('d.m.Y')]) }}
<hr>
@endif
<p>{{__('membership.home_copy_last_31', ['days'=>$user->daysActiveAccount()])}}</p>
@include('dashboard._reminder')
@endif
</div>
<div class="card-footer py-3">
<a href="{{route('user_membership')}}" class="btn btn-info mb-3"><i class="ion ion-ios-refresh text-default mr-1"></i> Mitgliedschaft jetzt hier verwalten</a>
</div>
</div>
<!-- / SHOP -->
</div>
@endif
@endif
{{-- <div class="d-flex col-xl-6 align-items-stretch">
<!-- Stats + Links -->
<div class="card d-flex w-100 mb-4">
<div class="row no-gutters row-bordered h-100">
<div class="d-flex col-sm-6 col-md-4 col-lg-6 align-items-center">
@include('dashboard._membership')
<a href="javascript:void(0)" class="card-body media align-items-center text-body">
<i class="lnr lnr-chart-bars display-4 d-block text-primary"></i>
<span class="media-body d-block ml-3">
<span class="text-big font-weight-bolder">$1,342.11</span><br>
<small class="">Umsatz diesen Monat</small>
</span>
</a>
@include('dashboard._shop')
</div>
<div class="d-flex col-sm-6 col-md-4 col-lg-6 align-items-center">
@include('dashboard._points')
<a href="javascript:void(0)" class="card-body media align-items-center text-body">
<i class="lnr lnr-hourglass display-4 d-block text-primary"></i>
<span class="media-body d-block ml-3">
<span class="text-big"><span class="font-weight-bolder">152</span> Working Hours</span><br>
<small class="">Umsatz dieses Jahr</small>
</span>
</a>
@include('dashboard._activities')
</div>
<div class="d-flex col-sm-6 col-md-4 col-lg-6 align-items-center">
<a href="javascript:void(0)" class="card-body media align-items-center text-body">
<i class="lnr lnr-checkmark-circle display-4 d-block text-primary"></i>
<span class="media-body d-block ml-3">
<span class="text-big"><span class="font-weight-bolder">54</span> Tasks</span><br>
<small class="">Punkte</small>
</span>
</a>
@include('dashboard._settings')
</div>
<div class="d-flex col-sm-6 col-md-4 col-lg-6 align-items-center">
<a href="javascript:void(0)" class="card-body media align-items-center text-body">
<i class="lnr lnr-license display-4 d-block text-primary"></i>
<span class="media-body d-block ml-3">
<span class="text-big"><span class="font-weight-bolder">6</span> Projects</span><br>
<small class="">Verkäufe</small>
</span>
</a>
</div>
</div>
</div>
<!-- / Stats + Links -->
</div> --}}
<div class="d-flex col-xl-6 align-items-stretch">
<!-- SHOP -->
<div class="card w-100 mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{__('Mitgliedschaft') }}</div>
</h5>
<div class="card-body">
@if($user->isActiveAccount() )
<div class="badge btn-success p-2">
<i class="ion ion-md-checkmark-circle-outline text-white"></i>
<strong>{{__('Berater-Mitgliedschaft aktiv')}}</strong> {{__('bis zum:')}} <strong></strong>{{ $user->getPaymentAccountDateFormat() }}</div>
@else
<div class="badge badge-danger p-2">
<i class="ion ion-md-close-circle-outline text-white"></i>
<strong>{{__('Berater-Account inaktiv')}} </strong>
@if($user->payment_account)
{{__('abgelaufen am')}}: <strong></strong>{{ $user->getPaymentAccountDateFormat() }}
@endif
</div>
@endif
<div class="clearfix mb-2"></div>
@if($user->isActiveShop())
<div class="badge btn-success p-2">
<i class="ion ion-md-checkmark-circle-outline text-white"></i>
<strong>{{__('Berater-Online-Shop aktiv')}}</strong> {{__('bis zum')}}: <strong></strong>{{ $user->getPaymentShopDateFormat() }}</div>
@else
<div class="badge badge-danger p-2">
<i class="ion ion-md-close-circle-outline text-white"></i>
<strong>{{__('Berater-Shop inaktiv')}}</strong>
@if($user->payment_shop)
{{__('abgelaufen am')}}: <strong></strong>{{ $user->getPaymentShopDateFormat() }}
@endif
</div>
@endif
</div>
<div class="card-footer py-3">
<a href="{{route('user_membership')}}" class="btn btn-secondary"><i class="ion ion-ios-people text-default mr-1"></i> {{__('Mitgliedschaft verwalten')}}</a>
</div>
</div>
<!-- / SHOP -->
</div>
<div class="d-flex col-xl-6 align-items-stretch">
<!-- SHOP -->
<div class="card w-100 mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{__('Your Shop') }}</div>
</h5>
<div class="card-body">
@if($user->isActiveAccount())
@if($user->isActiveShop())
@if($user->shop)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('open since')}}</strong> {{__('at')}} {{ $user->shop->getActiveDateFormat() }}</p>
@if($user->shop->active)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Status')}}</strong> {{ __('active') }}</p>
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<strong>{{__('Status')}}</strong> {{ __('inactive') }}</p>
@endif
@else
<a href="{{route('user_shop')}}" class="btn btn-secondary">{{__('open your shop')}}</a>
@endif
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<strong>{{__('Shop nicht gebucht')}}</strong></p>
@endif
@endif
</div>
@if($user->isActiveShop())
<div class="card-footer py-3">
<a href="{{route('user_shop')}}" class="btn btn-secondary"><i class="ion ion-ios-basket text-default mr-1"></i> {{__('settings your shop')}}</a>
</div>
@endif
</div>
<!-- / SHOP -->
</div>
<div class="col-xl-5">
<!-- Tasks -->
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{__('Activities') }}</div>
</h5>
<div class="card-body">
@if($user->active == 1)
@if($user->files->count())
@foreach($user->files()->whereIdentifier('contract')->get() as $file)
<a class="btn btn-secondary btn-block mb-3" href="{{ route('storage_file', [$file->id, 'user']) }}" target="_blank"><i class="ion ion-ios-download text-default mr-1"></i> MIVITA_Beratervertrag.pdf</a>
<hr class="mb-3">
@endforeach
@endif
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Daten vollständig, freigeschaltet')}}</strong> {{__('at')}}: {{ $user->getActiveDateFormat() }}</p>
@endif
@if($user->account_id)
@if($user->active == 1)
@if($user->agreement)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Einverständniserklärung')}}</strong> {{__('at')}}: {{ $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
@endif
@if($user->account->data_protection)
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Privacy policy approved')}}</strong> {{__('at')}}: {{ $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> {{__('at')}}: {{ $user->getConfirmationDateFormat() }}</p>
@endif
</div>
</div>
<!-- / Tasks -->
</div>
<div class="col-xl-7">
<div class="row">
<div class="col-md-6">
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{__('Daten') }}</div>
</h5>
<div class="card-body">
@if($user->active == 1)
<p>{{__('Ändere Deine persönlichen Datan.')}}</p>
<a href="{{ route('user_edit') }}" class="btn btn-secondary"><i class="ion ion-ios-contact text-default mr-1"></i> {{ __('Adjust data') }}</a>
@endif
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{ __('Sicherheit') }}</div>
</h5>
<div class="card-body">
@if($user->active == 1)
@if(!$user->isPasswort())
<p>{{__('Assign a password for your account.')}}</p>
<a href="{{route('user_update_password_first')}}" class="btn btn-submit"><i class="ion ion-ios-lock text-default mr-1"></i> {{__('Create Password')}}</a>
@else
<p>{{__('Ändere Dein persönliches Passwort.')}}</p>
<a href="{{route('user_update_password')}}" class="btn btn-secondary"><i class="ion ion-ios-lock text-default mr-1"></i> {{__('Change password')}}</a>
@endif
@endif
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{ __('Anmeldung') }}</div>
</h5>
<div class="card-body">
@if($user->active == 1)
<p>{{__('Ändere Deine E-Mail Adresse.')}}</p>
<a href="{{route('user_update_email')}}" class="btn btn-secondary"><i class="ion ion-ios-mail text-default mr-1"></i> {{__('Change E-Mail')}}</a>
@endif
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{ __('Logout') }}</div>
</h5>
<div class="card-body">
<p>Abmelden und bis bald.</p></o>
<a href="{{route('logout')}}" class="btn btn-primary"><i class="ion ion-ios-log-out text-default mr-1"></i> {{ __('Logout') }}</a>
</div>
</div>
</div>
</div>
</div>
</div>
<hr class="container-m-nx mt-0 mb-4">
@endsection

View file

@ -411,7 +411,7 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
//payments points // Gutschreiben
Route::get('/admin/business/points', 'BusinessPointsController@index')->name('admin_business_points');
Route::post('/admin/business/points', 'BusinessPointsController@index')->name('admin_business_points');
Route::post('/admin/business/points/store', 'BusinessPointsController@store')->name('admin_business_points_store');
Route::get('/admin/business/points/datatable', 'BusinessPointsController@datatable')->name('admin_business_points_datatable');