feat: implement site visit in controller and add visit table

This commit is contained in:
2026-08-20 12:44:04 -07:00
parent 99c60dd9c7
commit f0331152ea
11 changed files with 344 additions and 52 deletions
@@ -6,15 +6,31 @@ use App\Http\Controllers\Controller;
use App\Models\Booking;
use App\Models\Flight;
use App\Models\User;
use App\Models\Visit;
use Carbon\Carbon;
class DashboardController extends Controller
{
public function index()
{
$flightsCount = Flight::count();
$usersCount = User::count();
$bookingsCount = Booking::count();
return view('admin.dashboard', compact('flightsCount', 'usersCount', 'bookingsCount'));
$startDate = Carbon::now()->subDays(9)->startOfDay();
$endDate = Carbon::now()->endOfDay();
$flightsCount = Flight::count();
$usersCount = User::count();
$bookingsCount = Booking::count();
$indexPageCont = Visit::count();
$visits = Visit::whereBetween('created_at', [$startDate, $endDate])
->selectRaw('DATE(created_at) as visit_date, COUNT(*) as total')
->groupBy('visit_date')
->orderBy('visit_date')
->get();
return view('admin.dashboard', compact('flightsCount', 'usersCount',
'bookingsCount', 'indexPageCont' , 'visits'));
}
}
@@ -288,7 +288,6 @@ class FlightController extends Controller
'status' => [
'required',
'in:0,1',
],
]);
+12 -1
View File
@@ -5,13 +5,24 @@ namespace App\Http\Controllers;
use App\Models\Airport;
use App\Models\Flight;
use App\Models\Tour;
use App\Models\Visit;
use Illuminate\Http\Request;
class IndexController extends Controller
{
public function index()
public function index(Request $request)
{
if (! $request->session()->has('visited')) {
Visit::create([
'ip_address' => $request->ip(),
'url' => $request->fullUrl(),
'user_agent' => $request->userAgent(),
]);
$request->session()->put('visited', true);
}
$flights = Flight::query()
->where('status', \App\Enums\FlightStatus::ENABLE)
->with([
+3 -2
View File
@@ -6,6 +6,7 @@
namespace App\Models;
use App\Enums\FlightStatus;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Attributes\Scope;
use Illuminate\Database\Eloquent\Builder;
@@ -52,8 +53,8 @@ class Flight extends Model
'price' => 'float',
'capacity' => 'int',
'views' => 'int',
'status' => 'int'
];
'status' => FlightStatus::class
];
protected $fillable = [
'title',
+4 -1
View File
@@ -2,6 +2,7 @@
namespace App\Models;
use App\Enums\TourStatus;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
@@ -15,7 +16,8 @@ class Tour extends Model
'duration' => 'int',
'views' => 'int',
'price' => 'int',
'status' => 'int',
'status' => TourStatus::class,
'departure_time'=> 'datetime',
'created_at' => 'datetime',
'updated_at' => 'datetime',
];
@@ -30,6 +32,7 @@ class Tour extends Model
'duration',
'views',
'price',
'departure_time',
'status',
'created_at',
];
+34
View File
@@ -0,0 +1,34 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
/**
* Class Visit
*
* @property int $id
* @property string|null $ip_address
* @property string|null $url
* @property string|null $user_agent
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
*
* @package App\Models
*/
class Visit extends Model
{
protected $table = 'visits';
public static $snakeAttributes = false;
protected $fillable = [
'ip_address',
'url',
'user_agent'
];
}