42 lines
1.3 KiB
PHP
42 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Integrations\Whmcs\Writers;
|
|
|
|
use App\Integrations\Whmcs\DTOs\ServiceData;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Str;
|
|
|
|
class ServiceWriter
|
|
{
|
|
/**
|
|
* Skips services whose WHMCS client couldn't be resolved to a local customer —
|
|
* services.customer_id is NOT NULL.
|
|
*/
|
|
public function write(ServiceData $data): bool
|
|
{
|
|
if ($data->customerId === null) {
|
|
return false;
|
|
}
|
|
|
|
DB::table('services')->updateOrInsert(
|
|
['legacy_id' => $data->legacyId],
|
|
[
|
|
'uuid' => DB::table('services')->where('legacy_id', $data->legacyId)->value('uuid') ?? (string) Str::uuid(),
|
|
'customer_id' => $data->customerId,
|
|
'product_id' => $data->productId,
|
|
'legacy_product_id' => $data->legacyProductId,
|
|
'order_item_id' => $data->orderItemId,
|
|
'server_name' => $data->serverName,
|
|
'status' => $data->status,
|
|
'auto_renew' => $data->autoRenew,
|
|
'started_at' => $data->startedAt,
|
|
'expires_at' => $data->expiresAt,
|
|
'cancelled_at' => $data->cancelledAt,
|
|
'note' => $data->note,
|
|
]
|
|
);
|
|
|
|
return true;
|
|
}
|
|
}
|