commit 08-2025

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

View file

@ -0,0 +1,35 @@
{!! Form::open(['action' => route('portal.my_subscriptions.create', 3), 'method' => 'POST', 'class' => '']) !!}
@include('portal.abo.componenten.product-table-styles')
<div class="card-body">
@include('portal.abo.componenten.vat-info')
<div class="alert alert-warning">
<strong>{!! __('abo.abo_type_info', ['base'=>get_abo_type_badge('base'), 'upgrade'=>get_abo_type_badge('upgrade')]) !!}</strong>
</div>
@if(isset($error))
<div class="alert alert-danger">
<strong>{{ $error }}</strong>
</div>
@endif
@include('portal.abo.componenten.product-table', [
'products' => $basis_products ?? [],
'productType' => 'base',
'formRoute' => 'portal.my_subscriptions.create',
'formStep' => 3
])
</div>
<div class="card-footer">
<button type="submit" class="btn btn-default" name="action" value="back">{{ __('abo.back') }}</button>
<button type="submit" class="btn btn-secondary float-right" name="action" value="next">{{ __('abo.confirm_and_next') }}</button>
</div>
{!! Form::close() !!}

View file

@ -0,0 +1,192 @@
{!! Form::open(['action' => route('portal.my_subscriptions.create', 5), 'method' => 'POST', 'class' => '']) !!}
<div class="card-body">
@if(Yard::instance('subscription')->content()->count())
<style>
.cart-item {
position: relative;
padding: 15px 0;
border-bottom: 1px solid #ddd;
}
.cart-item:last-child {
border-bottom: none;
}
.cart-item .product-image {
max-width: 80px;
}
.cart-item .product-title {
font-size: 1.1em;
font-weight: 500;
color: #393939;
}
.cart-item .product-details {
font-size: 0.9em;
color: #666;
}
.cart-item .quantity-input {
width: 80px;
text-align: center;
}
.cart-summary {
background: #f8f9fa;
padding: 20px;
border-radius: 5px;
}
.cart-summary .table {
margin-bottom: 0;
}
.cart-summary .table td {
border-top: none;
padding: 8px 0;
}
.cart-summary .total-row {
font-weight: bold;
border-top: 1px solid #ddd;
}
</style>
<div class="cart-overview">
<h4 class="mb-4">{{ __('abo.abo_order_hl') }}</h4>
@if(isset($error))
<div class="alert alert-danger">
<strong>{{ $error }}</strong>
</div>
@endif
@foreach(Yard::instance('subscription')->getContentByOrder() as $row)
@php($product = \App\Models\Product::find($row->id))
<div class="cart-item">
<div class="row align-items-center">
<div class="col-3 col-sm-2">
@if($row->options->has('image'))
<img src="{{ route('product_image', [$row->options->image]) }}" class="product-image" alt="{{ $row->name }}">
@endif
</div>
<div class="col-9 col-sm-10">
<div class="row">
<div class="col-12 col-sm-6 col-md-7">
<div class="product-title">
{{ $row->name }}
{!! get_abo_type_badge_by_product($product) !!}
</div>
<div class="product-details">
<div>{{ __('order.content') }}: {{ $product->contents }}</div>
<div>{{ __('order.art_no') }}: {{ $product->number }}</div>
</div>
</div>
<div class="col-6 col-sm-3 col-md-2">
<div class="price-single">
<div style="">{{ $row->price() }} {{ Yard::instance('subscription')->getUserTaxFree() }}</div>
@if(Yard::instance('subscription')->isPriceCurrency())
<span class="small">~{{ Yard::instance('subscription')->getCurrencyByKey('price', $row, 2) }} {{ Yard::instance('subscription')->getPriceCurrencyUnit() }} </span>
@endif
</div>
</div>
<div class="col-6 col-sm-3 col-md-3">
<div class="quantity-select text-right">
@if($row->options->comp)
<span class="text-right">1 x</span>
@else
<span class="text-right">{{ $row->qty }} x</span>
@endif
</div>
<div class="price-total text-right mt-2">
<span class="font-bold text-price-total"><strong>{{ $row->subtotal() }} &euro; </strong></span>
@if(Yard::instance('subscription')->isPriceCurrency())
<br>
<span class="small">~{{ Yard::instance('subscription')->getCurrencyByKey('subtotal', $row, 2) }} {{ Yard::instance('subscription')->getPriceCurrencyUnit() }} </span> @endif
</div>
</div>
</div>
</div>
</div>
</div>
@endforeach
<div class="cart-summary mt-4">
<table class="table">
<tbody>
<tr>
<td>{{ __('order.subtotal') }}:</td>
<td class="text-right">
{{ Yard::instance('subscription')->total() }}
@if(Yard::instance('subscription')->isPriceCurrency())
<span class="small">~{{ Yard::instance('subscription')->getCurrencyByKey('subtotal') }} {{ Yard::instance('subscription')->getPriceCurrencyUnit() }}</span>
@endif
</td>
</tr>
<tr>
<td>{{ __('Delivery country') }}:</td>
<td class="text-right">
{{ Yard::instance('subscription')->getShippingCountryName() }}
</td>
</tr>
<tr>
<td>{{ __('order.shipping_costs') }}:</td>
<td class="text-right">
{{ Yard::instance('subscription')->shipping() }}
</td>
</tr>
@if(Yard::instance('subscription')->getUserTaxFree())
<tr>
<td class="">{{ __('order.sum_net') }}:</td>
<td class="text-right">{{ Yard::instance('subscription')->subtotalWithShipping() }} </td>
</tr>
@else
<tr>
<td class="">{{ __('order.total_without_VAT') }}:</td>
<td class="text-right">{{ Yard::instance('subscription')->subtotalWithShipping() }} </td>
</tr>
<tr>
<td class="">{{ __('order.plus_VAT') }}:</td>
<td class="text-right">{{ Yard::instance('subscription')->taxWithShipping() }} </td>
</tr>
@endif
<tr class="total-row">
<td>
@if(Yard::instance('subscription')->getUserTaxFree())
{{ __('order.total_net') }}:
@else
{{ __('order.total_gross') }}:
@endif
</td>
<td class="text-right">
{{ Yard::instance('subscription')->totalWithShipping() }}
@if(Yard::instance('subscription')->isPriceCurrency())
<span class="small">~{{ Yard::instance('subscription')->getCurrencyByKey('totalWithShipping') }} {{ Yard::instance('subscription')->getPriceCurrencyUnit() }}</span>
@endif
</td>
</tr>
</tbody>
</table>
</div>
<div class="abo-settings mt-4">
<h5>{{ __('abo.abo_settings') }}</h5>
<div class="form-group">
<label>{{ __('abo.delivery_day') }}*</label>
<select class="form-control custom-select" name="abo_interval">
{!! HTMLHelper::getAboDeliveryOptions() !!}
</select>
</div>
<div class="alert alert-info">
<i class="fa fa-info-circle"></i> {!! __('abo.abo_order_info') !!}
</div>
</div>
</div>
@endif
</div>
<div class="card-footer">
<button type="submit" class="btn btn-default" name="action" value="back">{{ __('abo.back') }}</button>
<div class="float-right">
<button type="submit" class="btn btn-secondary" name="action" value="checkout"><i class="ion ion-ios-redo"></i> {{ __('order.confirm_and_proceed_to_checkout') }}</button>
</div>
<br><br>
<div class="text-right">
<em class="small"> <i class="fa fa-lock"></i> {!! __('payment.checkout_ssl_server') !!}</em>
</div>
</div>
{!! Form::close() !!}

View file

@ -0,0 +1,15 @@
{!! Form::open(['action' => route('portal.my_subscriptions.create', 2), 'method' => 'POST', 'class' => '']) !!}
<div class="card-body">
<h4>{{ __('abo.my_address') }}</h4>
<p>{{ __('abo.my_address_check_info') }}<br>
<a href="{{route('portal.my_data.edit')}}"><i class="fa fa-edit"></i> {{ __('navigation.my_data') }} {{ __('abo.edit') }}</a></p>
<p>{!! __('order.reorder_info_2', ['country' => $shopping_user->getDeliveryCountry(), 'link' => route('portal.my_data.edit')]) !!}</p>
@include('admin.customer._customer_detail')
</div>
<div class="card-footer">
<button type="submit" class="btn btn-default" name="action" value="back">{{ __('abo.back') }}</button>
<button type="submit" class="btn btn-secondary float-right" name="action" value="next">{{ __('abo.confirm_and_next') }}</button>
</div>
{!! Form::close() !!}

View file

@ -0,0 +1,34 @@
{!! Form::open(['action' => route('portal.my_subscriptions.create', 1), 'method' => 'POST', 'class' => '']) !!}
<div class="card-body">
<h4>{{ __('abo.abo_delivery') }}</h4>
<p>
{{ __('abo.abo_order_info') }}
</p>
<hr class="container-m-nx mt-0 mb-4">
<h5>{{ __('abo.pros_hl') }}</h5>
<ul>
{!! __('abo.pros_list') !!}
</ul>
@if(isset($no_shopping_user) && $no_shopping_user)
@endif
</div>
<div class="card-footer">
@if(!isset($no_shopping_user))
<div class="text-right">
<button type="submit" class="btn btn-secondary" name="action" value="next">{{ __('abo.understood_and_next') }}</button>
</div>
@else
<h4>{{ __('navigation.my_data') }}</h4>
<div class="alert alert-warning">{{ __('abo.change_my_data_empty') }}</div>
<a href="{{ route('portal.my_data.edit') }}" class="btn btn-secondary"><i
class="ion ion-md-person text-default mr-1"></i> {{ __('portal.change_my_data_empty_button') }}</a>
@endif
</div>
{!! Form::close() !!}

View file

@ -0,0 +1,32 @@
{!! Form::open(['action' => route('portal.my_subscriptions.create', 4), 'method' => 'POST', 'class' => '']) !!}
@include('portal.abo.componenten.product-table-styles')
<div class="card-body">
@include('portal.abo.componenten.vat-info')
<div class="alert alert-warning">
<strong>{!! __('abo.abo_type_info', ['base'=>get_abo_type_badge('base'), 'upgrade'=>get_abo_type_badge('upgrade')]) !!}</strong>
</div>
@if(isset($error))
<div class="alert alert-danger">
<strong>{{ $error }}</strong>
</div>
@endif
@include('portal.abo.componenten.product-table', [
'products' => $upgrade_products ?? [],
'productType' => 'upgrade',
'formRoute' => 'portal.my_subscriptions.create',
'formStep' => 4
])
</div>
<div class="card-footer">
<button type="submit" class="btn btn-default" name="action" value="back">{{ __('abo.back') }}</button>
<button type="submit" class="btn btn-secondary float-right" name="action" value="next">{{ __('abo.confirm_and_next') }}</button>
</div>
{!! Form::close() !!}

View file

@ -0,0 +1,124 @@
<style>
/* Basis-Styles */
.btn-md-extra {
padding: 0.3rem 0.6rem;
font-size: 0.8rem;
line-height: 1.5;
border-radius: 0.25rem;
}
.md-btn-extra {
width: calc(1.7rem + 2px) !important;
line-height: 1.5rem;
}
.form-control.input-extra {
padding: 0.28rem 0.6rem;
font-size: 0.8rem;
font-weight: 600;
min-height: calc(1.8rem + 2px);
height: calc(1.8rem + 2px);
width: 44px;
}
.form-control.input-extra.active {
background-color: #f0f0f0;
}
.input-group-min-w {
min-width: 102px;
}
.img-extra {
min-width: 55px;
max-height: 160px;
}
.product-active {
opacity: 1;
}
.product-inactive {
opacity: 0.6;
}
/* Mobile Optimierungen */
@media (max-width: 767px) {
.table thead {
display: none;
}
.table, .table tbody, .table tr, .table td {
display: block;
width: 100%;
}
.table tr {
margin-bottom: 1.5rem;
border: 1px solid #dee2e6;
border-radius: 0.25rem;
padding: 1rem;
background: #fff;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.table td {
border: none;
padding: 0.75rem 0;
position: relative;
padding-left: 50%;
}
.table td:before {
content: attr(data-label);
position: absolute;
left: 0;
width: 45%;
padding-right: 1rem;
font-weight: 600;
color: #666;
}
.table td:first-child {
padding-top: 1rem;
}
.table td:last-child {
padding-bottom: 1rem;
}
.media {
flex-direction: column;
align-items: flex-start !important;
}
.media img {
margin-bottom: 1rem;
margin-right: 0 !important;
max-width: 100%;
height: auto;
}
.media-body {
width: 100%;
}
.input-group-min-w {
min-width: auto;
width: 100%;
}
.input-group {
width: 100% !important;
justify-content: center;
}
.form-control.input-extra {
width: 60px;
}
.no-line-break {
white-space: normal;
}
}
</style>

View file

@ -0,0 +1,82 @@
@props([
'products' => [],
'productType' => 'base', // 'base' oder 'upgrade'
'formRoute' => '',
'formStep' => 3
])
@if(count($products) > 0)
<div class="table-responsive">
<table class="table table- m-0">
<thead>
<tr>
<th>{{ __('abo.' . $productType . '_product') }}</th>
<th>&nbsp;</th>
<th class="text-right">{{ __('order.unit_price') }}</th>
</tr>
</thead>
<tbody>
@foreach($products as $product)
@php
$cartItem = Yard::instance('subscription')->getCartItemByProduct($product->id, 'withTaxFree');
$qty = isset($cartItem->qty) ? $cartItem->qty : 0;
$rowId = isset($cartItem->rowId) ? $cartItem->rowId : '';
@endphp
<tr>
<td class="text-center align-middle px-0" data-label="{{ __('abo.' . $productType . '_product') }}">
<div class="no-line-break input-group-min-w">
<div class="input-group d-inline-flex w-auto">
<span class="input-group-prepend">
<button type="button" class="btn btn-secondary icon-btn md-btn-extra remove-product-qty"
data-row-id="{{ $rowId }}"
data-product-id="{{ $product->id }}">-</button>
</span>
<input type="text"
class="form-control text-center input-extra table-input-event-onchange"
name="{{ $productType }}_product_qty[{{ $product->id }}]"
data-row-id="{{ $rowId }}"
data-product-id="{{ $product->id }}"
value="{{ $qty }}">
<span class="input-group-append">
<button type="button" class="btn btn-secondary icon-btn md-btn-extra add-product-qty"
data-row-id="{{ $rowId }}"
data-product-id="{{ $product->id }}">+</button>
</span>
</div>
</div>
</td>
<td class="p-4" data-label="">
<div class="media align-items-center product-inactive" id="product-{{ $product->id }}">
@if(count($product->images))
<img src="{{ route('product_image', [$product->images->first()->slug]) }}"
class="d-block ui-w-100 ui-bordered mr-4"
alt="{{ $product->getLang('name') }}">
@endif
<div class="media-body">
<h5 class="d-block text-dark">
{{$product->getLang('name')}}
<br>{!! get_abo_type_badge($productType) !!}
</h5>
{!! $product->getLang('copy') !!}
</div>
</div>
</td>
<td class="text-right font-weight-semibold align-middle p-4" data-label="{{ __('order.unit_price') }}">
<span class="no-line-break">
{{ $product->getFormattedPriceWith(\App\Services\UserService::getTaxFree(), false, \App\Services\UserService::$user_country) }}
</span>
@if(\App\Services\UserService::$user_country && \App\Services\UserService::$user_country->currency)
<span class="no-line-break">
{!! $product->getFormattedPriceCurrencyWith(\App\Services\UserService::getTaxFree(), false, \App\Services\UserService::$user_country) !!}
</span>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endif

