diff --git a/app/Http/Controllers/Admin/Auth/DashboardController.php b/app/Http/Controllers/Admin/Auth/DashboardController.php index 270b6db..0b5abfa 100644 --- a/app/Http/Controllers/Admin/Auth/DashboardController.php +++ b/app/Http/Controllers/Admin/Auth/DashboardController.php @@ -8,6 +8,7 @@ use App\Models\Admin; use App\Models\Flight; use App\Models\Tour; use App\Models\User; +use Illuminate\Support\Facades\Cache; class DashboardController extends Controller { @@ -21,28 +22,37 @@ class DashboardController extends Controller $flightsCount = Flight::count(); - $tourViews= Tour::query() - ->selectRaw('DATE(created_at) as date,SUM(views) as total') - ->where('created_at','>=',now()->subDays(9)) - ->groupBy('date') - ->orderBy('date') - ->get(); + $tourViews = $this->getViewsForLast10Days(Tour::class, 'tour_views'); - $flightViews=Flight::query() - ->selectRaw('DATE(created_at) as date,SUM(views) as total') - ->where('created_at','>=',now()->subDays(9)) - ->groupBy('date') - ->orderBy('date') - ->get(); + $flightViews = $this->getViewsForLast10Days(Flight::class, 'flight_views'); $logs = ActivityLog::with('admin') ->latest() ->take(5) ->get(); - return view('admin.dashboard',compact('adminsCount', - 'usersCount','toursCount','flightsCount','tourViews', - 'flightViews','logs' + return view('admin.dashboard', compact( + 'adminsCount', + 'usersCount', 'toursCount', 'flightsCount', 'tourViews', + 'flightViews', 'logs' )); } + + private function getViewsForLast10Days(string $model, string $cachePrefix) + { + $ids = $model::pluck('id'); + + return collect(range(9, 0))->map(function ($i) use ($ids, $cachePrefix) { + $date = now()->subDays($i)->format('Y-m-d'); + + $total = $ids->sum(function ($id) use ($cachePrefix, $date) { + return Cache::get("{$cachePrefix}:{$id}:{$date}", 0); + }); + + return [ + 'date' => verta($date)->format('m/d'), + 'total' => (int) $total, + ]; + })->values(); + } } diff --git a/app/Http/Controllers/Admin/TourController.php b/app/Http/Controllers/Admin/TourController.php index 6a45669..530e011 100644 --- a/app/Http/Controllers/Admin/TourController.php +++ b/app/Http/Controllers/Admin/TourController.php @@ -87,9 +87,6 @@ class TourController extends Controller } } - - - public function edit(Tour $tour) { return view('admin.tours.edit',compact('tour')); diff --git a/app/Http/Controllers/FlightController.php b/app/Http/Controllers/FlightController.php index bd6a42d..bf53bca 100644 --- a/app/Http/Controllers/FlightController.php +++ b/app/Http/Controllers/FlightController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Models\Flight; use App\Models\Tour; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Cache; class FlightController extends Controller { @@ -40,6 +41,9 @@ class FlightController extends Controller { $flight->increment('views'); + $cacheKey = 'flight_views:' . $flight->id . ':' . now()->format('Y-m-d'); + Cache::put($cacheKey, Cache::get($cacheKey, 0) + 1, now()->addDays(15)); + $comments = $flight->comments() ->latest() ->get(); diff --git a/app/Http/Controllers/TourController.php b/app/Http/Controllers/TourController.php index 4bafb9f..0ff27b8 100644 --- a/app/Http/Controllers/TourController.php +++ b/app/Http/Controllers/TourController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Models\Tour; +use Illuminate\Support\Facades\Cache; class TourController extends Controller { @@ -24,6 +25,10 @@ class TourController extends Controller { $tour->load('travelType'); $tour->increment('views'); + + $cacheKey = 'tour_views:' . $tour->id . ':' . now()->format('Y-m-d'); + Cache::put($cacheKey, Cache::get($cacheKey, 0) + 1, now()->addDays(15)); + $comments = $tour->comments() ->latest() ->get(); diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index 938d3ae..e2c3797 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -174,46 +174,98 @@ - - + -@endsection + + + @endsection diff --git a/routes/admin.php b/routes/admin.php index db673a6..5b1e3d9 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -26,8 +26,7 @@ Route::prefix('admin')->name('admin.')->group(function (){ Route::get('/','login')->name('index'); Route::post('/','loginPost')->name('post'); }); - Route::post('logout','logout')->middleware('auth:admin') - ->name('logout'); + Route::post('logout','logout')->middleware('auth:admin')->name('logout'); }); Route::middleware('auth:admin')->group(function (){