feat: make dashboard and sidebar dynamic
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Comment;
|
||||
use App\Models\Flight;
|
||||
use App\Models\Tour;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class DashboardController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$recentComments = Comment::with(['user', 'commentable'])
|
||||
->latest()
|
||||
->paginate(5);
|
||||
|
||||
$totalUser = User::count();
|
||||
$totalTours = Tour::count();
|
||||
$totalFlights = Flight::count();
|
||||
|
||||
return view('admin.dashboard', compact('totalUser', 'totalTours', 'totalFlights' , 'recentComments'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
@extends('dashboard.layouts.app')
|
||||
|
||||
@section('title' , 'داشبورد')
|
||||
|
||||
|
||||
@section('account-content')
|
||||
|
||||
<div class="user-profile-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<div class="dashboard-widget dashboard-widget-color-1">
|
||||
<div class="dashboard-widget-info">
|
||||
<h1>{{$totalUser}} عدد</h1>
|
||||
<span>تمام کاربر ها</span>
|
||||
</div>
|
||||
<div class="dashboard-widget-icon">
|
||||
<i class="far fa-users"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<div class="dashboard-widget dashboard-widget-color-2">
|
||||
<div class="dashboard-widget-info">
|
||||
<h1>{{$totalTours}} عدد </h1>
|
||||
<span>تعداد تور</span>
|
||||
</div>
|
||||
<div class="dashboard-widget-icon">
|
||||
<i class="fal fa-loader"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<div class="dashboard-widget dashboard-widget-color-3">
|
||||
<div class="dashboard-widget-info">
|
||||
<h1>{{$totalFlights}} عدد</h1>
|
||||
<span>تعداد پرواز ها</span>
|
||||
</div>
|
||||
<div class="dashboard-widget-icon">
|
||||
<i class="fal fa-sack-dollar"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-lg-12">
|
||||
<div class="user-profile-card profile-booking">
|
||||
<h4 class="user-profile-card-title">نظرات اخیر</h4>
|
||||
<div class="table-responsive">
|
||||
<table class="table text-nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>نه</th>
|
||||
<th>کاربر</th>
|
||||
<th>نظر</th>
|
||||
<th>مربوط به</th>
|
||||
<th>تاریخ</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($recentComments as $index => $comment)
|
||||
<tr>
|
||||
<td>{{ $recentComments->firstItem() + $index }}.</td>
|
||||
<td>{{ $comment->user->first_name ?? $comment->guest_name }}</td>
|
||||
<td>{{ \Illuminate\Support\Str::limit($comment->body, 40) }}</td>
|
||||
<td>{{ $comment->commentable->title ?? $comment->commentable->flight_number ?? '-' }}</td>
|
||||
<td>{{ $comment->created_at->diffForHumans() }}</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="5" class="text-center">هنوز نظری ثبت نشده.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="pagination-area my-4">
|
||||
{{ $recentComments->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -1,34 +1,174 @@
|
||||
|
||||
|
||||
|
||||
<div class="user-profile-sidebar">
|
||||
|
||||
<div class="user-profile-sidebar-top">
|
||||
|
||||
<div class="user-profile-img">
|
||||
<img src="{{asset('assets/img/account/user.jpg')}}" alt>
|
||||
<button type="button" class="profile-img-btn"><i class="far fa-camera"></i></button>
|
||||
<img src="{{ asset('assets/img/account/user.jpg') }}" alt>
|
||||
|
||||
<button type="button" class="profile-img-btn">
|
||||
<i class="far fa-camera"></i>
|
||||
</button>
|
||||
|
||||
<input type="file" class="profile-img-file">
|
||||
</div>
|
||||
<h4>{{auth()->user()->first_name . ' ' . auth()->user()->last_name}}</h4>
|
||||
<p><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d7bdb8b9a4b8b997b2afb6baa7bbb2f9b4b8ba">[ایمیل محفوظ]</a></p>
|
||||
|
||||
@if(auth('admin')->check())
|
||||
|
||||
<h4>
|
||||
{{ auth('admin')->user()->first_name . ' ' . auth('admin')->user()->last_name }}
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
{{ auth('admin')->user()->email }}
|
||||
</p>
|
||||
|
||||
@elseif(auth('web')->check())
|
||||
|
||||
<h4>
|
||||
{{ auth('web')->user()->first_name . ' ' . auth('web')->user()->last_name }}
|
||||
</h4>
|
||||
|
||||
<p>
|
||||
{{ auth('web')->user()->email }}
|
||||
</p>
|
||||
|
||||
@endif
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<ul class="user-profile-sidebar-list">
|
||||
<li><a class="active" href="{{route('profile')}}"><i class="far fa-user"></i> نمایه من</a></li>
|
||||
<li><a href="profile-booking.html"><i class="far fa-shopping-bag"></i> رزرو من</a></li>
|
||||
<li><a href="profile-booking-history.html"><i class="far fa-clipboard-list"></i> تاریخچه رزرو</a></li>
|
||||
<li><a href="{{route('comment.index')}}"><i class="far fa-globe"></i> نظرات من</a></li>
|
||||
<li class="profile-menu">
|
||||
<a href="#profile-menu" data-bs-toggle="collapse" aria-expanded="false" aria-controls="profile-menu">
|
||||
<i class="far fa-plus-circle"></i> افزودن لیست <i class="far fa-angle-down profile-menu-angle"></i>
|
||||
</a>
|
||||
<div class="collapse" id="profile-menu">
|
||||
<ul class="profile-menu-list">
|
||||
<li><a href="flight-add.html">اضافه کردن پرواز</a></li>
|
||||
<li><a href="tour-add.html">اضافه کردن تور </a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li><a href="{{route('favorites.index')}}"><i class="far fa-heart"></i> علاقه مندی های من</a></li>
|
||||
<li><a href="{{route('setting')}}"><i class="far fa-cog"></i> تنظیمات</a></li>
|
||||
<li><a href="{{route('logout')}}"><i class="far fa-sign-out"></i> خروج</a></li>
|
||||
|
||||
{{-- ========================= --}}
|
||||
{{-- ADMIN --}}
|
||||
{{-- ========================= --}}
|
||||
|
||||
@if(auth('admin')->check())
|
||||
|
||||
<li>
|
||||
<a href="{{ route('admin.dashboard') }}"
|
||||
class="{{ request()->routeIs('admin.dashboard') ? 'active' : '' }}">
|
||||
<i class="far fa-home"></i>
|
||||
داشبورد
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#">
|
||||
<i class="far fa-plane"></i>
|
||||
مدیریت پروازها
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#">
|
||||
<i class="far fa-suitcase"></i>
|
||||
مدیریت تورها
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#">
|
||||
<i class="far fa-users"></i>
|
||||
لیست کاربران سایت
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<form action="{{ route('admin.logout') }}" method="POST">
|
||||
@csrf
|
||||
|
||||
<button type="submit"
|
||||
style="border: none; background: none; padding: 0; width: 100%; text-align: right;">
|
||||
<i class="far fa-sign-out"></i>
|
||||
خروج
|
||||
</button>
|
||||
</form>
|
||||
</li>
|
||||
|
||||
|
||||
{{-- ========================= --}}
|
||||
{{-- USER --}}
|
||||
{{-- ========================= --}}
|
||||
|
||||
@elseif(auth('web')->check())
|
||||
|
||||
<li>
|
||||
<a href="{{ route('profile') }}"
|
||||
class="{{ request()->routeIs('profile') ? 'active' : '' }}">
|
||||
<i class="far fa-home"></i>
|
||||
نمایه من
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="{{ request()->routeIs('comment.index') ? 'active' : '' }}"
|
||||
href="{{ route('comment.index') }}">
|
||||
<i class="far fa-globe"></i>
|
||||
نظرات من
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="profile-menu">
|
||||
|
||||
<a href="#profile-menu"
|
||||
data-bs-toggle="collapse"
|
||||
aria-expanded="false"
|
||||
aria-controls="profile-menu">
|
||||
|
||||
<i class="far fa-plus-circle"></i>
|
||||
افزودن لیست
|
||||
|
||||
<i class="far fa-angle-down profile-menu-angle"></i>
|
||||
</a>
|
||||
|
||||
<div class="collapse" id="profile-menu">
|
||||
|
||||
<ul class="profile-menu-list">
|
||||
|
||||
<li>
|
||||
<a href="flight-add.html">
|
||||
اضافه کردن پرواز
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="tour-add.html">
|
||||
اضافه کردن تور
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="{{ request()->routeIs('favorites.index') ? 'active' : '' }}"
|
||||
href="{{ route('favorites.index') }}">
|
||||
<i class="far fa-heart"></i>
|
||||
علاقه مندی های من
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="{{ request()->routeIs('setting') ? 'active' : '' }}"
|
||||
href="{{ route('setting') }}">
|
||||
<i class="far fa-cog"></i>
|
||||
تنظیمات
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="{{ route('logout') }}">
|
||||
<i class="far fa-sign-out"></i>
|
||||
خروج
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@endif
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@extends('layouts.app')
|
||||
@section('content')
|
||||
<div class="hero-section">
|
||||
<div class="hero-single" style="background: url(assets/img/hero/hero-4.jpg)">
|
||||
<div class="hero-single" style="background: url({{asset('assets/img/hero/hero-4.jpg')}})">
|
||||
<div class="container">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-lg-12 mx-auto">
|
||||
@@ -17,176 +17,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="search-area">
|
||||
<div class="container">
|
||||
<div class="search-wrapper">
|
||||
|
||||
<div class="search-box activity-search">
|
||||
<div class="search-form">
|
||||
<form action="#">
|
||||
<div class="activity-search-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<div class="form-group">
|
||||
<label>موقعیت</label>
|
||||
<div class="form-group-icon">
|
||||
<input type="text" name="location" class="form-control"
|
||||
value="تهران ، میدان آزادی">
|
||||
<i class="fal fa-earth-americas"></i>
|
||||
</div>
|
||||
<p>کجا می روی؟</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="form-group">
|
||||
<div class="search-form-date">
|
||||
<div class="search-form-journey">
|
||||
<label>بررسی کنید</label>
|
||||
<div class="form-group-icon">
|
||||
<input type="text" name="journey-date"
|
||||
class="form-control date-picker journey-date">
|
||||
<i class="fal fa-calendar-days"></i>
|
||||
</div>
|
||||
<p class="journey-day-name"></p>
|
||||
</div>
|
||||
<div class="search-form-return">
|
||||
<label>پرداخت</label>
|
||||
<div class="form-group-icon">
|
||||
<input type="text" name="return-date"
|
||||
class="form-control date-picker return-date">
|
||||
</div>
|
||||
<p class="return-day-name"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="form-group dropdown passenger-box">
|
||||
<div class="passenger-class" role="menu" data-bs-toggle="dropdown"
|
||||
aria-expanded="false">
|
||||
<label>اتاق ها، مهمانان</label>
|
||||
<div class="form-group-icon">
|
||||
<div class="passenger-total">
|
||||
<span class="passenger-total-room">2</span> اتاق,
|
||||
<span class="passenger-total-amount">2</span> میهمان
|
||||
</div>
|
||||
<i class="fal fa-user-plus"></i>
|
||||
</div>
|
||||
<p class="passenger-class-name">اتاق دو نفره</p>
|
||||
</div>
|
||||
<div class="dropdown-menu dropdown-menu-end">
|
||||
<div class="dropdown-item">
|
||||
<div class="passenger-item">
|
||||
<div class="passenger-info">
|
||||
<h6>بزرگسالان</h6>
|
||||
<p>+12 سال</p>
|
||||
</div>
|
||||
<div class="passenger-qty">
|
||||
<button type="button" class="minus-btn"><i
|
||||
class="far fa-minus"></i></button>
|
||||
<input type="text" name="adult"
|
||||
class="qty-amount passenger-adult" value="2"
|
||||
readonly>
|
||||
<button type="button" class="plus-btn"><i
|
||||
class="far fa-plus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropdown-item">
|
||||
<div class="passenger-item">
|
||||
<div class="passenger-info">
|
||||
<h6>کودکان</h6>
|
||||
<p>2 تا 12 سال</p>
|
||||
</div>
|
||||
<div class="passenger-qty">
|
||||
<button type="button" class="minus-btn"><i
|
||||
class="far fa-minus"></i></button>
|
||||
<input type="text" name="children"
|
||||
class="qty-amount passenger-children" value="0"
|
||||
readonly>
|
||||
<button type="button" class="plus-btn"><i
|
||||
class="far fa-plus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropdown-item">
|
||||
<div class="passenger-item">
|
||||
<div class="passenger-info">
|
||||
<h6>نوزاد</h6>
|
||||
<p>کمتر از 2 سال</p>
|
||||
</div>
|
||||
<div class="passenger-qty">
|
||||
<button type="button" class="minus-btn"><i
|
||||
class="far fa-minus"></i></button>
|
||||
<input type="text" name="infant"
|
||||
class="qty-amount passenger-infant" value="0"
|
||||
readonly>
|
||||
<button type="button" class="plus-btn"><i
|
||||
class="far fa-plus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropdown-item">
|
||||
<div class="passenger-item">
|
||||
<div class="passenger-info">
|
||||
<h6>اتاق ها</h6>
|
||||
</div>
|
||||
<div class="passenger-qty">
|
||||
<button type="button" class="minus-btn"><i
|
||||
class="far fa-minus"></i></button>
|
||||
<input type="text" name="room"
|
||||
class="qty-amount passenger-room" value="2" readonly>
|
||||
<button type="button" class="plus-btn"><i
|
||||
class="far fa-plus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropdown-item">
|
||||
<h6 class="mb-3 mt-2">نوع اتاق</h6>
|
||||
<div class="passenger-class-info">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio"
|
||||
value="Single Room" name="room-type" id="room-type4">
|
||||
<label class="form-check-label" for="room-type4">
|
||||
اتاق یک نفره
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" checked type="radio"
|
||||
value="Double Room" name="room-type" id="room-type5">
|
||||
<label class="form-check-label" for="room-type5">
|
||||
اتاق دونفره
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio"
|
||||
value="Deluxe Room" name="room-type" id="room-type6">
|
||||
<label class="form-check-label" for="room-type6">
|
||||
اتاق دولوکس
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-btn">
|
||||
<button type="submit" class="theme-btn"><span class="far fa-search"></span>جستجو
|
||||
کردن
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="feature-area py-120">
|
||||
<div class="container">
|
||||
<div class="feature-wrapper">
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
<li><a class="dropdown-item" href="register.html">ثبت نام</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3">
|
||||
<ul>
|
||||
<li><a class="dropdown-item" href="profile-notification.html">اطلاعیه</a></li>
|
||||
@@ -38,41 +37,32 @@
|
||||
<li><a class="dropdown-item" href="contact.html">با ما تماس بگیرید</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown"> پرواز ها</a>
|
||||
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">پرواز ها</a>
|
||||
<ul class="dropdown-menu fade-down">
|
||||
<li><a class="dropdown-item" href="{{route('flight.index')}}">لیست پرواز</a>
|
||||
|
||||
<li><a class="dropdown-item" href="{{route('flight.index')}}">لیست پرواز</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown"> تور ها</a>
|
||||
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">تور ها</a>
|
||||
<ul class="dropdown-menu fade-down">
|
||||
<li><a class="dropdown-item" href="{{route('tour.index')}}">لیست تور</a></li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="contact.html">تماس باما</a></li>
|
||||
|
||||
|
||||
</ul>
|
||||
<div class="header-nav-right">
|
||||
<div class="header-btn">
|
||||
@if(!auth()->check())
|
||||
<a href="{{route('auth.register.index')}}" class="theme-btn mt-2">ثبت نام | ورود</a>
|
||||
@if(auth('admin')->check())
|
||||
<a href="{{route('admin.dashboard')}}" class="theme-btn mt-2">پنل ادمین</a>
|
||||
@elseif(auth('web')->check())
|
||||
<a href="{{route('profile')}}" class="theme-btn mt-2">پروفایل</a>
|
||||
@else
|
||||
<a href="{{route('profile')}}" class="theme-btn mt-2">{{auth()->user()->first_name . ' ' . auth()->user()->last_name}}</a>
|
||||
<a href="{{route('auth.register.index')}}" class="theme-btn mt-2">ثبت نام | ورود</a>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user