View file

@ -0,0 +1,18 @@
<div class="row">
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('payment.ordering_country') }}</div>
{{ App\Services\UserService::getOrderInfo('billing_state') }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('payment.country_of_delivery') }}</div>
{{ App\Services\UserService::getOrderInfo('shipping_state') }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('payment.VAT') }}</div>
{{ App\Services\UserService::getOrderInfo('tax_free') }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('payment.reverse_charge_procedure') }}</div>
{{ App\Services\UserService::getOrderInfo('user_reverse_charge') }}
</div>
</div>

View file

@ -0,0 +1,60 @@
@extends('portal.layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-2 mb-2">
{{ __('navigation.my_abo') }}
<span class="text-muted">{{ '#'.$user_abo->payone_userid }}</span>
</h4>
@if(Session::has('alert-error'))
<div class="col-sm-12">
<div class="alert alert-danger p-2 mt-2">
<ul>
<li>{{ Session::get('alert-error') }}</li>
</ul>
</div>
</div>
@endif
<div class="card">
@include('admin.abo._detail')
</div>
<div class="card mt-3">
@include('admin.customer._customer_detail', ['shopping_user' => $customer_detail])
</div>
{!! Form::open(['action' => route('user_abos_update', [$view, $user_abo->id]), 'class' => 'form-horizontal', 'id'=>'cart-order-form']) !!}
<input type="hidden" name="is_for" value="{{ $user_abo->is_for }}">
<div class="card mt-3">
@include('admin.abo._order_abo')
</div>
@if($comp_products && Yard::instance('shopping')->getNumComp() > 0)
<div id="holder_html_view_comp_product">
@include('user.order.comp_product')
</div>
@endif
{{ Form::close() }}
<div class="card mt-3 mb-3">
@include('admin.abo._executions')
</div>
<a href="{{route('user_abos', [$view])}}" class="btn btn-sm btn-default float-right">{{ __('back') }}</a>
@endsection
@section('scripts')
<script src="{{ asset('/js/iq-modal-cart.js') }}?v=1{{ get_file_last_time('/js/iq-modal-cart.js') }}"></script>
<script type="application/javascript">
var iqModalCart = IqModalCart.init();
$( document ).ready(function() {
});
</script>
@endsection

View file

@ -0,0 +1,174 @@
@extends('portal.layouts.layout-2')
@section('content')
@if ($errors->any())
<div class="row">
<div class="col-sm-12">
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
</div>
@endif
<h4 class="font-weight-bold py-2 mb-2">
{{__('abo.create_abo')}}
</h4>
<style>
.smartwizard-abo .nav-link {
pointer-events: none;
opacity: 0.7;
}
.smartwizard-abo .nav-link.active {
pointer-events: auto;
opacity: 1;
}
</style>
<div id="smartwizard" class="smartwizard-abo">
<ul class="card px-4 pt-3 mb-3">
<li>
<a href="#smartwizard-step-0" class="mb-3">
<span class="sw-done-icon ion ion-md-checkmark"></span>
<span class="sw-number">1</span>
{{__('abo.abo')}}
<div class="text-muted small">{{__('abo.info')}}</div>
</a>
</li>
<li>
<a href="#smartwizard-step-1" class="mb-3">
<span class="sw-done-icon ion ion-md-checkmark"></span>
<span class="sw-number">2</span>
{{__('abo.data')}}
<div class="text-muted small">{{__('abo.check')}}</div>
</a>
</li>
<li>
<a href="#smartwizard-step-2" class="mb-3">
<span class="sw-done-icon ion ion-md-checkmark"></span>
<span class="sw-number">3</span>
{{__('abo.basis_product')}}
<div class="text-muted small">{{__('abo.choose')}}</div>
</a>
</li>
<li>
<a href="#smartwizard-step-3" class="mb-3">
<span class="sw-done-icon ion ion-md-checkmark"></span>
<span class="sw-number">4</span>
{{__('abo.upgrade_products')}}
<div class="text-muted small">{{__('abo.choose')}}</div>
</a>
</li>
<li>
<a href="#smartwizard-step-4" class="mb-3">
<span class="sw-done-icon ion ion-md-checkmark"></span>
<span class="sw-number">5</span>
{{__('abo.check')}}
<div class="text-muted small">{{__('abo.order')}}</div>
</a>
</li>
</ul>
<div class="mb-3">
<div id="smartwizard-step-0" class="card animated fadeIn">
@include('portal.abo._create_info')
</div>
@if(!isset($no_shopping_user))
<div id="smartwizard-step-1" class="card animated fadeIn">
@include('portal.abo._create_data')
</div>
<div id="smartwizard-step-2" class="card animated fadeIn">
@include('portal.abo._create_basis_product')
</div>
<div id="smartwizard-step-3" class="card animated fadeIn">
@include('portal.abo._create_upgrade_products')
</div>
<div id="smartwizard-step-4" class="card animated fadeIn">
@include('portal.abo._create_check')
</div>
@endif
</div>
</div>
@endsection
@section('scripts')
<link rel="stylesheet" href="{{ asset('/vendor/libs/smartwizard/smartwizard.css') }}">
<script src="{{ asset('/vendor/libs/smartwizard/smartwizard.js') }}"></script>
<script src="{{ asset('js/product-quantity.js') }}?v={{ get_file_last_time('/js/product-quantity.js') }}"></script>
<script>
$( document ).ready(function() {
$('.smartwizard-abo').smartWizard({
autoAdjustHeight: true,
backButtonSupport: true,
useURLhash: false,
showStepURLhash: false,
selected: '{{$step}}',
toolbarSettings: {
showNextButton: false,
showPreviousButton: false,
},
/*events: {
leaveStep: function(e, anchorObject, stepNumber, stepDirection) {
// Formular im aktuellen Schritt finden
const $currentForm = $(e.target).find('.tab-pane.active form');
if ($currentForm.length) {
// Temporäres Formular erstellen und absenden
const $tempForm = $('<form>', {
'method': 'POST',
'action': $currentForm.attr('action'),
'style': 'display: none;'
});
// Alle Input-Felder kopieren
$currentForm.find('input').each((_, input) => {
const $input = $(input);
if ($input.attr('type') === 'text') {
const value = parseInt($input.val()) || 0;
if (value > 0) {
$tempForm.append($('<input>', {
'type': 'hidden',
'name': $input.attr('name'),
'value': value
}));
}
}
});
// CSRF-Token hinzufügen
$tempForm.append($('<input>', {
'type': 'hidden',
'name': '_token',
'value': $('meta[name="csrf-token"]').attr('content')
}));
// Action-Button-Wert hinzufügen
$tempForm.append($('<input>', {
'type': 'hidden',
'name': 'action',
'value': 'next'
}));
// Formular zum Body hinzufügen und absenden
$('body').append($tempForm);
$tempForm.submit();
return false; // Verhindert den normalen Schrittwechsel
}
}
}*/
});
});
</script>
@endsection

View file

@ -0,0 +1,114 @@
@extends('portal.layouts.layout-2')
@section('content')
@if ($errors->any())
<div class="row">
<div class="col-sm-12">
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
</div>
@endif
<h4 class="font-weight-bold py-2 mb-2">
{{__('abo.create_abo')}}
</h4>
<div id="smartwizard" class="smartwizard-abo">
<ul class="card px-4 pt-3 mb-3">
<li>
<a href="#smartwizard-step-0" class="mb-3">
<span class="sw-done-icon ion ion-md-checkmark"></span>
<span class="sw-number">1</span>
{{__('abo.abo')}}
<div class="text-muted small">{{__('abo.info')}}</div>
</a>
</li>
<li>
<a href="#smartwizard-step-1" class="mb-3">
<span class="sw-done-icon ion ion-md-checkmark"></span>
<span class="sw-number">1</span>
{{__('abo.data')}}
<div class="text-muted small">{{__('abo.check')}}</div>
</a>
</li>
<li>
<a href="#smartwizard-step-2" class="mb-3">
<span class="sw-done-icon ion ion-md-checkmark"></span>
<span class="sw-number">2</span>
{{__('abo.basis_product')}}
<div class="text-muted small">{{__('abo.choose')}}</div>
</a>
</li>
<li>
<a href="#smartwizard-step-3" class="mb-3">
<span class="sw-done-icon ion ion-md-checkmark"></span>
<span class="sw-number">3</span>
{{__('abo.upgrade_products')}}
<div class="text-muted small">{{__('abo.choose')}}</div>
</a>
</li>
<li>
<a href="#smartwizard-step-4" class="mb-3">
<span class="sw-done-icon ion ion-md-checkmark"></span>
<span class="sw-number">4</span>
{{__('abo.check')}}
<div class="text-muted small">{{__('abo.order')}}</div>
</a>
</li>
</ul>
<div class="mb-3">
<div id="smartwizard-step-0" class="card animated fadeIn">
@include('portal.abo._create_info')
</div>
<div id="smartwizard-step-1" class="card animated fadeIn">
</div>
<div id="smartwizard-step-2" class="card animated fadeIn">
</div>
<div id="smartwizard-step-3" class="card animated fadeIn">
</div>
<div id="smartwizard-step-4" class="card animated fadeIn">
</div>
</div>
</div>
@endsection
@section('scripts')
<link rel="stylesheet" href="{{ mix('/vendor/libs/smartwizard/smartwizard.css') }}">
<script src="{{ mix('/vendor/libs/smartwizard/smartwizard.js') }}"></script>
<script>
$( document ).ready(function() {
$('.smartwizard-abo').smartWizard({
autoAdjustHeight: true,
backButtonSupport: true,
useURLhash: false,
showStepURLhash: false,
selected: '{{$step}}',
toolbarSettings: {
showNextButton: false,
showPreviousButton: false,
}
});
});
</script>
@endsection

View file

@ -0,0 +1,53 @@
@extends('portal.layouts.auth')
@section('content')
<!-- Content -->
<div class="authentication-wrapper authentication-2 ui-bg-cover ui-bg-overlay-container px-4" style="background-image: url({{asset('images/back-in2.jpg')}});">
<div class="ui-bg-overlay bg-dark opacity-25"></div>
<div class="authentication-inner py-5">
<div class="card">
@include('layouts.includes.header-language')
<div class="p-4 p-sm-4" style="padding-bottom: 1.5rem !important;">
<div class="d-flex justify-content-center align-items-center pb-2 mb-2">
<div class="">
<div class="w-100 position-relative">
<a href="https://www.mivita.care"><img src="{{ asset('/images/logo_mivita.png') }}" alt="mivita.care" class=""></a>
</div>
</div>
</div>
<form method="POST" class="my-2" action="{{ route('portal.logout_change') }}" aria-label="{{ __('portal.login_button') }}">
@csrf
<h4 class="text-center mb-4">{{ __('portal.change_login_title') }}</h4>
<div class="d-flex flex-column align-items-center m-0 mt-2">
<p class="text-center">
{{ __('portal.change_login_description') }}
</p>
</div>
<div class="d-flex justify-content-between align-items-center m-0">
<button type="submit" class="btn btn-primary btn-block">{{ __('portal.logout_button') }}</button>
</div>
<div class="d-flex flex-column align-items-center m-0 mt-2">
<p class="text-center small border-top pt-2 mt-2">
{{ __('portal.change_login_description3') }}
</p>
</div>
</form>
<div class="mt-1 text-center justify-content-center">
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="data_protection" data-target="#modal-loading">{{__('register.data_protection')}}</button>
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="imprint" data-target="#modal-loading">{{__('imprint')}}</button>
</div>
<div class="mt-1 text-center justify-content-center">
<a href="{{ Util::getMyMivitaShopUrl() }}" class="btn btn-secondary mt-2 btn-sm">{{__('portal.back_to_shop')}}</a>
</div>
</div>
</div>
</div>
</div>
@endsection

View file

@ -0,0 +1,74 @@
@extends('portal.layouts.auth')
@section('content')
<!-- Content -->
<div class="authentication-wrapper authentication-2 ui-bg-cover ui-bg-overlay-container px-4" style="background-image: url({{asset('images/back-in2.jpg')}});">
<div class="ui-bg-overlay bg-dark opacity-25"></div>
<div class="authentication-inner py-5">
<div class="card">
@include('layouts.includes.header-language')
<div class="p-4 p-sm-4" style="padding-bottom: 1.5rem !important;">
<!-- Logo -->
<div class="d-flex justify-content-center align-items-center pb-2 mb-2">
<div class="">
<div class="w-100 position-relative">
<a href="https://www.mivita.care"><img src="{{ asset('/images/logo_mivita.png') }}" alt="mivita.care" class=""></a>
</div>
</div>
</div>
<!-- / Logo -->
<!-- Form -->
<form method="POST" class="my-2" action="{{ route('portal.login.send-otp') }}" aria-label="{{ __('portal.login_button') }}">
@csrf
<h4 class="text-center mb-4">{{ __('portal.login_title') }}</h4>
@if(Util::isTestSystem(true))
<h5 class="text-center mb-4">TestSystem</h5>
@php
$email = 'kevin@adametz.media';
@endphp
@endif
<div class="form-group">
<label class="form-label">{{ __('portal.login_email') }}</label>
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ $email ?? old('email') }}" required autofocus>
@if ($errors->has('email'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
<div class="d-flex justify-content-between align-items-center m-0">
<button type="submit" class="btn btn-primary btn-block">{{ __('portal.login_button') }}</button>
</div>
<div class="d-flex flex-column align-items-center m-0 mt-2 border-top pt-2">
<p class="text-center small">
{{ __('portal.login_send_otp_description') }}
</p>
<p class="text-center small border-top pt-2 mt-2">
{{ __('portal.login_send_otp_description2') }}
</p>
</div>
</form>
<!-- / Form -->
<div class="mt-1 text-center justify-content-center">
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="data_protection" data-target="#modal-loading">{{__('register.data_protection')}}</button>
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="imprint" data-target="#modal-loading">{{__('imprint')}}</button>
</div>
<div class="mt-1 text-center justify-content-center">
<a href="{{ Util::getMyMivitaShopUrl() }}" class="btn btn-secondary mt-2 btn-sm">{{__('portal.back_to_shop')}}</a>
</div>
</div>
</div>
</div>
</div>
@endsection

View file

@ -0,0 +1,184 @@
@extends('portal.layouts.auth')
@section('content')
<style>
.otp-input {
height: 58px;
padding: 0 10px;
text-align: center;
font-size: 24px;
font-weight: bold;
border-radius: 8px;
border: 1px solid #e0e0e0;
transition: all 0.2s ease-in-out;
}
.otp-input:focus {
border-color: #007bff;
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.otp-input:focus-visible {
outline: none;
}
.otp-input:hover {
border-color: #007bff;
}
.otp-input:active {
border-color: #007bff;
}
.otp-input:disabled {
background-color: #f8f9fa;
border-color: #e9ecef;
color: #adb5bd;
}
.gap-2 {
gap: .5rem;
}
</style>
<!-- Content -->
<div class="authentication-wrapper authentication-2 ui-bg-cover ui-bg-overlay-container px-4" style="background-image: url({{asset('images/back.jpg')}});">
<div class="ui-bg-overlay bg-dark opacity-25"></div>
<div class="authentication-inner py-5">
<div class="card">
@include('layouts.includes.header-language')
<div class="p-4 p-sm-4" style="padding-bottom: 1.5rem !important;">
<!-- Logo -->
<div class="d-flex justify-content-center align-items-center pb-2 mb-2">
<div class="">
<div class="w-100 position-relative">
<a href="https://www.mivita.care"><img src="{{ asset('/images/logo_mivita.png') }}" alt="mivita.care" class=""></a>
</div>
</div>
</div>
<!-- / Logo -->
<!-- Form -->
<form method="POST" class="my-3" action="{{ route('portal.login.verify-otp') }}" aria-label="{{ __('portal.login_button') }}" id="otp-form">
@csrf
<h4 class="text-center mb-4">{{ __('portal.verify_otp_title') }}</h4>
<div class="form-group">
<label class="form-label text-center">{{ __('portal.verify_otp_description') }}</label>
<div class="mb-3">
<div class="d-flex align-items-center gap-2">
<input type="text" class="form-control otp-input" maxlength="1" id="otp1" name="otp1" placeholder="" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value[0] : '' }}">
<input type="text" class="form-control otp-input" maxlength="1" id="otp2" name="otp2" placeholder="" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value[1] : '' }}">
<input type="text" class="form-control otp-input" maxlength="1" id="otp3" name="otp3" placeholder="" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value[2] : '' }}">
<input type="text" class="form-control otp-input" maxlength="1" id="otp4" name="otp4" placeholder="" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value[3] : '' }}">
<input type="text" class="form-control otp-input" maxlength="1" id="otp5" name="otp5" placeholder="" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value[4] : '' }}">
<input type="text" class="form-control otp-input" maxlength="1" id="otp6" name="otp6" placeholder="" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value[5] : '' }}">
</div>
</div>
{{-- Hidden field to combine OTP values --}}
<input type="hidden" name="otp" id="otp" value="{{ isset($otp_value) && strlen($otp_value) === 6 ? $otp_value : '' }}">
<input type="hidden" name="email" id="email" value="{{ $email }}">
</div>
@error('otp')
<div class="text-danger text-center font-weight-bold mt-1">{{ $message }}</div>
@enderror
<div class="d-flex justify-content-between align-items-center m-0 mt-3">
<button type="submit" class="btn btn-primary btn-block">{{ __('portal.login_button') }}</button>
</div>
<div class="d-flex justify-content-between align-items-center m-0 mt-4">
<p class="text-center small">
{{ __('portal.verify_otp_resend') }}<br>
<a class="btn btn-link btn-xs btn-secondary mt-2" href="{{ route('portal.login.form') }}">{{ __('portal.verify_otp_resend_link') }}</a>
</p>
</div>
</form>
<!-- / Form -->
<div class="mt-2 text-center justify-content-center">
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="data_protection" data-target="#modal-loading">{{__('register.data_protection')}}</button>
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="imprint" data-target="#modal-loading">{{__('imprint')}}</button>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('scripts')
<script>
document.addEventListener('DOMContentLoaded', function () {
const inputs = document.querySelectorAll('.otp-input');
const otpForm = document.getElementById('otp-form');
const hiddenOtpField = document.getElementById('otp');
inputs.forEach((input, index) => {
input.addEventListener('input', (e) => {
// Move to next input if current one is filled
if (input.value.length === 1 && index < inputs.length - 1) {
inputs[index + 1].focus();
}
combineOtpValues(); // Update hidden field on input
});
input.addEventListener('keydown', (e) => {
// Move to previous input on backspace if current one is empty
if (e.key === 'Backspace' && input.value.length === 0 && index > 0) {
inputs[index - 1].focus();
}
combineOtpValues(); // Update hidden field on keydown
});
input.addEventListener('paste', (e) => {
e.preventDefault();
const pasteData = (e.clipboardData || window.clipboardData).getData('text');
const digits = pasteData.replace(/\D/g, '').split(''); // Get only digits
inputs.forEach((inputField, i) => {
if (digits[i]) {
inputField.value = digits[i];
if (i < inputs.length - 1 && digits.length > 1) { // Move focus if pasting multiple digits
inputs[i + 1].focus();
}
} else {
inputField.value = ''; // Clear if paste data is shorter
}
});
if(digits.length >= inputs.length) {
inputs[inputs.length - 1].focus(); // Focus last field if paste is long enough
}
combineOtpValues(); // Update hidden field after paste
});
});
// Combine OTP values into the hidden field before submitting
function combineOtpValues() {
let combinedValue = '';
inputs.forEach(input => {
combinedValue += input.value;
});
hiddenOtpField.value = combinedValue;
console.log(hiddenOtpField.value);
}
// Ensure combined value is updated on form submit
otpForm.addEventListener('submit', function(e) {
combineOtpValues();
// Basic validation: ensure all 6 digits are entered
if (hiddenOtpField.value.length !== 6) {
e.preventDefault(); // Prevent form submission
// Optionally: show an error message to the user
alert('Bitte geben Sie alle 6 Ziffern des OTP-Codes ein.');
}
});
// Automatically focus the first input field if it's empty
if(inputs[0].value === '') {
inputs[0].focus();
} else if(hiddenOtpField.value.length === 6) {
// If prefilled, focus the submit button or last input
inputs[inputs.length - 1].focus();
}
});
</script>
@endsection

