find($order->company_id);
if (! $company) return;
// ── Staff: Web Push to active users of this tenant ──
$title = 'Comandă nouă #' . $order->number;
$body = $order->customer_name . ' · ' . number_format((float) $order->total, 2) . ' '
. ($company->settings['currency'] ?? 'MDL');
$url = '/app/resources/online-orders/' . $order->id . '/edit';
$userIds = User::where('status', 'active')->pluck('id');
foreach ($userIds as $uid) {
$this->push->sendToUser((int) $uid, $title, $body, $url, 'shop-order-' . $order->id);
}
// ── Customer: Telegram if their phone is linked ──
$needle = Client::normalizePhone($order->customer_phone);
if ($needle) {
$client = Client::whereNotNull('telegram_chat_id')
->whereRaw(
"REPLACE(REPLACE(REPLACE(REPLACE(phone, ' ', ''), '-', ''), '(', ''), ')', '') LIKE ?",
['%' . substr($needle, -9) . '%']
)
->first();
if ($client && $client->telegram_chat_id) {
$brand = htmlspecialchars($company->display_name ?? $company->name);
$text = "🛒 Comanda #{$order->number} primită\n"
. "Total: " . number_format((float) $order->total, 2) . " "
. ($company->settings['currency'] ?? 'MDL') . "\n\n"
. "Urmărește statusul: " . $order->trackingUrl() . "\n\n{$brand}";
$this->telegram->sendMessage($company, (string) $client->telegram_chat_id, $text);
}
}
// ── Customer: email confirmation when address given ──
if ($order->customer_email) {
try {
\Illuminate\Support\Facades\Mail::to($order->customer_email)
->send(new \App\Mail\ShopOrderConfirmationMail($order, $company));
} catch (\Throwable $e) {
\Illuminate\Support\Facades\Log::warning('shop order confirmation mail failed', [
'order' => $order->id, 'err' => $e->getMessage(),
]);
}
}
}
}