Ressourcen bei Kunden&Lizenzen ist richtig
Dieser Commit ist enthalten in:
@@ -2351,7 +2351,17 @@ def customers_licenses():
|
|||||||
l.ipv4_count,
|
l.ipv4_count,
|
||||||
l.phone_count,
|
l.phone_count,
|
||||||
l.device_limit,
|
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
|
FROM licenses l
|
||||||
WHERE l.customer_id = %s
|
WHERE l.customer_id = %s
|
||||||
ORDER BY l.created_at DESC, l.id DESC
|
ORDER BY l.created_at DESC, l.id DESC
|
||||||
@@ -2394,7 +2404,17 @@ def api_customer_licenses(customer_id):
|
|||||||
l.ipv4_count,
|
l.ipv4_count,
|
||||||
l.phone_count,
|
l.phone_count,
|
||||||
l.device_limit,
|
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
|
FROM licenses l
|
||||||
WHERE l.customer_id = %s
|
WHERE l.customer_id = %s
|
||||||
ORDER BY l.created_at DESC, l.id DESC
|
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 '',
|
'valid_until': row[4].strftime('%d.%m.%Y') if row[4] else '',
|
||||||
'is_active': row[5],
|
'is_active': row[5],
|
||||||
'status': row[6],
|
'status': row[6],
|
||||||
'domain_count': row[7],
|
'domain_count': row[7], # limit
|
||||||
'ipv4_count': row[8],
|
'ipv4_count': row[8], # limit
|
||||||
'phone_count': row[9],
|
'phone_count': row[9], # limit
|
||||||
'device_limit': row[10],
|
'device_limit': row[10],
|
||||||
'active_devices': row[11],
|
'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
|
'resources': resources
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -157,22 +157,16 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="resource-info">
|
<div class="resource-info">
|
||||||
{% if license[7] > 0 %}
|
<div class="d-inline-block me-2" data-bs-toggle="tooltip" title="Domains">
|
||||||
<div class="d-inline-block me-2" data-bs-toggle="tooltip" title="Domains">
|
🌐 {{ license[12] }}
|
||||||
🌐 {{ license[7] }}
|
</div>
|
||||||
</div>
|
<div class="d-inline-block me-2" data-bs-toggle="tooltip" title="IPv4-Adressen">
|
||||||
{% endif %}
|
📡 {{ license[13] }}
|
||||||
{% if license[8] > 0 %}
|
</div>
|
||||||
<div class="d-inline-block me-2" data-bs-toggle="tooltip" title="IPv4-Adressen">
|
<div class="d-inline-block me-2" data-bs-toggle="tooltip" title="Telefonnummern">
|
||||||
📡 {{ license[8] }}
|
📱 {{ license[14] }}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
<div class="d-inline-block" data-bs-toggle="tooltip" title="Geräte (aktiv/limit)">
|
||||||
{% 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">
|
|
||||||
💻 {{ license[11] }}/{{ license[10] }}
|
💻 {{ license[11] }}/{{ license[10] }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -434,36 +428,37 @@ function updateLicenseView(customerId, licenses) {
|
|||||||
|
|
||||||
// Erstelle Ressourcen-HTML mit Details
|
// Erstelle Ressourcen-HTML mit Details
|
||||||
let resourcesHtml = '';
|
let resourcesHtml = '';
|
||||||
if (license.resources) {
|
const actualDomainCount = license.actual_domain_count || 0;
|
||||||
if (license.domain_count > 0 && license.resources.domains) {
|
const actualIpv4Count = license.actual_ipv4_count || 0;
|
||||||
resourcesHtml += `<div class="resource-group mb-1">
|
const actualPhoneCount = license.actual_phone_count || 0;
|
||||||
<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>`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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">
|
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>`;
|
</div>`;
|
||||||
|
|
||||||
html += `
|
html += `
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren