next_qual_user_level)) {
return self::renderQualifiedBadge($source);
}
// Prüfe ob User den Level erreichen könnte, aber noch nicht qualifiziert ist (gelb)
if (!empty($source->next_can_user_level)) {
return self::renderCanReachBadge($source);
}
// Kein nächster Level verfügbar (rot)
return self::renderNoLevelBadge();
}
/**
* Rendert Badge für qualifizierte User (grün)
*/
private static function renderQualifiedBadge($source): string
{
$level = $source->next_qual_user_level;
$ku = formatNumber($source->sales_volume_points_KP_sum ?? 0, 0);
$ku_required = formatNumber($level['qual_kp'] ?? 0, 0);
$tp = formatNumber($source->payline_points_qual_kp ?? 0, 0);
$tp_required = formatNumber($level['qual_pp'] ?? 0, 0);
$levelName = TranslationHelper::transUserLevelName($level['name'] ?? 'Unbekannt');
return '
' . e($levelName) . '
KU: ' . $ku . '/' . $ku_required . ' | TP: ' . $tp . '/' . $tp_required . '
';
}
/**
* Rendert Badge für User die den Level erreichen könnten (gelb)
*/
private static function renderCanReachBadge($source): string
{
$level = $source->next_can_user_level;
$ku = formatNumber($source->sales_volume_points_KP_sum ?? 0, 0);
$ku_required = formatNumber($level['qual_kp'] ?? 0, 0);
$tp = formatNumber($source->payline_points_qual_kp ?? 0, 0);
$tp_required = formatNumber($level['qual_pp'] ?? 0, 0);
$levelName = TranslationHelper::transUserLevelName($level['name'] ?? 'Unbekannt');
return '
' . e($levelName) . '
KU: ' . $ku . '/' . $ku_required . ' | TP: ' . $tp . '/' . $tp_required . '
';
}
/**
* Rendert Badge wenn kein nächster Level verfügbar ist (rot)
*/
private static function renderNoLevelBadge(): string
{
return '
';
}
/**
* Fallback-Badge bei Fehlern oder fehlenden Daten
*/
public static function renderErrorBadge(string $message = 'Fehler bei der Berechnung'): string
{
return '
Fehler
';
}
/**
* Badge für fehlende Daten
*/
public static function renderNoDataBadge(): string
{
return '
Keine Daten
';
}
}