Ressourcen bei Kunden&Lizenzen ist richtig

Dieser Commit ist enthalten in:
2025-06-15 21:39:20 +02:00
Ursprung a878d9b29c
Commit df60ce6d18
2 geänderte Dateien mit 67 neuen und 49 gelöschten Zeilen

Datei anzeigen

@@ -2351,7 +2351,17 @@ def customers_licenses():
l.ipv4_count,
l.phone_count,
l.device_limit,
(SELECT COUNT(*) FROM device_registrations WHERE license_id = l.id AND is_active = TRUE) as active_devices
(SELECT COUNT(*) FROM device_registrations WHERE license_id = l.id AND is_active = TRUE) as active_devices,
-- Actual resource counts
(SELECT COUNT(*) FROM license_resources lr
JOIN resource_pools rp ON lr.resource_id = rp.id
WHERE lr.license_id = l.id AND lr.is_active = true AND rp.resource_type = 'domain') as actual_domain_count,
(SELECT COUNT(*) FROM license_resources lr
JOIN resource_pools rp ON lr.resource_id = rp.id
WHERE lr.license_id = l.id AND lr.is_active = true AND rp.resource_type = 'ipv4') as actual_ipv4_count,
(SELECT COUNT(*) FROM license_resources lr
JOIN resource_pools rp ON lr.resource_id = rp.id
WHERE lr.license_id = l.id AND lr.is_active = true AND rp.resource_type = 'phone') as actual_phone_count
FROM licenses l
WHERE l.customer_id = %s
ORDER BY l.created_at DESC, l.id DESC
@@ -2394,7 +2404,17 @@ def api_customer_licenses(customer_id):
l.ipv4_count,
l.phone_count,
l.device_limit,
(SELECT COUNT(*) FROM device_registrations WHERE license_id = l.id AND is_active = TRUE) as active_devices
(SELECT COUNT(*) FROM device_registrations WHERE license_id = l.id AND is_active = TRUE) as active_devices,
-- Actual resource counts
(SELECT COUNT(*) FROM license_resources lr
JOIN resource_pools rp ON lr.resource_id = rp.id
WHERE lr.license_id = l.id AND lr.is_active = true AND rp.resource_type = 'domain') as actual_domain_count,
(SELECT COUNT(*) FROM license_resources lr
JOIN resource_pools rp ON lr.resource_id = rp.id
WHERE lr.license_id = l.id AND lr.is_active = true AND rp.resource_type = 'ipv4') as actual_ipv4_count,
(SELECT COUNT(*) FROM license_resources lr
JOIN resource_pools rp ON lr.resource_id = rp.id
WHERE lr.license_id = l.id AND lr.is_active = true AND rp.resource_type = 'phone') as actual_phone_count
FROM licenses l
WHERE l.customer_id = %s
ORDER BY l.created_at DESC, l.id DESC
@@ -2441,11 +2461,14 @@ def api_customer_licenses(customer_id):
'valid_until': row[4].strftime('%d.%m.%Y') if row[4] else '',
'is_active': row[5],
'status': row[6],
'domain_count': row[7],
'ipv4_count': row[8],
'phone_count': row[9],
'domain_count': row[7], # limit
'ipv4_count': row[8], # limit
'phone_count': row[9], # limit
'device_limit': row[10],
'active_devices': row[11],
'actual_domain_count': row[12], # actual count
'actual_ipv4_count': row[13], # actual count
'actual_phone_count': row[14], # actual count
'resources': resources
})

Datei anzeigen

