@extends('backend.layouts.app')
@section('content')
@if (auth()->user()->can('smtp_settings') &&
env('MAIL_USERNAME') == null &&
env('MAIL_PASSWORD') == null)
<div class="">
<div class="alert alert-danger d-flex align-items-center">
{{ translate('Please Configure SMTP Setting to work all email sending functionality') }},
<a class="alert-link ml-2" href="{{ route('smtp_settings.index') }}">{{ translate('Configure Now') }}</a>
</div>
</div>
@endif
@can('admin_dashboard')
<div class="row gutters-10">
<div class="col-lg-6">
<div class="row gutters-10">
<div class="col-6">
<div class="bg-grad-2 text-white rounded-15p mb-4 overflow-hidden">
<div class="px-3 pt-3">
<div class="opacity-50">
<span class="fs-12 d-block">{{ translate('Total') }}</span>
{{ translate('Customer') }}
</div>
<div class="h3 fw-700 mb-3">
{{ \App\Models\User::where('user_type', 'customer')->where('email_verified_at', '!=', null)->count() }}
</div>
</div>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320">
<path fill="rgba(255,255,255,0.3)" fill-opacity="1"
d="M0,128L34.3,112C68.6,96,137,64,206,96C274.3,128,343,224,411,250.7C480,277,549,235,617,213.3C685.7,192,754,192,823,181.3C891.4,171,960,149,1029,117.3C1097.1,85,1166,43,1234,58.7C1302.9,75,1371,149,1406,186.7L1440,224L1440,320L1405.7,320C1371.4,320,1303,320,1234,320C1165.7,320,1097,320,1029,320C960,320,891,320,823,320C754.3,320,686,320,617,320C548.6,320,480,320,411,320C342.9,320,274,320,206,320C137.1,320,69,320,34,320L0,320Z">
</path>
</svg>
</div>
</div>
<div class="col-6">
<div class="bg-grad-3 text-white rounded-15p mb-4 overflow-hidden">
<div class="px-3 pt-3">
<div class="opacity-50">
<span class="fs-12 d-block">{{ translate('Total') }}</span>
{{ translate('Order') }}
</div>
<div class="h3 fw-700 mb-3">{{ \App\Models\Order::count() }}</div>
</div>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320">
<path fill="rgba(255,255,255,0.3)" fill-opacity="1"
d="M0,128L34.3,112C68.6,96,137,64,206,96C274.3,128,343,224,411,250.7C480,277,549,235,617,213.3C685.7,192,754,192,823,181.3C891.4,171,960,149,1029,117.3C1097.1,85,1166,43,1234,58.7C1302.9,75,1371,149,1406,186.7L1440,224L1440,320L1405.7,320C1371.4,320,1303,320,1234,320C1165.7,320,1097,320,1029,320C960,320,891,320,823,320C754.3,320,686,320,617,320C548.6,320,480,320,411,320C342.9,320,274,320,206,320C137.1,320,69,320,34,320L0,320Z">
</path>
</svg>
</div>
</div>
<div class="col-6">
<div class="bg-grad-1 text-white rounded-15p mb-4 overflow-hidden">
<div class="px-3 pt-3">
<div class="opacity-50">
<span class="fs-12 d-block">{{ translate('Total') }}</span>
{{ translate('Product category') }}
</div>
<div class="h3 fw-700 mb-3">{{ \App\Models\Category::count() }}</div>
</div>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320">
<path fill="rgba(255,255,255,0.3)" fill-opacity="1"
d="M0,128L34.3,112C68.6,96,137,64,206,96C274.3,128,343,224,411,250.7C480,277,549,235,617,213.3C685.7,192,754,192,823,181.3C891.4,171,960,149,1029,117.3C1097.1,85,1166,43,1234,58.7C1302.9,75,1371,149,1406,186.7L1440,224L1440,320L1405.7,320C1371.4,320,1303,320,1234,320C1165.7,320,1097,320,1029,320C960,320,891,320,823,320C754.3,320,686,320,617,320C548.6,320,480,320,411,320C342.9,320,274,320,206,320C137.1,320,69,320,34,320L0,320Z">
</path>
</svg>
</div>
</div>
<div class="col-6">
<div class="bg-grad-4 text-white rounded-15p mb-4 overflow-hidden">
<div class="px-3 pt-3">
<div class="opacity-50">
<span class="fs-12 d-block">{{ translate('Total') }}</span>
{{ translate('Product brand') }}
</div>
<div class="h3 fw-700 mb-3">{{ \App\Models\Brand::count() }}</div>
</div>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320">
<path fill="rgba(255,255,255,0.3)" fill-opacity="1"
d="M0,128L34.3,112C68.6,96,137,64,206,96C274.3,128,343,224,411,250.7C480,277,549,235,617,213.3C685.7,192,754,192,823,181.3C891.4,171,960,149,1029,117.3C1097.1,85,1166,43,1234,58.7C1302.9,75,1371,149,1406,186.7L1440,224L1440,320L1405.7,320C1371.4,320,1303,320,1234,320C1165.7,320,1097,320,1029,320C960,320,891,320,823,320C754.3,320,686,320,617,320C548.6,320,480,320,411,320C342.9,320,274,320,206,320C137.1,320,69,320,34,320L0,320Z">
</path>
</svg>
</div>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="row gutters-10">
<div class="col-6">
<div class="card rounded-15p">
<div class="card-header">
<h6 class="mb-0 fs-14">{{ translate('Products') }}</h6>
</div>
<div class="card-body">
<canvas id="pie-1" class="w-100" height="305"></canvas>
</div>
</div>
</div>
<div class="col-6">
<div class="card rounded-15p">
<div class="card-header">
<h6 class="mb-0 fs-14">{{ translate('Sellers') }}</h6>
</div>
<div class="card-body">
<canvas id="pie-2" class="w-100" height="305"></canvas>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row gutters-10">
<div class="col-md-6">
<div class="card rounded-15p">
<div class="card-header">
<h6 class="mb-0 fs-14">{{ translate('Category wise product sale') }}</h6>
</div>
<div class="card-body">
<canvas id="graph-1" class="w-100" height="500"></canvas>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card rounded-15p">
<div class="card-header">
<h6 class="mb-0 fs-14">{{ translate('Category wise product stock') }}</h6>
</div>
<div class="card-body">
<canvas id="graph-2" class="w-100" height="500"></canvas>
</div>
</div>
</div>
</div>
<div class="card rounded-15p">
<div class="card-header">
<h6 class="mb-0">{{ translate('Top 12 Products') }}</h6>
</div>
<div class="card-body">
<div class="aiz-carousel gutters-10 half-outside-arrow" data-items="6" data-xl-items="5" data-lg-items="4"
data-md-items="3" data-sm-items="2" data-arrows='true'>
@foreach (filter_products(\App\Models\Product::where('published', 1)->orderBy('num_of_sale', 'desc'))->limit(12)->get() as $key => $product)
<div class="carousel-box">
<div
class="aiz-card-box border border-light rounded shadow-sm hov-shadow-md mb-2 has-transition bg-white rounded-15p">
<div class="position-relative">
<a href="{{ route('product', $product->slug) }}" class="d-block">
<img class="img-fit lazyload mx-auto h-210px"
src="{{ static_asset('assets/img/placeholder.jpg') }}"
data-src="{{ uploaded_asset($product->thumbnail_img) }}"
alt="{{ $product->getTranslation('name') }}"
onerror="this.onerror=null;this.src='{{ static_asset('assets/img/placeholder.jpg') }}';">
</a>
</div>
<div class="p-md-3 p-2 text-left">
<div class="fs-15">
@if (home_base_price($product) != home_discounted_base_price($product))
<del class="fw-600 opacity-50 mr-1">{{ home_base_price($product) }}</del>
@endif
<span class="fw-700 text-primary">{{ home_discounted_base_price($product) }}</span>
</div>
<div class="rating rating-sm mt-1">
{{ renderStarRating($product->rating) }}
</div>
<h3 class="fw-600 fs-13 text-truncate-2 lh-1-4 mb-0">
<a href="{{ route('product', $product->slug) }}"
class="d-block text-reset">{{ $product->getTranslation('name') }}</a>
</h3>
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
@endcan
@endsection
@section('script')
<script type="text/javascript">
AIZ.plugins.chart('#pie-1', {
type: 'doughnut',
data: {
labels: [
'{{ translate('Total published products') }}',
'{{ translate('Total sellers products') }}',
'{{ translate('Total admin products') }}'
],
datasets: [{
data: [
{{ \App\Models\Product::where('published', 1)->count() }},
{{ \App\Models\Product::where('published', 1)->where('added_by', 'seller')->count() }},
{{ \App\Models\Product::where('published', 1)->where('added_by', 'admin')->count() }}
],
backgroundColor: [
"#fd3995",
"#34bfa3",
"#5d78ff",
'#fdcb6e',
'#d35400',
'#8e44ad',
'#006442',
'#4D8FAC',
'#CA6924',
'#C91F37'
]
}]
},
options: {
cutoutPercentage: 70,
legend: {
labels: {
fontFamily: 'Poppins',
boxWidth: 10,
usePointStyle: true
},
onClick: function() {
return '';
},
position: 'bottom'
}
}
});
AIZ.plugins.chart('#pie-2', {
type: 'doughnut',
data: {
labels: [
'{{ translate('Total sellers') }}',
'{{ translate('Total approved sellers') }}',
'{{ translate('Total pending sellers') }}'
],
datasets: [{
data: [
{{ \App\Models\Shop::count() }},
{{ \App\Models\Shop::where('verification_status', 1)->count() }},
{{ \App\Models\Shop::where('verification_status', 0)->count() }}
],
backgroundColor: [
"#fd3995",
"#34bfa3",
"#5d78ff",
'#fdcb6e',
'#d35400',
'#8e44ad',
'#006442',
'#4D8FAC',
'#CA6924',
'#C91F37'
]
}]
},
options: {
cutoutPercentage: 70,
legend: {
labels: {
fontFamily: 'Montserrat',
boxWidth: 10,
usePointStyle: true
},
onClick: function() {
return '';
},
position: 'bottom'
}
}
});
AIZ.plugins.chart('#graph-1', {
type: 'bar',
data: {
labels: [
@foreach ($root_categories as $key => $category)
'{{ $category->getTranslation('name') }}',
@endforeach
],
datasets: [{
label: '{{ translate('Number of sale') }}',
data: [
{{ $cached_graph_data['num_of_sale_data'] }}
],
backgroundColor: [
@foreach ($root_categories as $key => $category)
'rgba(55, 125, 255, 0.4)',
@endforeach
],
borderColor: [
@foreach ($root_categories as $key => $category)
'rgba(55, 125, 255, 1)',
@endforeach
],
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
gridLines: {
color: '#f2f3f8',
zeroLineColor: '#f2f3f8'
},
ticks: {
fontColor: "#8b8b8b",
fontFamily: 'Poppins',
fontSize: 10,
beginAtZero: true
}
}],
xAxes: [{
gridLines: {
color: '#f2f3f8'
},
ticks: {
fontColor: "#8b8b8b",
fontFamily: 'Poppins',
fontSize: 10
}
}]
},
legend: {
labels: {
fontFamily: 'Poppins',
boxWidth: 10,
usePointStyle: true
},
onClick: function() {
return '';
},
}
}
});
AIZ.plugins.chart('#graph-2', {
type: 'bar',
data: {
labels: [
@foreach ($root_categories as $key => $category)
'{{ $category->getTranslation('name') }}',
@endforeach
],
datasets: [{
label: '{{ translate('Number of Stock') }}',
data: [
{{ $cached_graph_data['qty_data'] }}
],
backgroundColor: [
@foreach ($root_categories as $key => $category)
'rgba(253, 57, 149, 0.4)',
@endforeach
],
borderColor: [
@foreach ($root_categories as $key => $category)
'rgba(253, 57, 149, 1)',
@endforeach
],
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
gridLines: {
color: '#f2f3f8',
zeroLineColor: '#f2f3f8'
},
ticks: {
fontColor: "#8b8b8b",
fontFamily: 'Poppins',
fontSize: 10,
beginAtZero: true
}
}],
xAxes: [{
gridLines: {
color: '#f2f3f8'
},
ticks: {
fontColor: "#8b8b8b",
fontFamily: 'Poppins',
fontSize: 10
}
}]
},
legend: {
labels: {
fontFamily: 'Poppins',
boxWidth: 10,
usePointStyle: true
},
onClick: function() {
return '';
},
}
}
});
</script>
@endsection
|