Files
wevads-platform/scripts/sync-office-to-graph.php
2026-02-26 04:53:11 +01:00

45 lines
1.9 KiB
PHP

<?php
/**
* Sync office_accounts → graph_tenants + graph_accounts
* Ensures brain uses all available Office 365 domains
* Run: php sync-office-to-graph.php
*/
$pdo = new PDO('pgsql:host=localhost;dbname=adx_system', 'admin', 'admin123');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 1. Sync tenants (with Graph API creds)
$r1 = $pdo->exec("
INSERT INTO admin.graph_tenants (tenant_domain, tenant_id, client_id, client_secret, status, created_at, users_count, sends_today, daily_limit)
SELECT DISTINCT ON (oa.tenant_domain)
oa.tenant_domain, oa.tenant_id, oa.app_id, oa.app_secret, 'active', NOW(), 0, 0, 500
FROM admin.office_accounts oa
WHERE oa.app_id IS NOT NULL AND oa.app_id != ''
AND oa.app_secret IS NOT NULL AND oa.app_secret != ''
AND oa.tenant_id IS NOT NULL AND oa.tenant_id != ''
AND oa.status IN ('Active','active','verified')
AND oa.tenant_domain NOT IN (SELECT tenant_domain FROM admin.graph_tenants)
ORDER BY oa.tenant_domain, oa.id DESC
");
echo date('Y-m-d H:i:s') . " Synced $r1 new tenants\n";
// 2. Sync accounts (senders)
$r2 = $pdo->exec("
INSERT INTO admin.graph_accounts (email, tenant_domain, password, can_send, can_read, has_mailbox, status, created_at)
SELECT oa.admin_email, oa.tenant_domain, oa.admin_password, true, true, true, 'active', NOW()
FROM admin.office_accounts oa
WHERE oa.status IN ('Active','active','verified')
AND oa.admin_email IS NOT NULL AND oa.admin_email != ''
AND oa.admin_password IS NOT NULL AND oa.admin_password != ''
AND oa.admin_email NOT IN (SELECT email FROM admin.graph_accounts WHERE email IS NOT NULL)
AND oa.tenant_domain IN (SELECT tenant_domain FROM admin.graph_tenants WHERE status='active')
LIMIT 500
");
echo date('Y-m-d H:i:s') . " Synced $r2 new accounts\n";
// 3. Reset daily sends counter at midnight
$hour = (int)date('H');
if ($hour === 0) {
$pdo->exec("UPDATE admin.graph_tenants SET sends_today = 0");
echo date('Y-m-d H:i:s') . " Reset daily sends\n";
}