39498-vm/app/Http/Controllers/OfferController.php
2026-04-06 06:10:54 +00:00

49 lines
1.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Offer;
use App\Models\Ride;
use App\Models\RideRecommendation;
use App\Services\EventTracker;
use Illuminate\Http\Request;
use Illuminate\View\View;
class OfferController extends Controller
{
public function __construct(protected EventTracker $eventTracker)
{
}
public function show(Request $request, Offer $offer): View
{
$ride = $request->integer('ride') ? Ride::find($request->integer('ride')) : null;
$recommendation = $request->integer('recommendation') ? RideRecommendation::with('offer', 'ride')->find($request->integer('recommendation')) : null;
if ($recommendation && $recommendation->offer_id === $offer->id) {
$this->eventTracker->logOncePerSession(
'recommendation_clicked',
'rec-clicked-'.$recommendation->id,
$ride,
$offer,
null,
$recommendation,
['position' => $recommendation->position]
);
if (!$recommendation->was_clicked) {
$recommendation->forceFill([
'was_clicked' => true,
'clicked_at' => now(),
])->save();
}
}
return view('offers.show', [
'offer' => $offer,
'ride' => $ride,
'recommendation' => $recommendation,
]);
}
}