@@ -157,22 +157,16 @@
</td>
<td>
<div class="resource-info">
{% if license[7] > 0 %}
<div class="d-inline-block me-2" data-bs-toggle="tooltip" title="Domains">
🌐 {{ license[7] }}
</div>
{% endif %}
{% if license[8] > 0 %}
<div class="d-inline-block me-2" data-bs-toggle="tooltip" title="IPv4-Adressen">
📡 {{ license[8] }}
</div>
{% endif %}
{% if license[9] > 0 %}
<div class="d-inline-block me-2" data-bs-toggle="tooltip" title="Telefonnummern">
📱 {{ license[9] }}
</div>
{% endif %}
<div class="d-inline-block" data-bs-toggle="tooltip" title="Geräte">
<div class="d-inline-block me-2" data-bs-toggle="tooltip" title="Domains">
🌐 {{ license[12] }}
</div>
<div class="d-inline-block me-2" data-bs-toggle="tooltip" title="IPv4-Adressen">
📡 {{ license[13] }}
</div>
<div class="d-inline-block me-2" data-bs-toggle="tooltip" title="Telefonnummern">
📱 {{ license[14] }}
</div>
<div class="d-inline-block" data-bs-toggle="tooltip" title="Geräte (aktiv/limit)">
💻 {{ license[11] }}/{{ license[10] }}
</div>
</div>
@@ -434,36 +428,37 @@ function updateLicenseView(customerId, licenses) {
// Erstelle Ressourcen-HTML mit Details
let resourcesHtml = '';
if (license.resources) {
if (license.domain_count > 0 && license.resources.domains) {
resourcesHtml += `<div class="resource-group mb-1">
<span class="resource-icon" data-bs-toggle="tooltip" title="Domains">🌐 ${license.domain_count}</span>
<button class="btn btn-sm btn-link p-0 ms-1" onclick="showResourceDetails(${license.id}, 'domain')">
<i class="bi bi-info-circle"></i>
</button>
</div>`;
}
if (license.ipv4_count > 0 && license.resources.ipv4s) {
resourcesHtml += `<div class="resource-group mb-1">
<span class="resource-icon" data-bs-toggle="tooltip" title="IPv4-Adressen">📡 ${license.ipv4_count}</span>
<button class="btn btn-sm btn-link p-0 ms-1" onclick="showResourceDetails(${license.id}, 'ipv4')">
<i class="bi bi-info-circle"></i>
</button>
</div>`;
}
if (license.phone_count > 0 && license.resources.phones) {
resourcesHtml += `<div class="resource-group mb-1">
<span class="resource-icon" data-bs-toggle="tooltip" title="Telefonnummern">📱 ${license.phone_count}</span>
<button class="btn btn-sm btn-link p-0 ms-1" onclick="showResourceDetails(${license.id}, 'phone')">
<i class="bi bi-info-circle"></i>
</button>
</div>`;
}
}
const actualDomainCount = license.actual_domain_count || 0;
const actualIpv4Count = license.actual_ipv4_count || 0;
const actualPhoneCount = license.actual_phone_count || 0;
// Geräte-Anzeige hinzufügen
// Domains - immer anzeigen
resourcesHtml += `<div class="resource-group mb-1">
<span class="resource-icon" data-bs-toggle="tooltip" title="Domains">🌐 ${actualDomainCount}</span>
${actualDomainCount > 0 ? `<button class="btn btn-sm btn-link p-0 ms-1" onclick="showResourceDetails(${license.id}, 'domain')">
<i class="bi bi-info-circle"></i>
</button>` : ''}
</div>`;
// IPv4 - immer anzeigen
resourcesHtml += `<div class="resource-group mb-1">
<span class="resource-icon" data-bs-toggle="tooltip" title="IPv4-Adressen">📡 ${actualIpv4Count}</span>
${actualIpv4Count > 0 ? `<button class="btn btn-sm btn-link p-0 ms-1" onclick="showResourceDetails(${license.id}, 'ipv4')">
<i class="bi bi-info-circle"></i>
</button>` : ''}
</div>`;
// Telefonnummern - immer anzeigen
resourcesHtml += `<div class="resource-group mb-1">
<span class="resource-icon" data-bs-toggle="tooltip" title="Telefonnummern">📱 ${actualPhoneCount}</span>
${actualPhoneCount > 0 ? `<button class="btn btn-sm btn-link p-0 ms-1" onclick="showResourceDetails(${license.id}, 'phone')">
<i class="bi bi-info-circle"></i>
</button>` : ''}
</div>`;
// Geräte-Anzeige hinzufügen (mit Limit, da Geräte limitiert sind)
resourcesHtml += `<div class="resource-group">
<span class="resource-icon" data-bs-toggle="tooltip" title="Geräte">💻 ${license.active_devices}/${license.device_limit}</span>
<span class="resource-icon" data-bs-toggle="tooltip" title="Geräte (aktiv/limit)">💻 ${license.active_devices}/${license.device_limit}</span>
</div>`;
html += `