Ressourcen bei Kunden&Lizenzen ist richtig
Dieser Commit ist enthalten in:
@@ -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
|
||||
})
|
||||
|
||||
|
||||
@@ -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 += `
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren