$tenantId = 31;
$chatId = \App\Models\TelegramLink::orderBy('id', 'desc')->value('telegram_chat_id');
$roleUpdates = [
    'engineering manager' => 'Cleopas Tekwani',
    'finance manager' => 'Denford Makufa',
    'managing director' => 'Simba Muchatukwa',
];
$roleResults = [];
foreach ($roleUpdates as $roleName => $newName) {
    $role = \App\Models\Role::where('tenant_id', $tenantId)->where('name', $roleName)->first();
    if (!$role) {
        $roleResults[] = ['role' => $roleName, 'status' => 'role_not_found'];
        continue;
    }
    $userId = \DB::table('role_user')->where('role_id', $role->id)->value('user_id');
    if (!$userId) {
        $roleResults[] = ['role' => $roleName, 'status' => 'no_user'];
        continue;
    }
    $user = \App\Models\User::find($userId);
    if (!$user) {
        $roleResults[] = ['role' => $roleName, 'status' => 'user_not_found'];
        continue;
    }
    $user->update(['name' => $newName]);
    if ($chatId) {
        $link = \App\Models\TelegramLink::firstOrNew(['user_id' => $user->id]);
        $link->telegram_user_id = (string) $chatId;
        $link->telegram_chat_id = (string) $chatId;
        $link->save();
    }
    $roleResults[] = ['role' => $roleName, 'user_id' => $user->id, 'name' => $newName, 'chat_linked' => (bool) $chatId];
}

$pr = \App\Models\PurchaseRequest::where('request_code', 'PR-AI-36')->first();
$prResult = null;
if ($pr) {
    $items = $pr->items()->get();
    $updatedItems = 0;
    foreach ($items as $item) {
        if ($item->est_unit_cost !== null && (float) $item->est_unit_cost > 0) {
            continue;
        }
        $quote = $item->quote_amount_usd;
        if ($quote === null || $quote === '') {
            continue;
        }
        $qty = $item->quantity;
        if ($qty === null || (float) $qty == 0) {
            $qty = 1;
            $item->quantity = $qty;
        }
        if ((float) $qty > 0) {
            $item->est_unit_cost = (float) $quote / (float) $qty;
        }
        $item->save();
        $updatedItems++;
    }
    $total = $pr->items()->get()->sum(function ($item) {
        $qty = (float) ($item->quantity ?? 0);
        $unit = (float) ($item->est_unit_cost ?? $item->quote_amount_usd ?? 0);
        return $qty * $unit;
    });
    $pr->update(['total_estimated_cost' => $total]);
    $prResult = ['request_code' => $pr->request_code, 'total_estimated_cost' => (float) $total, 'updated_items' => $updatedItems];
} else {
    $prResult = ['error' => 'PR-AI-36 not found'];
}

return ['roles' => $roleResults, 'pr' => $prResult];