View file

@ -0,0 +1,437 @@
<div class="card mb-4">
<h5 class="card-header">
<div class="row">
<div class="col-xs-12 col-sm-6">
{{ __('customer.customer_billing_address') }}
</div>
<div class="col-xs-12 col-sm-6">
<span class="text-tiny float-right">* {{trans('register.required_fields')}}</span>
<span class="d-none d-lg-inline">{{ __('Delivery address') }}</span>
</div>
</div>
</h5>
<div class="card-body">
<div class="row">
<div class="col-12 col-lg-6">
<div class="form-row">
<div class="form-group col-md-12">
<label for="billing_company" class="form-label">{{ __('Company name') }} ({{__('optional')}})</label>
{{ Form::text('billing_company', $shopping_user->billing_company, array('placeholder'=>__('Company name'), 'class'=>'form-control', 'id'=>'billing_company', 'tabindex' => 1)) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6 {{ $errors->has('billing_salutation') ? 'has-error' : '' }}">
<label class="form-label">{{ __('Salutation') }}*</label>
<select class="selectpicker" data-style="btn-light" name="billing_salutation" id="billing_salutation" required tabindex="2">
{!! HTMLHelper::getSalutation($shopping_user->billing_salutation) !!}
</select>
@if ($errors->has('billing_salutation'))
<span class="help-block">
<strong>{{ $errors->first('billing_salutation') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6 {{ $errors->has('billing_firstname') ? 'has-error' : '' }}">
<label class="form-label" for="billing_firstname">{{ __('First name') }}*</label>
{{ Form::text('billing_firstname', $shopping_user->billing_firstname, array('placeholder'=>__('First name'), 'class'=>'form-control', 'id'=>'billing_firstname', 'required'=>true, 'tabindex' => 4)) }}
@if ($errors->has('billing_firstname'))
<span class="help-block">
<strong>{{ $errors->first('billing_firstname') }}</strong>
</span>
@endif
</div>
<div class="form-group col-md-6 {{ $errors->has('billing_lastname') ? 'has-error' : '' }}">
<label class="form-label" for="billing_lastname">{{ __('Last name') }}*</label>
{{ Form::text('billing_lastname', $shopping_user->billing_lastname, array('placeholder'=>__('Last name'), 'class'=>'form-control', 'id'=>'billing_lastname', 'required'=>true, 'tabindex' => 5)) }}
@if ($errors->has('billing_lastname'))
<span class="help-block">
<strong>{{ $errors->first('billing_lastname') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('billing_address') ? 'has-error' : '' }}">
<label class="form-label" for="billing_address">{{ __('Street') }} / {{ __('House number') }}*</label>
{{ Form::text('billing_address', $shopping_user->billing_address, array('placeholder'=>__('Street'), 'class'=>'form-control', 'required'=>true, 'id'=>'billing_address', 'tabindex' => 6)) }}
@if ($errors->has('billing_address'))
<span class="help-block">
<strong>{{ $errors->first('billing_address') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('billing_address_2') ? 'has-error' : '' }}">
<label class="form-label" for="billing_address_2">{{ __('Flat Building optional') }}</label>
{{ Form::text('billing_address_2', $shopping_user->billing_address_2, array('placeholder'=>__('Flat Building optional'), 'class'=>'form-control', 'id'=>'billing_address_2', 'tabindex' => 6)) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6 {{ $errors->has('billing_zipcode') ? 'has-error' : '' }}">
<label class="form-label" for="billing_zipcode">{{ __('Postcode') }}*</label>
{{ Form::text('billing_zipcode', $shopping_user->billing_zipcode, array('placeholder'=>__('Postcode'), 'class'=>'form-control', 'required'=>true, 'id'=>'billing_zipcode', 'tabindex' => 7)) }}
@if ($errors->has('billing_zipcode'))
<span class="help-block">
<strong>{{ $errors->first('billing_zipcode') }}</strong>
</span>
@endif
</div>
<div class="form-group col-md-6 {{ $errors->has('billing_city') ? 'has-error' : '' }}">
<label class="form-label" for="billing_city">{{ __('City') }}*</label>
{{ Form::text('billing_city', $shopping_user->billing_city, array('placeholder'=>__('City'), 'class'=>'form-control', 'required'=>true, 'id'=>'billing_city', 'tabindex' => 8)) }}
@if ($errors->has('billing_city'))
<span class="help-block">
<strong>{{ $errors->first('billing_city') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('billing_country_id') ? 'has-error' : '' }}">
<label class="form-label">{{ __('Country') }}*</label>
<select class="selectpicker" name="billing_country_id" id="billing_country_id" data-style="btn-light" data-live-search="true" required tabindex="9">
{!! HTMLHelper::getContriesWithMore($shopping_user->billing_country_id) !!}
</select>
@if ($errors->has('billing_country_id'))
<span class="help-block">
<strong>{{ $errors->first('billing_country_id') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('billing_phone') ? 'has-error' : '' }}">
<label class="form-label" for="billing_phone">{{ __('Phone') }}</label>
{{ Form::text('billing_phone', $shopping_user->billing_phone, array('placeholder'=>__('Phone'), 'class'=>'form-control', 'id'=>'billing_phone', 'tabindex' => 11)) }}
</div>
</div>
</div>
<div class="col-12 col-lg-6">
<div class="d-md-block d-lg-none">
<hr>
<h5 class="mt-4">{{ __('Delivery address') }}</h5>
</div>
<div id="show_shipping_address" style="@if($shopping_user->same_as_billing) display:none @endif">
<div class="form-row">
<div class="form-group col-md-12">
<label for="shipping_company" class="form-label">{{ __('Company name') }} ({{__('optional')}})</label>
{{ Form::text('shipping_company', $shopping_user->shipping_company, array('placeholder'=>__('Company name'), 'class'=>'form-control', 'id'=>'shipping_company', 'tabindex' => 16)) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6 {{ $errors->has('shipping_salutation') ? 'has-error' : '' }}">
<label class="form-label">{{ __('Salutation') }}*</label>
<select class="selectpicker" data-style="btn-light" name="shipping_salutation" id="shipping_salutation" required tabindex="17">
{!! HTMLHelper::getSalutation($shopping_user->shipping_salutation) !!}
</select>
@if ($errors->has('shipping_salutation'))
<span class="help-block">
<strong>{{ $errors->first('shipping_salutation') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6 {{ $errors->has('shipping_firstname') ? 'has-error' : '' }}">
<label class="form-label" for="shipping_firstname">{{ __('First name') }}*</label>
{{ Form::text('shipping_firstname', $shopping_user->shipping_firstname, array('placeholder'=>__('First name'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_firstname', 'tabindex' => 18)) }}
@if ($errors->has('shipping_firstname'))
<span class="help-block">
<strong>{{ $errors->first('shipping_firstname') }}</strong>
</span>
@endif
</div>
<div class="form-group col-md-6 {{ $errors->has('shipping_lastname') ? 'has-error' : '' }}">
<label class="form-label" for="shipping_lastname">{{ __('Last name') }}*</label>
{{ Form::text('shipping_lastname', $shopping_user->shipping_lastname, array('placeholder'=>__('Last name'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_lastname', 'tabindex' => 19)) }}
@if ($errors->has('shipping_lastname'))
<span class="help-block">
<strong>{{ $errors->first('shipping_lastname') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('shipping_address') ? 'has-error' : '' }}">
<label class="form-label" for="shipping_address">{{ __('Street') }} / {{ __('House number') }}*</label>
{{ Form::text('shipping_address', $shopping_user->shipping_address, array('placeholder'=>__('Street'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_address', 'tabindex' => 20)) }}
@if ($errors->has('shipping_address'))
<span class="help-block">
<strong>{{ $errors->first('shipping_address') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('shipping_address_2') ? 'has-error' : '' }}">
<label class="form-label" for="shipping_address_2">{{ __('Flat Building optional') }}</label>
{{ Form::text('shipping_address_2', $shopping_user->shipping_address_2, array('placeholder'=>__('Flat Building optional'), 'class'=>'form-control', 'id'=>'shipping_address_2', 'tabindex' => 21)) }}
@if ($errors->has('shipping_address_2'))
<span class="help-block">
<strong>{{ $errors->first('shipping_address_2') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6 {{ $errors->has('shipping_zipcode') ? 'has-error' : '' }}">
<label class="form-label" for="shipping_zipcode">{{ __('Postcode') }}*</label>
{{ Form::text('shipping_zipcode', $shopping_user->shipping_zipcode, array('placeholder'=>__('Postcode'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_zipcode', 'tabindex' => 22)) }}
@if ($errors->has('shipping_zipcode'))
<span class="help-block">
<strong>{{ $errors->first('shipping_zipcode') }}</strong>
</span>
@endif
</div>
<div class="form-group col-md-6 {{ $errors->has('shipping_city') ? 'has-error' : '' }}">
<label class="form-label" for="shipping_city">{{ __('City') }}*</label>
{{ Form::text('shipping_city', $shopping_user->shipping_city, array('placeholder'=>__('City'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_city', 'tabindex' => 23)) }}
@if ($errors->has('shipping_city'))
<span class="help-block">
<strong>{{ $errors->first('shipping_city') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('shipping_country_id') ? 'has-error' : '' }}">
<label class="form-label">{{ __('Country') }}*</label>
<select class="selectpicker" name="shipping_country_id" id="shipping_country_id" data-style="btn-light" data-live-search="true" required tabindex="24">
{!! HTMLHelper::getContriesWithMore($shopping_user->shipping_country_id) !!}
</select>
@if ($errors->has('shipping_country_id'))
<span class="help-block">
<strong>{{ $errors->first('shipping_country_id') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12">
<label class="form-label" for="shipping_phone">{{ __('Phone') }}</label>
{{ Form::text('shipping_phone', $shopping_user->shipping_phone, array('placeholder'=>__('Phone'), 'class'=>'form-control', 'id'=>'shipping_phone', 'tabindex' => 26)) }}
</div>
</div>
</div>
<div class="form-group">
<label class="custom-control custom-checkbox m-0">
<input type="checkbox" class="custom-control-input" name="same_as_billing" id="same_as_billing" @if($shopping_user->same_as_billing) checked="checked" @endif>
<span class="custom-control-label">{{__('Shipping to the same address')}}</span>
</label>
</div>
<hr>
</div>
</div>
@if($isView === 'customer')
@endif
<div class="card mb-4">
<div class="card-body">
<div class="form-group">
<label class="custom-control custom-checkbox m-0">
<input type="checkbox" class="custom-control-input" name="has_buyed" id="has_buyed" @if($shopping_user->has_buyed) checked="checked" @endif>
<span class="custom-control-label">{{ __('customer.customer_has_already_buy') }}</span>
</label>
</div>
<div class="alert alert-warning mt-3" id="show_has_buyed" style="display: @if($shopping_user->has_buyed) block @else none @endif;">
<label class="custom-control custom-checkbox m-0">
<input type="checkbox" class="custom-control-input" name="subscribed" id="subscribed" @if($shopping_user->subscribed) checked="checked" @endif >
<span class="custom-control-label">{{ __('customer.newsletter_subscribed_copy1') }}</span>
</label>
</div>
</div>
</div>
<hr>
<div class="form-row">
<div class="form-group col-md-12">
<label class="form-label" for="remarks">{{ __('Comments') }}</label>
{{ Form::textarea('remarks', $shopping_user->remarks, array('placeholder'=>__('Comments'), 'class'=>'form-control', 'rows'=>4, 'id'=>'remarks')) }}
</div>
</div>
<hr>
{{ Form::hidden('faker_mail', $shopping_user->faker_mail) }}
{{ Form::hidden('language', $shopping_user->language) }}
@if($isView === 'customer-add')
{{ Form::hidden('billing_email_1', $billing_email) }}
{{ Form::hidden('billing_email-confirm_1', $billing_email) }}
@if($shopping_user->faker_mail)
{{ Form::hidden('billing_email', $billing_email) }}
{{ Form::hidden('billing_email-confirm', $billing_email) }}
@else
<div class="form-row">
<div class="form-group col-md-6">
<label class="form-label" for="billing_email">{{ __('E-Mail Address') }}*</label>
{{ Form::text('billing_email', $billing_email, array('placeholder'=>'E-Mail', 'class'=>'form-control', 'id'=>'billing_email', 'readonly')) }}
</div>
<div class="form-group col-md-6">
<label class="form-label" for="billing_email-confirm">{{ __('Confirm E-Mail') }}*</label>
{{ Form::text('billing_email-confirm', $billing_email, array('placeholder'=>__('Confirm E-Mail'), 'class'=>'form-control', 'id'=>'billing_email-confirm', 'readonly')) }}
</div>
</div>
@endif
@else
@if($shopping_user->faker_mail)
{{ Form::hidden('billing_email', $shopping_user->billing_email) }}
{{ Form::hidden('billing_email-confirm', $shopping_user->billing_email) }}
@if($isAdmin != 1)
@if ($errors->has('email'))
<span class="help-block">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
<h6 class="card-header bg-light">
<a href="#" class="" data-toggle="collapse" data-target="#collapseNewMailAddress" aria-expanded="@if($errors->has('new_email_address')) true @else false @endif" aria-controls="collapseNewMailAddress">
<i class="fa fa-caret-expand"></i> {{ __('E-Mail Address') }} {{ __('add') }}
</a>
</h6>
<div class="collapse @if($errors->has('new_email_address')) show @endif" id="collapseNewMailAddress">
<div class="form-row mt-2 mb-0">
<div class="form-group col-md-12 {{ $errors->has('new_email_address') ? 'has-error' : '' }}">
<label class="form-label" for="new_email_address">{{ __('E-Mail Address') }}*</label>
{{ Form::text('new_email_address', '', array('placeholder'=>__('E-Mail Address'), 'class'=>'form-control', 'id'=>'new_email_address', 'required'=>true ,'tabindex' => 1)) }}
@if ($errors->has('new_email_address'))
<span class="help-block">
<strong>{{ $errors->first('new_email_address') }}</strong>
</span>
@endif
<p class="mt-2">{{ __('customer.customer_sovereignty_info1') }}</p>
<button type="submit" class="btn btn-secondary btn-sm" name="action" value="add-mail-shopping-user-store">{{ __('E-Mail Address') }} {{ __('customer.check_and_save') }}</button>
</div>
</div>
</div>
@endif
@else
<div class="form-row">
<div class="form-group col-md-6">
<label class="form-label" for="billing_email">{{ __('E-Mail Address') }}*</label>
{{ Form::text('billing_email', $shopping_user->billing_email, array('placeholder'=>'E-Mail', 'class'=>'form-control', 'id'=>'billing_email')) }}
</div>
<div class="form-group col-md-6">
<label class="form-label" for="billing_email-confirm">{{ __('Confirm E-Mail') }}</label>
{{ Form::text('billing_email-confirm', $shopping_user->billing_email, array('placeholder'=>__('Confirm E-Mail'), 'class'=>'form-control', 'id'=>'billing_email-confirm')) }}
</div>
</div>
@endif
@endif
</div>
</div>
<script type="application/javascript">
$( document ).ready(function() {
$('input#has_buyed').on('change', function () {
if($(this).prop('checked')){
$('input#subscribed').prop('checked', true);
$('#show_has_buyed').show('slow');
}else{
$('input#subscribed').prop('checked', false);
$('#show_has_buyed').hide('slow');
}
});
// Shipping Address show|hide
$("#same_as_billing").on("change", function () {
$('#show_shipping_address').slideToggle(200, function () {
// scroll down to shipping area.
if ($('#show_shipping_address').is(":visible")) {
_scrollTo('#show_shipping_address', 20);
}
});
});
$.extend( $.validator.messages, {
required: "{{__('account.validator_required')}}",
maxlength: $.validator.format( "{{__('account.validator_maxlength')}}" ),
minlength: $.validator.format( "{{__('account.validator_minlength')}}" ),
rangelength: $.validator.format( "{{__('account.validator_rangelength')}}" ),
email: "{{__('account.validator_email')}}",
url: "{{__('account.validator_url')}}",
date: "{{__('account.validator_date')}}",
number: "{{__('account.validator_number')}}",
digits: "{{__('account.validator_digits')}}",
equalTo: "{{__('account.validator_equalTo')}}",
range: $.validator.format( "{{__('account.validator_range')}}" ),
max: $.validator.format( "{{__('account.validator_max')}}" ),
min: $.validator.format( "{{__('account.validator_min')}}" ),
creditcard: "{{__('account.validator_creditcard')}}"
});
// Set up validator
$('#lead-form-validation').validate({
rules: {
'billing_email-confirm': {
required: true,
equalTo: "#billing_email"
},
},
errorPlacement: function errorPlacement(error, element) {
$(element).parents('.form-group').append(
error.addClass('invalid-feedback small d-block')
)
},
highlight: function (element) {
if ($(element).hasClass('selectpicker')) {
$(element).parent().addClass('is-invalid');
}
$(element).addClass('is-invalid');
},
unhighlight: function (element) {
$(element).removeClass('is-invalid');
$(element).parents('.form-group').find('.is-invalid').removeClass('is-invalid');
},
messages : {
required: "{{__('This field is required.')}}",
country_id : {
required: "{{__('This field is required.')}}",
},
salutation : {
required: "{{__('please specify')}}",
},
first_name : {
required: "{{__('This field is required.')}}",
},
last_name : {
required: "{{__('This field is required.')}}",
},
zipcode : {
required: "{{__('This field is required.')}}",
},
address : {
required: "{{__('This field is required.')}}",
},
city : {
required: "{{__('This field is required.')}}",
},
equalTo : "{{__('Please enter the same value again.')}}",
'billing_email-confirm' : {
equalTo : "{{__('Please enter the same value again.')}}",
required: "{{__('This field is required.')}}",
},
billing_email: {
required : "{{__('This field is required.')}}",
email: "{{ __('Please enter a valid email address.') }}",
remote : "{{ __('This E-mail is already in use.') }}"
},
},
onkeyup: false
});
});
</script>

View file

@ -0,0 +1,328 @@
<div class="card mb-4">
<h5 class="card-header">
<div class="row">
<div class="col-xs-12 col-sm-6">
{{ __('customer.customer_billing_address') }}
</div>
<div class="col-xs-12 col-sm-6">
<span class="text-tiny float-right">* {{trans('register.required_fields')}}</span>
<span class="d-none d-lg-inline">{{ __('Delivery address') }}</span>
</div>
</div>
</h5>
<div class="card-body">
<div class="row">
<div class="col-12 col-lg-6">
<div class="form-row">
<div class="form-group col-md-12">
<label for="billing_company" class="form-label">{{ __('Company name') }} ({{__('optional')}})</label>
{{ Form::text('billing_company', $shopping_user->billing_company, array('placeholder'=>__('Company name'), 'class'=>'form-control', 'id'=>'billing_company', 'tabindex' => 1)) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6 {{ $errors->has('billing_salutation') ? 'has-error' : '' }}">
<label class="form-label">{{ __('Salutation') }}*</label>
<select class="selectpicker" data-style="btn-light" name="billing_salutation" id="billing_salutation" required tabindex="2">
{!! HTMLHelper::getSalutation($shopping_user->billing_salutation) !!}
</select>
@if ($errors->has('billing_salutation'))
<span class="help-block">
<strong>{{ $errors->first('billing_salutation') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6 {{ $errors->has('billing_firstname') ? 'has-error' : '' }}">
<label class="form-label" for="billing_firstname">{{ __('First name') }}*</label>
{{ Form::text('billing_firstname', $shopping_user->billing_firstname, array('placeholder'=>__('First name'), 'class'=>'form-control', 'id'=>'billing_firstname', 'required'=>true, 'tabindex' => 4)) }}
@if ($errors->has('billing_firstname'))
<span class="help-block">
<strong>{{ $errors->first('billing_firstname') }}</strong>
</span>
@endif
</div>
<div class="form-group col-md-6 {{ $errors->has('billing_lastname') ? 'has-error' : '' }}">
<label class="form-label" for="billing_lastname">{{ __('Last name') }}*</label>
{{ Form::text('billing_lastname', $shopping_user->billing_lastname, array('placeholder'=>__('Last name'), 'class'=>'form-control', 'id'=>'billing_lastname', 'required'=>true, 'tabindex' => 5)) }}
@if ($errors->has('billing_lastname'))
<span class="help-block">
<strong>{{ $errors->first('billing_lastname') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('billing_address') ? 'has-error' : '' }}">
<label class="form-label" for="billing_address">{{ __('Street') }} / {{ __('House number') }}*</label>
{{ Form::text('billing_address', $shopping_user->billing_address, array('placeholder'=>__('Street'), 'class'=>'form-control', 'required'=>true, 'id'=>'billing_address', 'tabindex' => 6)) }}
@if ($errors->has('billing_address'))
<span class="help-block">
<strong>{{ $errors->first('billing_address') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('billing_address_2') ? 'has-error' : '' }}">
<label class="form-label" for="billing_address_2">{{ __('Flat Building optional') }}</label>
{{ Form::text('billing_address_2', $shopping_user->billing_address_2, array('placeholder'=>__('Flat Building optional'), 'class'=>'form-control', 'id'=>'billing_address_2', 'tabindex' => 6)) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6 {{ $errors->has('billing_zipcode') ? 'has-error' : '' }}">
<label class="form-label" for="billing_zipcode">{{ __('Postcode') }}*</label>
{{ Form::text('billing_zipcode', $shopping_user->billing_zipcode, array('placeholder'=>__('Postcode'), 'class'=>'form-control', 'required'=>true, 'id'=>'billing_zipcode', 'tabindex' => 7)) }}
@if ($errors->has('billing_zipcode'))
<span class="help-block">
<strong>{{ $errors->first('billing_zipcode') }}</strong>
</span>
@endif
</div>
<div class="form-group col-md-6 {{ $errors->has('billing_city') ? 'has-error' : '' }}">
<label class="form-label" for="billing_city">{{ __('City') }}*</label>
{{ Form::text('billing_city', $shopping_user->billing_city, array('placeholder'=>__('City'), 'class'=>'form-control', 'required'=>true, 'id'=>'billing_city', 'tabindex' => 8)) }}
@if ($errors->has('billing_city'))
<span class="help-block">
<strong>{{ $errors->first('billing_city') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('billing_country_id') ? 'has-error' : '' }}">
<label class="form-label">{{ __('Country') }}*</label>
<select class="selectpicker" name="billing_country_id" id="billing_country_id" data-style="btn-light" data-live-search="true" required tabindex="9">
{!! HTMLHelper::getContriesWithMore($shopping_user->billing_country_id) !!}
</select>
@if ($errors->has('billing_country_id'))
<span class="help-block">
<strong>{{ $errors->first('billing_country_id') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('billing_phone') ? 'has-error' : '' }}">
<label class="form-label" for="billing_phone">{{ __('Phone') }}</label>
{{ Form::text('billing_phone', $shopping_user->billing_phone, array('placeholder'=>__('Phone'), 'class'=>'form-control', 'id'=>'billing_phone', 'tabindex' => 11)) }}
</div>
</div>
</div>
<div class="col-12 col-lg-6">
<div class="d-md-block d-lg-none">
<hr>
<h5 class="mt-4">{{ __('Delivery address') }}</h5>
</div>
<div id="show_shipping_address" style="@if($shopping_user->same_as_billing) display:none @endif">
<div class="form-row">
<div class="form-group col-md-12">
<label for="shipping_company" class="form-label">{{ __('Company name') }} ({{__('optional')}})</label>
{{ Form::text('shipping_company', $shopping_user->shipping_company, array('placeholder'=>__('Company name'), 'class'=>'form-control', 'id'=>'shipping_company', 'tabindex' => 16)) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6 {{ $errors->has('shipping_salutation') ? 'has-error' : '' }}">
<label class="form-label">{{ __('Salutation') }}*</label>
<select class="selectpicker" data-style="btn-light" name="shipping_salutation" id="shipping_salutation" required tabindex="17">
{!! HTMLHelper::getSalutation($shopping_user->shipping_salutation) !!}
</select>
@if ($errors->has('shipping_salutation'))
<span class="help-block">
<strong>{{ $errors->first('shipping_salutation') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6 {{ $errors->has('shipping_firstname') ? 'has-error' : '' }}">
<label class="form-label" for="shipping_firstname">{{ __('First name') }}*</label>
{{ Form::text('shipping_firstname', $shopping_user->shipping_firstname, array('placeholder'=>__('First name'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_firstname', 'tabindex' => 18)) }}
@if ($errors->has('shipping_firstname'))
<span class="help-block">
<strong>{{ $errors->first('shipping_firstname') }}</strong>
</span>
@endif
</div>
<div class="form-group col-md-6 {{ $errors->has('shipping_lastname') ? 'has-error' : '' }}">
<label class="form-label" for="shipping_lastname">{{ __('Last name') }}*</label>
{{ Form::text('shipping_lastname', $shopping_user->shipping_lastname, array('placeholder'=>__('Last name'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_lastname', 'tabindex' => 19)) }}
@if ($errors->has('shipping_lastname'))
<span class="help-block">
<strong>{{ $errors->first('shipping_lastname') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('shipping_address') ? 'has-error' : '' }}">
<label class="form-label" for="shipping_address">{{ __('Street') }} / {{ __('House number') }}*</label>
{{ Form::text('shipping_address', $shopping_user->shipping_address, array('placeholder'=>__('Street'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_address', 'tabindex' => 20)) }}
@if ($errors->has('shipping_address'))
<span class="help-block">
<strong>{{ $errors->first('shipping_address') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('shipping_address_2') ? 'has-error' : '' }}">
<label class="form-label" for="shipping_address_2">{{ __('Flat Building optional') }}</label>
{{ Form::text('shipping_address_2', $shopping_user->shipping_address_2, array('placeholder'=>__('Flat Building optional'), 'class'=>'form-control', 'id'=>'shipping_address_2', 'tabindex' => 21)) }}
@if ($errors->has('shipping_address_2'))
<span class="help-block">
<strong>{{ $errors->first('shipping_address_2') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6 {{ $errors->has('shipping_zipcode') ? 'has-error' : '' }}">
<label class="form-label" for="shipping_zipcode">{{ __('Postcode') }}*</label>
{{ Form::text('shipping_zipcode', $shopping_user->shipping_zipcode, array('placeholder'=>__('Postcode'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_zipcode', 'tabindex' => 22)) }}
@if ($errors->has('shipping_zipcode'))
<span class="help-block">
<strong>{{ $errors->first('shipping_zipcode') }}</strong>
</span>
@endif
</div>
<div class="form-group col-md-6 {{ $errors->has('shipping_city') ? 'has-error' : '' }}">
<label class="form-label" for="shipping_city">{{ __('City') }}*</label>
{{ Form::text('shipping_city', $shopping_user->shipping_city, array('placeholder'=>__('City'), 'class'=>'form-control', 'required'=>true, 'id'=>'shipping_city', 'tabindex' => 23)) }}
@if ($errors->has('shipping_city'))
<span class="help-block">
<strong>{{ $errors->first('shipping_city') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12 {{ $errors->has('shipping_country_id') ? 'has-error' : '' }}">
<label class="form-label">{{ __('Country') }}*</label>
<select class="selectpicker" name="shipping_country_id" id="shipping_country_id" data-style="btn-light" data-live-search="true" required tabindex="24">
{!! HTMLHelper::getContriesWithMore($shopping_user->shipping_country_id) !!}
</select>
@if ($errors->has('shipping_country_id'))
<span class="help-block">
<strong>{{ $errors->first('shipping_country_id') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12">
<label class="form-label" for="shipping_phone">{{ __('Phone') }}</label>
{{ Form::text('shipping_phone', $shopping_user->shipping_phone, array('placeholder'=>__('Phone'), 'class'=>'form-control', 'id'=>'shipping_phone', 'tabindex' => 26)) }}
</div>
</div>
</div>
<div class="form-group">
<label class="custom-control custom-checkbox m-0">
<input type="checkbox" class="custom-control-input" name="same_as_billing" id="same_as_billing" @if($shopping_user->same_as_billing) checked="checked" @endif>
<span class="custom-control-label">{{__('Shipping to the same address')}}</span>
</label>
</div>
<hr>
</div>
</div>
</div>
</div>
<script type="application/javascript">
$( document ).ready(function() {
// Shipping Address show|hide
$("#same_as_billing").on("change", function () {
$('#show_shipping_address').slideToggle(200, function () {
// scroll down to shipping area.
if ($('#show_shipping_address').is(":visible")) {
_scrollTo('#show_shipping_address', 20);
}
});
});
$.extend( $.validator.messages, {
required: "{{__('account.validator_required')}}",
maxlength: $.validator.format( "{{__('account.validator_maxlength')}}" ),
minlength: $.validator.format( "{{__('account.validator_minlength')}}" ),
rangelength: $.validator.format( "{{__('account.validator_rangelength')}}" ),
email: "{{__('account.validator_email')}}",
url: "{{__('account.validator_url')}}",
date: "{{__('account.validator_date')}}",
number: "{{__('account.validator_number')}}",
digits: "{{__('account.validator_digits')}}",
equalTo: "{{__('account.validator_equalTo')}}",
range: $.validator.format( "{{__('account.validator_range')}}" ),
max: $.validator.format( "{{__('account.validator_max')}}" ),
min: $.validator.format( "{{__('account.validator_min')}}" ),
creditcard: "{{__('account.validator_creditcard')}}"
});
// Set up validator
$('#lead-form-validation').validate({
rules: {
'billing_email-confirm': {
required: true,
equalTo: "#billing_email"
},
},
errorPlacement: function errorPlacement(error, element) {
$(element).parents('.form-group').append(
error.addClass('invalid-feedback small d-block')
)
},
highlight: function (element) {
if ($(element).hasClass('selectpicker')) {
$(element).parent().addClass('is-invalid');
}
$(element).addClass('is-invalid');
},
unhighlight: function (element) {
$(element).removeClass('is-invalid');
$(element).parents('.form-group').find('.is-invalid').removeClass('is-invalid');
},
messages : {
required: "{{__('This field is required.')}}",
country_id : {
required: "{{__('This field is required.')}}",
},
salutation : {
required: "{{__('please specify')}}",
},
first_name : {
required: "{{__('This field is required.')}}",
},
last_name : {
required: "{{__('This field is required.')}}",
},
zipcode : {
required: "{{__('This field is required.')}}",
},
address : {
required: "{{__('This field is required.')}}",
},
city : {
required: "{{__('This field is required.')}}",
},
equalTo : "{{__('Please enter the same value again.')}}",
'billing_email-confirm' : {
equalTo : "{{__('Please enter the same value again.')}}",
required: "{{__('This field is required.')}}",
},
billing_email: {
required : "{{__('This field is required.')}}",
email: "{{ __('Please enter a valid email address.') }}",
remote : "{{ __('This E-mail is already in use.') }}"
},
},
onkeyup: false
});
});
</script>

View file

@ -0,0 +1,33 @@
@extends('portal.layouts.layout-2')
@section('content')
@if ($errors->any())
<div class="row">
<div class="col-sm-12">
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
</div>
@endif
<h4 class="font-weight-bold py-2 mb-2">
{{ __('navigation.my_data') }}
</h4>
{!! Form::open(['action' => route('portal.my_data.store'), 'method' => 'POST', 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
@include('portal.customer._edit_form')
<div class="text-left mt-3">
<button type="submit" class="btn btn-secondary" name="action" value="shopping-user-store">{{ __('save changes') }}</button>&nbsp;
</div>
{!! Form::close() !!}
@endsection

View file

@ -0,0 +1,32 @@
@extends('portal.layouts.layout-2')
@section('content')
@if ($errors->any())
<div class="row">
<div class="col-sm-12">
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
</div>
@endif
<h4 class="media align-items-center font-weight-bold py-3 mb-2">
{{-- <img src="assets/img/avatars/1.png" alt="" class="ui-w-50 rounded-circle"> --}}
<div class="media-body ml-3">
{{ __('home.welcome_back') }}, @if($user->shopping_user_id) {{ $user->name }} @else {{ __('portal.guest') }} @endif
<div class="text-muted text-tiny mt-1"><small class="font-weight-normal">{{ __('home.today_is') }} {{__('cal.weekdays.'.$now->format('l'))}}, {{$now->format('j')}}. {{__('cal.months.'.$now->format('F'))}} {{$now->format('Y')}}</small></div>
</div>
</h4>
<hr class="container-m-nx mt-0 mb-4">
<div class="row">
@include('portal.dashboard.settings')
</div>
@endsection

View file

@ -0,0 +1,66 @@
<div class="col-md-6">
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{ __('navigation.my_data') }}</div>
</h5>
<div class="card-body">
@if (!$user->shopping_user_id)
<p>{{ __('portal.change_my_data_empty') }}</p>
@else
<p>{{ __('portal.change_my_data') }}</p>
@endif
<a href="{{ route('portal.my_data.edit') }}" class="btn btn-secondary"><i
class="ion ion-md-person text-default mr-1"></i> {{ __('navigation.my_data') }}</a>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{ __('navigation.my_orders') }}</div>
</h5>
<div class="card-body">
@if (!$user->shopping_user_id)
<p>{{ __('portal.my_orders_empty') }}</p>
@else
<p>{{ __('portal.my_orders_info') }}</p>
@endif
<a href="{{ route('portal.my_orders') }}" class="btn btn-secondary"><i
class="ion ion-md-cart text-default mr-1"></i> {{ __('navigation.my_orders') }}</a>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{ __('navigation.myabo') }}</div>
</h5>
<div class="card-body">
@if (!$user->shopping_user_id)
<p>{{ __('portal.my_subscriptions_empty') }}</p>
@else
<p>{{ __('portal.my_subscriptions_info') }}</p>
@endif
<a href="{{ route('portal.my_subscriptions') }}" class="btn btn-secondary"><i
class="ion ion-md-refresh-circle text-default mr-1"></i> {{ __('navigation.myabo') }}</a>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-4">
<h5 class="card-header with-elements">
<div class="card-header-title">{{ __('navigation.logout') }}</div>
</h5>
<div class="card-body">
<p> {{ __('home.log_out_and_see_you_soon') }}</p>
<a href="{{ route('portal.logout') }}" class="btn btn-primary"><i
class="ion ion-ios-power text-default mr-1"></i> {{ __('navigation.logout') }}</a>
</div>
</div>
</div>

View file

@ -0,0 +1,192 @@
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}" class="default-style layout-collapsed">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="IE=edge,chrome=1">
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name') }}</title>
<!-- Main font -->
<link rel="stylesheet" href="{{ asset('/fonts/roboto-pacifico.css?v=1') }}">
<!-- Icons. Uncomment required icon fonts -->
<link rel="stylesheet" href="{{ mix('/vendor/fonts/fontawesome.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/fonts/ionicons.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/fonts/linearicons.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/fonts/open-iconic.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/fonts/pe-icon-7-stroke.css') }}">
<!-- Core stylesheets -->
<link rel="stylesheet" href="{{ mix('/vendor/css/bootstrap.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/css/appwork.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/css/theme-corporate.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/css/colors.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/css/uikit.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/css/mycolors.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/libs/growl/growl.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/libs/bootstrap-select/bootstrap-select.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/libs/select2/select2.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/libs/datatables/datatables.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/slim-image-cropper/slim/slim.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/dropzone/dropzone.css?v=1') }}">
<!-- Layout helpers -->
<script src="{{ mix('/vendor/js/layout-helpers.js') }}"></script>
<!-- Libs -->
<!-- `perfect-scrollbar` library required by SideNav plugin -->
<link rel="stylesheet" href="{{ mix('/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') }}">
@yield('styles')
<!-- Application stylesheets -->
<link rel="stylesheet" href="{{ mix('/css/application.css') }}?v=1{{ get_file_last_time('css/application.css') }}">
<script src="{{ asset('/js/jquery.min.js') }}"></script>
<link rel="stylesheet" type="text/css" href="{{ asset('/css/cookieconsent.min.css') }}" />
<script src="{{ asset('/js/cookieconsent.min.js') }}"></script>
<script>
window.addEventListener("load", function(){
window.cookieconsent.initialise({
"palette": {
"popup": {
"background": "#b5c49b",
"text": "#ffffff"
},
"button": {
"background": "#d7d700",
"text": "#ffffff"
}
},
"content": {
"message": "{{__('This website uses cookies') }}",
"dismiss": "{{__('OK')}}",
"link": "{{__('register.data_protection')}}",
"href": "{{ url('datenschutz') }}",
"target": "_blank",
}
})});
</script>
<style>
</style>
</head>
<body>
@yield('layout-content')
<div class="modal fade" id="modals-load-content">
<div class="modal-dialog modal-lg">
</div>
</div>
<!-- Core scripts -->
<script src="{{ mix('/vendor/libs/popper/popper.js') }}"></script>
<script src="{{ mix('/vendor/js/bootstrap.js') }}"></script>
<script src="{{ mix('/vendor/js/sidenav.js') }}"></script>
<script src="{{ mix('/vendor/libs/growl/growl.js') }}"></script>
<script src="{{ asset('/vendor/libs/moment-develop/min/moment.min.js') }}"></script>
<script src="{{ asset('/vendor/libs/moment-develop/locale/de.js') }}"></script>
<script src="{{ mix('/vendor/libs/validate/validate.js') }}"></script>
<script src="{{ mix('/vendor/libs/bootstrap-select/bootstrap-select.js') }}"></script>
<script src="{{ mix('/vendor/libs/select2/select2.js') }}"></script>
<script src="{{ mix('/vendor/libs/datatables/datatables.js') }}"></script>
<script src="{{ mix('/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.js') }}"></script>
<script src="{{asset('/js/bootstrap-datepicker.de.min.js')}}"></script>
<script src="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.js') }}"></script>
<script src="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.min.js') }}"></script>
<script src="{{ asset('/vendor/libs/summernote/lang/summernote-de-DE.js') }}"></script>
<script src="{{ asset('/vendor/libs/summernote-cleaner/summernote-cleaner.js') }}"></script>
<script src="{{ asset('/vendor/libs/slim-image-cropper/slim/slim.kickstart.min.js') }}"></script>
<script src="{{ asset('/vendor/libs/dropzone/dropzone.js?v=1')}}"></script>
<script src="{{ asset('/js/forms_file-upload.js?v=1') }}"></script>
<script src="{{ asset('/vendor/libs/clipboard/clipboard.min.js')}}"></script>
<!-- `perfect-scrollbar` library required by SideNav plugin -->
<script src="{{ mix('/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') }}"></script>
<script src="{{ asset('/js/shopping_card.js') }}?v=1{{ get_file_last_time('/js/shopping_card.js') }}"></script>
<!-- Application javascripts -->
<script src="{{ mix('/js/application.js') }}"></script>
<script src="{{ asset('/js/custom.js') }}?v=1{{ get_file_last_time('/js/custom.js') }}"></script>
@yield('scripts')
<script type="text/javascript">
$(document).ready(function() {
$('.summernote').summernote({
height: 140,
lang: 'de-DE',
cleaner:{
action: 'both', // both|button|paste 'button' only cleans via toolbar button, 'paste' only clean when pasting content, both does both options.
newline: '<br>', // Summernote's default is to use '<p><br></p>'
notStyle: 'position:absolute;top:0;left:0;right:0', // Position of Notification
icon: '<i class="note-icon">[Your Button]</i>',
keepHtml: false, // Remove all Html formats
keepOnlyTags: ['<p>', '<br>', '<ul>', '<li>', '<b>', '<strong>','<i>', '<a>'], // If keepHtml is true, remove all tags except these
keepClasses: false, // Remove Classes
badTags: ['style', 'script', 'applet', 'embed', 'noframes', 'noscript', 'html'], // Remove full tags with contents
badAttributes: ['style', 'start'], // Remove attributes from remaining tags
limitChars: false, // 0/false|# 0/false disables option
limitDisplay: 'both', // text|html|both
limitStop: false // true/false
}
});
$('.summernote-small').summernote({
height: 140,
lang: 'de-DE',
toolbar: [
// [groupName, [list of button]]
['style', ['style']],
['style', ['bold', 'italic', 'underline', 'clear']],
['fontsize', ['fontsize']],
['color', ['color']],
['para', ['ul', 'ol', 'paragraph']],
['height', ['height']],
['view',['fullscreen','codeview']],
],
cleaner:{
action: 'both', // both|button|paste 'button' only cleans via toolbar button, 'paste' only clean when pasting content, both does both options.
newline: '<br>', // Summernote's default is to use '<p><br></p>'
notStyle: 'position:absolute;top:0;left:0;right:0', // Position of Notification
icon: '<i class="note-icon">[Your Button]</i>',
keepHtml: false, // Remove all Html formats
keepOnlyTags: ['<p>', '<br>', '<ul>', '<li>', '<b>', '<strong>','<i>', '<a>'], // If keepHtml is true, remove all tags except these
keepClasses: false, // Remove Classes
badTags: ['style', 'script', 'applet', 'embed', 'noframes', 'noscript', 'html'], // Remove full tags with contents
badAttributes: ['style', 'start'], // Remove attributes from remaining tags
limitChars: false, // 0/false|# 0/false disables option
limitDisplay: 'both', // text|html|both
limitStop: false // true/false
}
});
$('.note-status-output').hide();
});
</script>
</body>
</html>

View file

@ -0,0 +1,136 @@
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}" class="default-style layout-collapsed">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="IE=edge,chrome=1">
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name') }}</title>
<!-- Main font -->
<link rel="stylesheet" href="{{ asset('/fonts/roboto-pacifico.css?v=1') }}">
<!-- Icons. Uncomment required icon fonts -->
<link rel="stylesheet" href="{{ asset('/vendor/fonts/fontawesome.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/fonts/ionicons.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/fonts/linearicons.css') }}">
<!-- Core stylesheets -->
<link rel="stylesheet" href="{{ asset('/vendor/css/bootstrap.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/css/appwork.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/css/theme-corporate.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/css/colors.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/css/uikit.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/css/mycolors.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/growl/growl.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/bootstrap-select/bootstrap-select.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/select2/select2.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/datatables/datatables.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/slim-image-cropper/slim/slim.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/dropzone/dropzone.css?v=1') }}">
<!-- Layout helpers -->
<script src="{{ asset('/vendor/js/layout-helpers.js') }}"></script>
<!-- Libs -->
<!-- `perfect-scrollbar` library required by SideNav plugin -->
<link rel="stylesheet" href="{{ asset('/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') }}">
@yield('styles')
<!-- Application stylesheets -->
<link rel="stylesheet" href="{{ asset('/css/application.css') }}?v=1{{ get_file_last_time('css/application.css') }}">
<script src="{{ asset('/js/jquery.min.js') }}"></script>
<link rel="stylesheet" type="text/css" href="{{ asset('/css/cookieconsent.min.css') }}" />
<script src="{{ asset('/js/cookieconsent.min.js') }}"></script>
<script>
window.addEventListener("load", function(){
window.cookieconsent.initialise({
"palette": {
"popup": {
"background": "#b5c49b",
"text": "#ffffff"
},
"button": {
"background": "#d7d700",
"text": "#ffffff"
}
},
"content": {
"message": "{{__('This website uses cookies') }}",
"dismiss": "{{__('OK')}}",
"link": "{{__('register.data_protection')}}",
"href": "{{ url('datenschutz') }}",
"target": "_blank",
}
})});
</script>
<style>
</style>
</head>
<body>
@yield('layout-content')
<div class="modal fade" id="modals-load-content">
<div class="modal-dialog modal-lg">
</div>
</div>
<!-- Core scripts -->
<script src="{{ asset('/vendor/libs/popper/popper.js') }}"></script>
<script src="{{ asset('/vendor/js/bootstrap.js') }}"></script>
<script src="{{ asset('/vendor/js/sidenav.js') }}"></script>
<script src="{{ asset('/vendor/libs/growl/growl.js') }}"></script>
<script src="{{ asset('/vendor/libs/moment-develop/min/moment.min.js') }}"></script>
<script src="{{ asset('/vendor/libs/moment-develop/locale/de.js') }}"></script>
<script src="{{ asset('/vendor/libs/validate/validate.js') }}"></script>
<script src="{{ asset('/vendor/libs/bootstrap-select/bootstrap-select.js') }}"></script>
<script src="{{ asset('/vendor/libs/select2/select2.js') }}"></script>
<script src="{{ asset('/vendor/libs/datatables/datatables.js') }}"></script>
<script src="{{ asset('/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.js') }}"></script>
<script src="{{asset('/js/bootstrap-datepicker.de.min.js')}}"></script>
<script src="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.js') }}"></script>
<script src="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.min.js') }}"></script>
<script src="{{ asset('/vendor/libs/summernote/lang/summernote-de-DE.js') }}"></script>
<script src="{{ asset('/vendor/libs/summernote-cleaner/summernote-cleaner.js') }}"></script>
<script src="{{ asset('/vendor/libs/slim-image-cropper/slim/slim.kickstart.min.js') }}"></script>
<script src="{{ asset('/vendor/libs/dropzone/dropzone.js?v=1')}}"></script>
<script src="{{ asset('/js/forms_file-upload.js?v=1') }}"></script>
<script src="{{ asset('/vendor/libs/clipboard/clipboard.min.js')}}"></script>
<!-- `perfect-scrollbar` library required by SideNav plugin -->
<script src="{{ asset('/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') }}"></script>
<script src="{{ asset('/js/shopping_card.js') }}?v=1{{ get_file_last_time('/js/shopping_card.js') }}"></script>
<!-- Application javascripts -->
<script src="{{ asset('/js/application.js') }}"></script>
<script src="{{ asset('/js/custom.js') }}?v=1{{ get_file_last_time('/js/custom.js') }}"></script>
@yield('scripts')
</body>
</html>

View file

@ -0,0 +1,125 @@
<!DOCTYPE html>
<html lang="en" class="default-style">
<head>
<title>{{ config('app.name') }} Login</title>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="IE=edge,chrome=1">
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet" href="{{ asset('/fonts/roboto-pacifico.css?v=1') }}">
<!-- Icons. Uncomment required icon fonts -->
<link rel="stylesheet" href="{{ asset('/vendor/fonts/fontawesome.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/fonts/ionicons.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/fonts/linearicons.css') }}">
<!-- Core stylesheets -->
<link rel="stylesheet" href="{{ asset('/vendor/css/bootstrap.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/css/appwork.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/css/theme-corporate.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/css/colors.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/css/uikit.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/css/mycolors.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/growl/growl.css') }}">
<!-- Layout helpers -->
<script src="{{ asset('/vendor/js/layout-helpers.js') }}"></script>
<!-- Core scripts -->
<!-- Libs -->
<link rel="stylesheet" href="{{ asset('/vendor/libs/perfect-scrollbar/perfect-scrollbar.css') }}">
<!-- Page -->
<link rel="stylesheet" href="{{ asset('/vendor/css/pages/authentication.css') }}">
<script src="{{ asset('/js/jquery.min.js') }}"></script>
<link rel="stylesheet" type="text/css" href="{{ asset('/css/cookieconsent.min.css') }}" />
<script src="{{ asset('/js/cookieconsent.min.js') }}"></script>
<script>
window.addEventListener("load", function(){
window.cookieconsent.initialise({
"palette": {
"popup": {
"background": "#b5c49b",
"text": "#ffffff"
},
"button": {
"background": "#d7d700",
"text": "#ffffff"
}
},
"content": {
"message": "{{__('This website uses cookies') }}",
"dismiss": "{{__('OK')}}",
"link": "{{__('register.data_protection')}}",
"href": "{{ url('datenschutz') }}",
"target": "_blank",
}
})});
</script>
</head>
<body>
<div class="page-loader">
<div class="bg-primary"></div>
</div>
@if(Session::has('alert-error'))
<script>
$( document ).ready(function() {
$.growl.error({
title: "{{__('error')}}",
message: '{{ Session::get('alert-error') }}',
location: 'tr'
});
});
</script>
@endif
@if(Session::has('alert-success'))
<script>
$( document ).ready(function() {
$.growl({
title: "{{__('saved')}}",
message: '{{ Session::get('alert-success') }}',
location: 'tr'
});
});
</script>
@endif
<!-- / Styles -->
@yield('content')
<div class="modal fade" id="modal-loading" style="display: none;" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content" id="modal-loading-response">
</div>
</div>
</div>
<script src="{{ asset('/vendor/libs/popper/popper.js') }}"></script>
<script src="{{ asset('/vendor/js/bootstrap.js') }}"></script>
<script src="{{ asset('/vendor/js/sidenav.js') }}"></script>
<script src="{{ asset('/vendor/libs/growl/growl.js') }}"></script>
<script src="{{ asset('/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') }}"></script>
<script src="{{ asset('/js/custom.js') }}"></script>
@yield('scripts')
</body>
</html>

View file

@ -0,0 +1,21 @@
<div id="topBar" class="pt-2">
<div class="container">
<ul class="top-links list-inline pull-right">
<li>
<a class="dropdown-toggle no-text-underline" data-toggle="dropdown" href="#"><span style="text-transform:none;">
{{ __('website.language') }} :</span> <img style="height: 16px" width="16" src="{{ asset('images/flags/'.strtolower(\App::getLocale()).'.svg') }}" alt="lang">
</a>
<ul class="dropdown-menu pull-right">
@foreach (\App\Services\UserService::getTransChange() as $code => $name)
<li>
<a @if(\App::getLocale() === $code) class="active" @endif tabindex="-1" href="{{ route('translation', [$code]) }}">
<img style="height: 16px" width="16" src="{{ asset('images/flags/'.strtolower($code).'.svg') }}" alt="lang"> &nbsp; <span style="text-transform:none;">{{ $name }}</span>
</a>
</li>
@endforeach
</ul>
</li>
</ul>
</div>
</div>

View file

@ -0,0 +1,29 @@
<nav class="layout-footer footer bg-footer-theme">
<div class="container-fluid container-p-x pb-3">
</div>
</nav>
<nav class="layout-footer footer bg-footer-theme">
<div class="container-fluid container-p-x pb-3 text-right">
@if(Request::getHost() == config('app.pre_url_portal') . config('app.domain') . config('app.tld_care'))
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="data_protection" data-target="#modal-loading">{{__('register.data_protection')}}</button>
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('portal.loading_modal') }}" data-data="imprint" data-target="#modal-loading">{{__('imprint')}}</button>
@else
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('loading_modal') }}" data-data="data_protection" data-target="#modal-loading">{{__('register.data_protection')}}</button>
<button type="button" class="btn btn-outline-primary mt-2 btn-sm update_modal_data_load" data-url="{{ route('loading_modal') }}" data-data="imprint" data-target="#modal-loading">{{__('imprint')}}</button>
@endif
</div>
</nav>
<div class="modal fade" id="modal-loading" style="display: none;" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content" id="modal-loading-response">
</div>
</div>
</div>

View file

@ -0,0 +1,26 @@
<nav class="layout-navbar navbar navbar-expand-lg align-items-lg-center bg-navbar-theme container-p-x" id="layout-navbar">
<!-- Brand -->
<a href="https://www.mivita.care"><img src="{{ asset('/images/logo_mivita.png') }}" alt="mivita.care" style="width: 170px;"></a>
<div class="navbar-nav align-items-center ml-auto" style="flex-direction: row;-webkit-box-orient: horizontal;
-webkit-box-direction: normal;">
<div class="demo-navbar-messages nav-item dropdown mr-1">
<a class="nav-link dropdown-toggle hide-arrow text-right" href="#" data-toggle="dropdown">
<i class="ion ion-ios-globe navbar-icon align-middle"></i>
<div class="badge badge-default">{{ __('website.language') }} : <img style="height: 16px" width="16" src="{{ asset('images/flags/'.strtolower(\App::getLocale()).'.svg') }}" alt="lang">
</div>
</a>
<div class="dropdown-menu dropdown-menu-right">
@foreach (\App\Services\UserService::getTransChange() as $code => $name)
<a href="{{ route('translation', [$code]) }}" class="dropdown-item @if(\App::getLocale() === $code) active @endif ">
<img style="height: 16px" width="16" src="{{ asset('images/flags/'.strtolower($code).'.svg') }}" alt="lang"> &nbsp; {{ $name }}
</a>
@endforeach
</div>
</div>
</div>
</nav>
<div class="ui-rect ui-bg-cover mb-2" style=" padding-top:15% !important; background-image: url('/assets/images/vision-min.jpg');"></div>

View file

@ -0,0 +1,53 @@
<nav class="layout-navbar navbar navbar-expand-lg align-items-lg-center bg-navbar-theme container-p-x" id="layout-navbar">
@empty($hide_layout_sidenav_toggle)
<div class="layout-sidenav-toggle navbar-nav align-items-lg-center mr-auto mr-lg-1-5">
<a class="nav-item nav-link px-0 ml-2" href="javascript:void(0)">
<i class="ion ion-md-menu text-large align-middle"></i>
</a>
</div>
@endempty
<a href="https://www.mivita.care"><img src="{{ asset('/images/logo_mivita.png') }}" alt="mivita.care" style="width: 170px;"></a>
<div class="navbar-nav align-items-center ml-auto" style="flex-direction: row;-webkit-box-orient: horizontal;
-webkit-box-direction: normal;">
<div class="demo-navbar-messages nav-item dropdown mr-1">
<a class="nav-link dropdown-toggle hide-arrow text-right" href="#" data-toggle="dropdown">
<i class="ion ion-ios-globe navbar-icon align-middle"></i>
<div class="badge badge-default">{{ __('website.language') }} : <img style="height: 16px" width="16" src="{{ asset('images/flags/'.strtolower(\App::getLocale()).'.svg') }}" alt="lang">
</div>
</a>
<div class="dropdown-menu dropdown-menu-right">
@foreach (\App\Services\UserService::getTransChange() as $code => $name)
<a href="{{ route('translation', [$code]) }}" class="dropdown-item @if(\App::getLocale() === $code) active @endif ">
<img style="height: 16px" width="16" src="{{ asset('images/flags/'.strtolower($code).'.svg') }}" alt="lang"> &nbsp; {{ $name }}
</a>
@endforeach
</div>
</div>
<div class="nav-item text-big font-weight-light line-height-1 opacity-25 mr-1 ml-1">|</div>
<div class="demo-navbar-user nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown">
<span class="d-inline-flex flex-row-reverse align-items-center align-middle">
<span class="px-1 ml-0 ml-0">{{ Auth::user()->email }}</span>
</span>
</a>
<div class="dropdown-menu dropdown-menu-right">
<a href="{{ route('portal.logout') }}" class="dropdown-item">
<i class="ion ion-ios-log-out text-danger"></i> &nbsp; {{ __('navigation.logout') }}</a>
</div>
</div>
</div>
</nav>

View file

@ -0,0 +1,47 @@
@if(Auth::check())
<div id="layout-sidenav" class="{{ isset($layout_sidenav_horizontal) ? 'layout-sidenav-horizontal sidenav-horizontal container-p-x flex-grow-0' : 'layout-sidenav sidenav-vertical' }} sidenav bg-sidenav-theme">
<!-- Inner -->
<ul class="sidenav-inner{{ empty($layout_sidenav_horizontal) ? ' py-1' : '' }}">
@if(Auth::guard('customers')->check())
<li class="sidenav-item{{ Request::is('portal/dashboard') ? ' active' : '' }}">
<a href="{{ route('portal.dashboard') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-home"></i><div>{{__('navigation.dashboard')}}</div></a>
</li>
<li class="sidenav-item{{ Request::is('portal/my-data/*') ? ' active' : '' }}">
<a href="{{ route('portal.my_data.edit') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-person"></i><div>{{ __('navigation.my_data') }}</div></a>
</li>
<li class="sidenav-item{{ Request::is('portal/my-orders', 'portal/my-orders/*') ? ' active' : '' }}">
<a href="{{ route('portal.my_orders') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-cart"></i><div>{{ __('navigation.my_orders') }}</div></a>
</li>
@if(Auth::user()->is_admin || Util::isTestSystem(true))
<li class="sidenav-item{{ Request::is('portal/subscriptions') ? ' active' : '' }}">
<a href="{{ route('portal.my_subscriptions') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-refresh-circle"></i><div>{{ __('navigation.myabo') }} <span class="badge badge-warning">DEV</span></div> </a>
</li>
@endif
{{--
<li class="sidenav-item{{ Request::is('portal/settings') ? ' active' : '' }}">
<a href="{{ route('portal.settings') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-settings"></i><div>{{ __('navigation.settings') }}</div></a>
</li>
--}}
@endif
<li class="sidenav-divider mb-1"></li>
@if(Auth::guard('customers')->check())
<li class="sidenav-item">
<a href="{{ Util::getMyMivitaShopUrl() }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-cart"></i><div>{{ __('navigation.to_shop') }}</div></a>
</li>
@endif
<li class="sidenav-item">
<a href="{{ route('portal.logout') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-power"></i><div>{{ __('navigation.logout') }}</div></a>
</li>
</ul>
</div>
@endif

View file

@ -0,0 +1,76 @@
@extends('portal.layouts.application')
@section('layout-content')
@if(Session::has('alert-save'))
<script>
$( document ).ready(function() {
$.growl({
title: "{{__('saved')}}",
message: "{{__('The changes have been saved.')}}",
location: 'tr'
});
});
</script>
@endif
@if(Session::has('alert-error'))
<script>
$( document ).ready(function() {
$.growl.error({
title: "{{__('error')}}",
message: '{{ Session::get('alert-error') }}',
location: 'tr'
});
});
</script>
@endif
@if(Session::has('alert-success'))
<script>
$( document ).ready(function() {
$.growl({
title: "{{__('saved')}}",
message: '{{ Session::get('alert-success') }}',
location: 'tr'
});
});
</script>
@endif
<!-- Layout wrapper -->
<div class="layout-wrapper layout-2">
<div class="layout-inner">
<!-- Layout sidenav -->
@include('portal.layouts.includes.layout-sidenav')
<!-- Layout container -->
<div class="layout-container">
<!-- Layout navbar -->
@include('portal.layouts.includes.layout-navbar')
<!-- Layout content -->
<div class="layout-content">
<!-- Content -->
<div class="container-fluid flex-grow-1 container-p-y">
@yield('content')
</div>
<!-- / Content -->
<!-- Layout footer -->
@include('portal.layouts.includes.layout-footer')
</div>
<!-- Layout content -->
</div>
<!-- / Layout container -->
</div>
<!-- Overlay -->
<div class="layout-overlay layout-sidenav-toggle"></div>
</div>
<!-- / Layout wrapper -->
@endsection

View file

@ -0,0 +1,97 @@
@extends('portal.layouts.layout-2')
@section('content')
@if ($errors->any())
<div class="row">
<div class="col-sm-12">
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
</div>
@endif
<h4 class="font-weight-bold py-2 mb-2">
{{ __('navigation.my_orders') }}
</h4>
<div class="card">
<div class="card-datatable table-responsive">
<table class="table table-striped table-bordered" style="min-width:550px;" id="datatables-orders">
<thead>
<tr>
<th>#</th>
<th>{{__('tables.date')}}</th>
<th>{{__('tables.amount')}}</th>
<th>{{__('tables.status')}}</th>
<th>{{__('tables.shipping')}}</th>
<th>{{__('tables.firstname')}}</th>
<th>{{__('tables.lastname')}}</th>
<th>{{__('tables.email')}}</th>
<th>{{__('tables.invoice')}}</th>
<th>{{__('tables.art')}}</th>
</tr>
</thead>
<tbody>
@if($shopping_user->shopping_order)
@forelse($shopping_user->getAllOrdersByMember() as $shopping_order)
<tr>
<td>
<a href="{{ route('portal.my_orders.show', $shopping_order->id) }}"
class="btn icon-btn btn-sm btn-primary">
<span class="fa fa-eye"></span>
</a>
</td>
<td>{{ $shopping_order->created_at->format('d.m.Y') }}</td>
<td>
<span class="no-line-break">
{{ $shopping_order->getFormattedTotalShipping() }}
</span>
</td>
<td>{!! \App\Services\Payment::getShoppingOrderBadge($shopping_order) !!}</td>
<td>
<span class="badge badge-pill badge-{{ $shopping_order->getShippedColor() }}">
{{ $shopping_order->getShippedType() }}
</span>
</td>
<td>{{ $shopping_order->shopping_user->billing_firstname }}</td>
<td>{{ $shopping_order->shopping_user->billing_lastname }}</td>
<td>{{ $shopping_order->shopping_user->billing_email }}</td>
<td>{{ $shopping_order->isInvoice() ? '<span class="no-line-break"><a href="'.route('storage_file', [$shopping_order->id, 'invoice', 'download']).'" class="btn btn-primary btn-xs"><i class="fa fa-download"></i></a>
<a href="'.route('storage_file', [$ShoppingOrder->id, 'invoice', 'stream']).'" target="_blank" class="btn btn-warning btn-xs"><i class="fa fa-eye"></i></a></span>' : '-';
}}</td>
<td>{!! \App\Services\Payment::getPaymentForBadge($shopping_order) !!}</td>
</tr>
@empty
<tr>
<td colspan="6" class="text-center">{{ __('order.no_orders_found') }}</td>
</tr>
@endforelse
@endif
</tbody>
</table>
</div>
</div>
@endsection
@section('scripts')
<script>
$( document ).ready(function() {
$('#datatables-orders').DataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"order": [[ 1, "desc" ]],
"language": {
"url": "/js/datatables-{{ \App::getLocale() }}.json"
}
});
});
</script>
@endsection

View file

@ -0,0 +1,317 @@
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-md-3 mb-1">
<strong class="mr-2">{{ __('Status') }}:</strong>
<span class="text-big">
{!! \App\Services\Payment::getShoppingOrderBadge($shopping_order) !!}
</span>
</div>
<div class="col-md-3 mb-1">
<strong class="mr-2">{{ __('order.shipping') }}:</strong>
@if($shopping_order->payment_for !== 8)
<span class="text-big">
<span
class="badge badge-pill badge-{{ $shopping_order->getShippedColor() }}">{{ $shopping_order->getShippedType() }}</span>
</span>
@endif
</div>
<div class="col-md-3 mb-1">
<strong class="mr-2">{{ __('order.invoice') }}:</strong>
@if ($shopping_order->isInvoice())
<a href="{{ route('storage_file', [$shopping_order->id, 'invoice', 'download']) }}"
class="btn btn-primary btn-sm"><i class="fa fa-download"></i></a>
<a href="{{ route('storage_file', [$shopping_order->id, 'invoice', 'stream']) }}"
target="_blank" class="btn btn-warning btn-sm"><i class="fa fa-eye"></i></a>
@endif
@if (($shopping_order->txaction === 'extern' || $shopping_order->txaction === 'extern_paid') && $shopping_order->wp_invoice_path)
<a href="{{ $shopping_order->wp_invoice_path }}" class="btn btn-secondary btn-sm"><i
class="fa fa-external-link-alt"></i> <i class="fa fa-download"></i></a>
@endif
</div>
</div>
</div>
<hr class="m-0">
<div class="card-body pb-1">
<div class="row">
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('order.order_date') }}</div>
{{ $shopping_order->created_at->format('d.m.Y H:i') }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('order.number_of_items') }}</div>
{{ $shopping_order->getItemsCount() }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('order.total_price') }}</div>
{{ $shopping_order->getFormattedTotalShipping() }} &euro;
</div>
</div>
</div>
<hr class="m-0">
<div class="card-body">
<h6 class="font-weight-semibold">
@if ($shopping_order->shopping_user->is_from === 'shopping' ||
$shopping_order->shopping_user->is_from === 'extern')
{{ __('order.billing_address_of_client') }}
@else
{{ __('order.billing_address_of_the_advisor') }}
@endif
</h6>
<div class="row">
@if ($shopping_order->shopping_user->billing_company)
<div class="col-md-12 mb-3">
<div class="text-muted small">{{ __('Company') }}</div>
{{ $shopping_order->shopping_user->billing_company }}
</div>
@endif
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Salutation') }}</div>
{{ \App\Services\HTMLHelper::getSalutationLang($shopping_order->shopping_user->billing_salutation) }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('First name') }}</div>
{{ $shopping_order->shopping_user->billing_firstname }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Last name') }}</div>
{{ $shopping_order->shopping_user->billing_lastname }}
</div>
</div>
<div class="row">
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Street') }}</div>
{{ $shopping_order->shopping_user->billing_address }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Addition') }}</div>
{{ $shopping_order->shopping_user->billing_address_2 }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Postcode') }}</div>
{{ $shopping_order->shopping_user->billing_zipcode }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('City') }}</div>
{{ $shopping_order->shopping_user->billing_city }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('E-Mail') }}</div>
{{ $shopping_order->shopping_user->billing_email }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Phone') }}</div>
{{ $shopping_order->shopping_user->billing_phone }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Country') }}</div>
{{ $shopping_order->shopping_user->billing_country->getLocated() }}
</div>
</div>
</div>
@if ($shopping_order->shopping_user->is_from !== 'homeparty')
<hr class="m-0">
<div class="card-body">
<h6 class="font-weight-semibold">
@if ($shopping_order->shopping_user->is_from === 'user_order' ||
$shopping_order->shopping_user->is_from === 'extern')
@if ($shopping_order->shopping_user->is_for === 'me')
{{ __('order.delivery_address_of_the_consultant') }}
@else
{{ __('order.delivery_address_of_the_client') }}
@endif
@endif
@if ($shopping_order->shopping_user->is_from === 'wizard')
{{ __('order.delivery_address_of_the_consultant') }}
@endif
@if ($shopping_order->shopping_user->is_from === 'membership')
{{ __('order.delivery_address_of_the_consultant') }}
@endif
@if ($shopping_order->shopping_user->is_from === 'shopping')
{{ __('order.delivery_address_of_the_client') }}
@endif
</h6>
@if ($shopping_order->shopping_user->same_as_billing)
{{ __('email.checkout_mail_same_address') }}
@else
<div class="row">
@if ($shopping_order->shopping_user->shipping_company)
<div class="col-md-12 mb-3">
<div class="text-muted small">{{ __('Company') }}</div>
{{ $shopping_order->shopping_user->shipping_company }}
</div>
@endif
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Salutation') }}</div>
{{ \App\Services\HTMLHelper::getSalutationLang($shopping_order->shopping_user->shipping_salutation) }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('First name') }}</div>
{{ $shopping_order->shopping_user->shipping_firstname }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Last name') }}</div>
{{ $shopping_order->shopping_user->shipping_lastname }}
</div>
</div>
<div class="row">
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Street') }}</div>
{{ $shopping_order->shopping_user->shipping_address }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Addition') }}</div>
{{ $shopping_order->shopping_user->shipping_address_2 }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Postcode') }}</div>
{{ $shopping_order->shopping_user->shipping_zipcode }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('City') }}</div>
{{ $shopping_order->shopping_user->shipping_city }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('E-Mail') }}</div>
{{ $shopping_order->shopping_user->shipping_email }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Phone') }}</div>
{{ $shopping_order->shopping_user->shipping_phone }}
</div>
<div class="col-md-3 mb-3">
<div class="text-muted small">{{ __('Country') }}</div>
{{ $shopping_order->shopping_user->shipping_country->getLocated() }}
</div>
</div>
@endif
</div>
@endif
<hr class="m-0">
<div class="card-body">
<h6 class="font-weight-semibold">
@if ($shopping_order->shopping_user->is_from === 'user_order')
@if ($shopping_order->shopping_user->is_for === 'me')
{{ __('order.order_for_consultant') }}
@else
{{ __('order.order_for_client') }}
@endif
@endif
@if ($shopping_order->shopping_user->is_from === 'wizard')
{{ __('order.adviser_order_for_registration') }}
@endif
@if ($shopping_order->shopping_user->is_from === 'membership')
{{ __('order.adviser_order_for_membership') }}
@endif
@if ($shopping_order->shopping_user->is_from === 'shopping')
{{ __('order.client_order_via_shop') }}
@endif
@if ($shopping_order->shopping_user->is_from === 'homeparty')
<h5>{{ __('order.consultant_order_for_home_party') }} </h5>
<hr>
@endif
@if ($shopping_order->shopping_user->is_from === 'collection')
<h5>{{ __('order.adviser_collective_invoice') }}</h5>
<hr>
@endif
</h6>
<style>
table.table-product,
table.table-product tr td,
table.table-product tr th {
border: none;
}
table.table-product tr.border-top td {
border-top: 1px solid #b8b8b9;
}
table.table-product tr.border-bottom td,
table.table-product tr.border-bottom th {
border-bottom: 1px solid #b8b8b9;
}
</style>
@if ($shopping_order->shopping_user->is_from !== 'homeparty' && $shopping_order->shopping_user->is_from !== 'collection')
@include('portal.order._detail_shopping_order')
@endif
</div>
<hr class="m-0">
<div class="card-body">
<h6 class="font-weight-semibold">
{{ __('order.reorder') }}
</h6>
<div class="row">
<div class="col-md-12 mb-2">
<p><em>{!! __('order.reorder_info') !!}</em></p>
<p><a href="{{ route('portal.my_orders.create', ['id' => $shopping_order->id]) }}" class="btn btn-primary">
{{ __('order.reorder') }}
</a></p>
<p>{!! __('order.reorder_info_2', ['country' => $shopping_user->getDeliveryCountry(), 'link' => route('portal.my_data.edit')]) !!}</p>
</div>
</div>
</div>
<hr class="m-0">
<div class="card-body">
<h6 class="font-weight-semibold">
{{ __('tables.payment') }}
</h6>
@if ($shopping_order->txaction !== 'extern')
<div class="card-datatable table-responsive">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="min-width: 60px">#</th>
<th>{{ __('tables.payment_type') }}</th>
<th>{{ __('tables.total') }}</th>
<th>{{ __('tables.status') }}</th>
<th>{{ __('tables.date') }}</th>
<th>{{ __('tables.reference_number') }}</th>
</tr>
</thead>
<tbody>
@php($count = 0)
@if(isset($shopping_order->shopping_payments) && $shopping_order->shopping_payments)
@foreach ($shopping_order->shopping_payments as $shopping_payment)
@if(isset($shopping_payment) && $shopping_payment)
<tr>
<th scope="row">{{ ++$count }}</th>
<td>{{ $shopping_payment->getPaymentType() }}</td>
<td>{{ $shopping_payment->getPaymentAmount() }}</td>
<td>{!! \App\Services\Payment::getShoppingPaymentBadge($shopping_payment) !!}</td>
<td>{{ $shopping_payment->created_at->format('d.m.Y H:i') }}</td>
<td>{{ $shopping_payment->reference }}</td>
</tr>
@endif
@endforeach
@endif
</tbody>
</table>
</div>
@else
<div class="row">
<div class="col-sm-12">
<div class="alert alert-info p-2 mt-2">
<ul>
<li>{{ __('order.order_via_external_shop') }} </li>
</ul>
</div>
</div>
</div>
@endif
</div>
</div>

View file

@ -0,0 +1,110 @@
<div class="table-responsive">
<table class="table table-product m-0" style="">
<tbody>
<tr class="border-bottom">
<th>{{ __('tables.product') }}</th>
<th class="text-right">
@if($shopping_order->shopping_user->is_from === 'user_order')
{{ __('tables.net_price') }}
@else
{{ __('tables.price') }}
@endif
</th>
<th class="text-right">{{ __('tables.quantity') }}</th>
<th class="text-right">{{ __('tables.sum') }}</th>
</tr>
@foreach($shopping_order->shopping_order_items as $shopping_order_item)
<tr class="border-bottom">
<td class="px-3 py-2">
<div class="media align-items-center">
@if($shopping_order_item->product)
@if($shopping_order_item->product->images)
@if($image = $shopping_order_item->product->images->first())
<img src="{{ route('product_image', [$image->slug]) }}" class="d-block ui-w-80 mr-4" alt>
@endif
@endif
<div class="media-body">
<a href="{{route('admin_product_edit', [$shopping_order_item->product->id])}}" class="d-block"><strong>{{ $shopping_order_item->product->getLang('name') }} </strong>
@if($shopping_order->is_abo)
&nbsp; {!! get_abo_type_badge_by_product($shopping_order_item->product) !!}
@endif
</a>
<small>
<span class="text-muted">{{ __('order.content') }}: </span> {{ $shopping_order_item->product->contents }}<br>
<span class="text-muted">{{ __('order.weight') }}: </span> {{ $shopping_order_item->product->weight }} g<br>
<span class="text-muted">{{ __('order.number') }}: </span> {{ $shopping_order_item->product->number }}
</small>
</div>
@endif
</div>
</td>
<td class="align-middle px-3 py-2 nowrap text-right" style="min-width:100px;">
@if($shopping_order->shopping_user->is_from === 'user_order')
{{ $shopping_order_item->getFormattedPriceNet() }} &euro;
@else
{{ $shopping_order_item->getFormattedPrice() }} &euro;
@endif
</td>
<!-- Set column width -->
<td class="align-middle px-3 py-2 text-right" style="min-width: 60px;">
{{ $shopping_order_item->qty }}
</td>
<!-- Set column width -->
<td class="font-weight-semibold align-middle px-3 py-2 text-right" style="min-width:120px;">
@if($shopping_order->shopping_user->is_from === 'user_order')
{{ $shopping_order_item->getFormattedTotalPriceNet() }} &euro;
@else
{{ $shopping_order_item->getFormattedTotalPrice() }} &euro;
@endif
</td>
</tr>
@endforeach
</tbody>
<tfoot>
<tr class="border-bottom">
<td colspan="3">
<span class="medium-text">{{__('email.checkout_mail_shipping')}}</span>
</td>
<td style="color:#37302d; text-align: right; vertical-align: top;line-height:1.3em;">
<span class="medium-text">
@if($shopping_order->tax > 0)
{{ $shopping_order->getFormattedShipping() }} &euro;
@else
{{ $shopping_order->getFormattedShippingNet() }} &euro;
@endif
</span>
</td>
</tr>
<tr>
<td colspan="3" class="py-1">
<span class="medium-text">{{__('email.checkout_mail_subtotal_ws')}}</span>
</td>
<td class="py-1" style="color:#37302d; text-align: right; vertical-align: top;line-height:1.3em;">
<span class="medium-text">{{ $shopping_order->getFormattedSubtotalWs() }} &euro;</span>
</td>
</tr>
<tr class="border-bottom">
<td colspan="3" class="py-1">
<span class="medium-text">{{__('email.checkout_mail_tax')}}</span>
</td>
<td class="py-1" style="color:#37302d; text-align: right; vertical-align: top;line-height:1.3em;">
<span class="medium-text">{{ $shopping_order->getFormattedTax() }} &euro;</span>
</td>
</tr>
<tr>
<td colspan="3">
<b>{{__('email.checkout_mail_total')}}</b>
</td>
<td style="color:#37302d; text-align: right; vertical-align: top;line-height:1.6em;">
<b>{{ $shopping_order->getFormattedTotalShipping() }} &euro;</b>
<br>
<span style="font-size: 0.8em">{{__('email.checkout_mail_tax_info')}}</span>
</td>
</tr>
</tfoot>
</table>
</div>

View file

@ -0,0 +1,21 @@
@extends('portal.layouts.layout-2')
@section('content')
<style>
.medium, .medium-text {
font-size: 93%;
font-weight: 400;
}
.font-weight-semibold {
font-weight: 600 !important;
color: #6b7758;
}
</style>
<h4 class="font-weight-bold py-2 mb-2">
<a href="{{route('portal.my_orders')}}" class="btn btn-sm btn-default float-right">{{ __('back') }}</a>
{{ __('shop.order_customer') }} <span class="text-muted">#{{$shopping_order->id}}</span>
</h4>
@include('portal.order._detail')
<a href="{{route('portal.my_orders')}}" class="btn btn-sm btn-default mt-2 float-right">{{ __('back') }}</a>
@endsection

View file

@ -0,0 +1,97 @@
@extends('portal.layouts.layout-2')
@section('content')
@if ($errors->any())
<div class="row">
<div class="col-sm-12">
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
</div>
@endif
<h4 class="font-weight-bold py-2 mb-2">
{{ __('navigation.my_orders') }}
</h4>
<div class="card">
<div class="card-datatable table-responsive">
<table class="table table-striped table-bordered" style="min-width:550px;" id="datatables-orders">
<thead>
<tr>
<th>#</th>
<th>{{__('tables.date')}}</th>
<th>{{__('tables.amount')}}</th>
<th>{{__('tables.status')}}</th>
<th>{{__('tables.shipping')}}</th>
<th>{{__('tables.firstname')}}</th>
<th>{{__('tables.lastname')}}</th>
<th>{{__('tables.email')}}</th>
<th>{{__('tables.invoice')}}</th>
<th>{{__('tables.art')}}</th>
</tr>
</thead>
<tbody>
@if($shopping_user->shopping_order)
@forelse($shopping_user->getAllOrdersByMember() as $shopping_order)
<tr>
<td>
<a href="{{ route('portal.my_orders.show', $shopping_order->id) }}"
class="btn icon-btn btn-sm btn-primary">
<span class="fa fa-eye"></span>
</a>
</td>
<td>{{ $shopping_order->created_at->format('d.m.Y') }}</td>
<td>
<span class="no-line-break">
{{ $shopping_order->getFormattedTotalShipping() }}
</span>
</td>
<td>{!! \App\Services\Payment::getShoppingOrderBadge($shopping_order) !!}</td>
<td>
<span class="badge badge-pill badge-{{ $shopping_order->getShippedColor() }}">
{{ $shopping_order->getShippedType() }}
</span>
</td>
<td>{{ $shopping_order->shopping_user->billing_firstname }}</td>
<td>{{ $shopping_order->shopping_user->billing_lastname }}</td>
<td>{{ $shopping_order->shopping_user->billing_email }}</td>
<td>{{ $shopping_order->isInvoice() ? '<span class="no-line-break"><a href="'.route('storage_file', [$shopping_order->id, 'invoice', 'download']).'" class="btn btn-primary btn-xs"><i class="fa fa-download"></i></a>
<a href="'.route('storage_file', [$shopping_order->id, 'invoice', 'stream']).'" target="_blank" class="btn btn-warning btn-xs"><i class="fa fa-eye"></i></a></span>' : '-';
}}</td>
<td>{!! \App\Services\Payment::getPaymentForBadge($shopping_order) !!}</td>
</tr>
@empty
<tr>
<td colspan="6" class="text-center">{{ __('order.no_orders_found') }}</td>
</tr>
@endforelse
@endif
</tbody>
</table>
</div>
</div>
@endsection
@section('scripts')
<script>
$( document ).ready(function() {
$('#datatables-orders').DataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"order": [[ 1, "desc" ]],
"language": {
"url": "/js/datatables-{{ \App::getLocale() }}.json"
}
});
});
</script>
@endsection