diff --git a/app/Http/Controllers/FlightController.php b/app/Http/Controllers/FlightController.php index 86dafcf..d7f2ab6 100644 --- a/app/Http/Controllers/FlightController.php +++ b/app/Http/Controllers/FlightController.php @@ -55,7 +55,16 @@ class FlightController extends Controller 404 ); - $flight->increment('views'); + $viewedFlights = session()->get('viewed_flights', []); + + if (!in_array($flight->id, $viewedFlights)) { + + $flight->increment('views'); + + $viewedFlights[] = $flight->id; + + session()->put('viewed_flights', $viewedFlights); + } $flight->load([ 'departureAirport.city', diff --git a/app/Http/Controllers/IndexController.php b/app/Http/Controllers/IndexController.php index 6a39ccd..cd764fe 100644 --- a/app/Http/Controllers/IndexController.php +++ b/app/Http/Controllers/IndexController.php @@ -3,16 +3,32 @@ namespace App\Http\Controllers; use App\Models\Flight; +use App\Models\SiteVisit; use App\Models\Tour; use Illuminate\Http\Request; class IndexController extends Controller { - public function index() + public function index(Request $request) { $title = 'صفحه اصلی'; + $visitedKey = 'visited_' . now()->toDateString(); + + if (! $request->session()->has($visitedKey)) { + + SiteVisit::create([ + 'ip_address' => $request->ip(), + 'url' => $request->fullUrl(), + 'user_agent' => $request->userAgent(), + ]); + + $request->session()->put($visitedKey, true); + + } + + $flights = Flight::query() ->with([ 'departureAirport.city', diff --git a/app/Models/Flight.php b/app/Models/Flight.php index b3b905b..2cc38a5 100644 --- a/app/Models/Flight.php +++ b/app/Models/Flight.php @@ -8,6 +8,7 @@ namespace App\Models; use App\Enums\FlightStatus; use App\Enums\FlightType; +use App\Traits\LogsActivity; use Carbon\Carbon; use Illuminate\Contracts\Database\Query\Builder; use Illuminate\Database\Eloquent\Attributes\Scope; @@ -43,6 +44,7 @@ use Illuminate\Database\Eloquent\Model; */ class Flight extends Model { + use LogsActivity; protected $table = 'flights'; public static $snakeAttributes = false;