File: /home/xedaptot/ai.naniguide.com/app/Services/Ads/AdPixelService.php
<?php
namespace App\Services\Ads;
use App\Model\AdPixel;
use App\Model\LocalCustomer;
class AdPixelService
{
public function create(LocalCustomer $customer, array $data): AdPixel
{
$pixel = new AdPixel();
$pixel->uid = uniqid();
$pixel->customer_id = $customer->id;
$pixel->platform = $data['platform'];
$pixel->pixel_id = $data['pixel_id'];
if (isset($data['access_token']) && $data['access_token']) {
$pixel->access_token = $data['access_token'];
}
$pixel->status = AdPixel::STATUS_ACTIVE;
$pixel->save();
AdActivityLogger::log(
entity: $pixel,
action: 'pixel.created',
status: 'success',
title: 'Tracking pixel created: ' . $pixel->pixel_id,
platform: $pixel->platform,
);
return $pixel;
}
public function verify(AdPixel $pixel): bool
{
// Mock verification — in real impl this would ping platform API
$pixel->last_verified_at = now();
$pixel->save();
AdActivityLogger::log(
entity: $pixel,
action: 'pixel.verified',
status: 'success',
title: 'Pixel verified: ' . $pixel->pixel_id,
platform: $pixel->platform,
);
return true;
}
public function delete(AdPixel $pixel): void
{
$name = $pixel->pixel_id;
$pixel->delete();
AdActivityLogger::log(
entity: new AdPixel(['customer_id' => 0]),
action: 'pixel.deleted',
status: 'info',
title: 'Pixel deleted: ' . $name,
);
}
}